Dukascopy Support Board http://www.dukascopy.com/swiss/english/forex/jforex/forum/ |
|
подскажите решение http://www.dukascopy.com/swiss/english/forex/jforex/forum/viewtopic.php?f=175&t=56480 |
Page 1 of 1 |
Author: | Nikolas1986 [ Thu 03 May, 2018, 13:02 ] | ||||
Post subject: | подскажите решение | ||||
пример проблемного блока, который работает на историческом тестере но не работает в реальном времени ( на демо). по идеи он должен ограничивать колличество одновременно открытых позиций , ( что бы стратегия не строчила их как автомат) не более 2 открытых позиций в текущий момент, одна шортовая и одна лонговая позиция. Т.е., если у нас уже есть одна открытая шортовая сделка, то этот группа блоков должна разрешить открыть только одну и только лонговую позицию ( и наоборот). если же у нас уже есть 2 (шорт+ лонг) открытые сделки, то открытие новых не возможно до тех пор пока одна из открытых не будет закрыта. В реале же , это комбинаця блоков может открыть и 3 и более сделок. Проблема как мне видиться кроется в том, что когда ты запускаешь его на тестере то открытие и закрытие сделок происходит виртуально и мгновенно, поэтому после поступления тика который устраивает всем критериям стратегии, происходит открытие сделки (мгновенно), после этого в стратегию поступают новые данные и т.д... Однако в режиме реального времени после срабатывания стратегии происходит отправка ордера на покупку или продажу, ордер отправляется на сервер и там ждет своего исполнения, после чего информация об открытой сделке возвращается обратно к нам и только потом может быть считана и принята во внимание стратегией. На демо счтете это время может быть по моим наблюдения !заметным!, как мне кажется именно это и происходит в первых блоках "if" где сравнивается колличество открытых позиций с нулем, и если оно равно 0, то это позволяет безприпятственно пройти дальше к блоку "openmarket". ОДНАКО с момента отправки стратегией ордера на покупку или продажу и до открытия ордера, в стратегию поступают другие тики. а т.к. "positionviewer" еще не видит открытых позиций, то этот же блок "if" опять решает что колличество открытых позиций по прежнему равно 0, и опять разрешает "openmarket"у отправить запрос на новый ордер. в теории колличество таких открытых ордеров может быть равно колличеству тиков которые поступят в стратегию в период с момента отправки первого ордера и до получения иноформации о том что ордер открыт. на моей практике это обычно бывало 2-3-4 лишних ордера. После того как инфа об открытии ордера вернется, и будет считана,этот набор блоков начинает работать так как нужно. надеюсь вы уловили суть. Подскажите решение плиз, я много перепробовал вариантов но пока безрезультатно. в идеале как мне видется нужно написать какой то костыль который после каждого отправленного ордера будет какое то время выжидать (5-10сек). т.к. в режиме реального времени но только на реальном счете, эти задержки (по открытию позиции) еще длиннее!! не исключаю, что я в чем то ошибся, тогда плиз укажите мне на ошибку. БОЛЬШОЕ СПАСИБО заранее! P.S. Обратите внимание , что, при старте стратегии нужно выставить параметр "start_strategy_time" на 1-2 минуты позже чем текущее время, для того что бы стартегия запустилась, в противном случаи " last_tick_bid" будет сравниваться с еще не поступившим значением "historical_candle- candle_open", вызывая тем самым ошибку и останавливая работу стратегии"
|
Author: | vadim_berezhnoj [ Mon 14 May, 2018, 15:02 ] | ||
Post subject: | Re: подскажите решение | ||
Добрый день. Скоректированная логика в прикрепленном файле.
|
Page 1 of 1 |