спасибо
Поставить флаг после исполнения сделки. По условию флага открывать сделку. Прописать условия возврата флага в исходное положение.
int Flag=0;
if(ордер открылся)флаг=1;
if (н-р,новый бар) флаг=0;
можно и так поступить...
res=-1;
res=OrderSend();
if(res>0) flag=OrderOpenTime();
if(Time[0]<=flag) не открывать ордер...
Вышеописанные способы вполне рабочие, но при выключении электропитания они не сработают. Например, отрубился дома свет - комп выключился. Через три минуты свет включился. Мы запускаем комп и терминал. Советник снова ставит ордер, а ставить-то не должен. Поэтому есть способ лучше. Проверяем наличие торгового сигнала. Если сигнал есть, то устанавливаем флаг наличия сигнала. Затем, если ордеров рыночных нет, то проходим по всем ордерам истории. Если в ней есть ордер, время открытия которого больше или равно Time[0], то снимаем флаг наличия сигнала.
P.S.
Не нужно говорить о источниках бесперебойного питания - простая ситуация человек работает на Н1 или Н4. UPS даёт возможность поработать ещё минут 15. Но не час и не 4 часа.
P.P.S.
Можно так же задействовать перемнные глобального уровня и в них хранить флаги - тогда не придётся ходить по истории ордеров.
Вышеописанные способы вполне рабочие, но при выключении электропитания они не сработают. Например, отрубился дома свет - комп выключился. Через три минуты свет включился. Мы запускаем комп и терминал. Советник снова ставит ордер, а ставить-то не должен. Поэтому есть способ лучше. Проверяем наличие торгового сигнала. Если сигнал есть, то устанавливаем флаг наличия сигнала. Затем, если ордеров рыночных нет, то проходим по всем ордерам истории. Если в ней есть ордер, время открытия которого больше или равно Time[0], то снимаем флаг наличия сигнала.
P.S.
Не нужно говорить о источниках бесперебойного питания - простая ситуация человек работает на Н1 или Н4. UPS даёт возможность поработать ещё минут 15. Но не час и не 4 часа.
P.P.S.
Можно так же задействовать перемнные глобального уровня и в них хранить флаги - тогда не придётся ходить по истории ордеров.
что-бы максимально обезопасить себя от подобного рода проблем достаточно грамотно подойти к организации резервного питания и резервного (лучше 3) канала интернет...
а вообще, от всего не застрахуешься... :)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
всем доброго времени суток))) у меня снова вопрос к опытным программистам
пишу советник, который открывает позиции при пересечении индикаторных линий.
допустим на нулевом баре открывается ордер. на этом же баре срабатывает стоп-приказ. торговые условия на открытие ордера до сих пор остаются значимыми, так как для их расчёта советник использует значения индикаторов на нулевом и первом барах. соответственно советник открывает ещё один ордер, и в зависимости от таймфрейма может сделать это несколько раз.
вопрос: как прописать в код условие, чтобы советник открывал только ОДИН ордер при ПЕРВОМ формировании торговых критериев, и даже в случае, если критерии на открытие ордера до сих пор в силе, больше ордеров не открывал