Перейти к содержанию
Форекс Форум трейдеров Академии «MasterForex-V»
Внимание: для входа на форум используйте e-mail вместо ника, пароль остаётся прежним. Если вы забыли свой e-mail пишите в техподдержку ( MFadmin@bk.ru )

Antti

Пользователи ST test (off)
  • Постов

    14
  • Зарегистрирован

  • Посещение

Весь контент Antti

  1. Возможен. Если не очень сложно, с этого момента поподробнее пожалуйста. Очень актуальный вопрос, что, где, куда нажать, чтобы увидеть сообщения Print'а...Очень хочется на выходных все оттестировать и с понедельника в бой....
  2. Да. проверил. мой косяк....Print очень помог. Очень жаль, что в MetaEditor'е нет отладчика, большой минус... А функция подсчета откр. ордеров работает, как часы, считает правильно, косяк обнаружил в логике своего кода. Очень тяжело (для новичка) кодить без отладчика, хорошо хоть Print есть... Кстати, а в тестере стратегий возможен вывод сообщений Print ? А то завтра суббота, котировки не идут, как тестить ? P.S. Большое спасибо за помощь !
  3. Нет, немного не так. if(условие) не заменить, по нему происходит открытие ордера, но вместо одного открывается двадцать, а мне нужно строго один. Ведь у меня задействована функция подсчета открытых ордеров, почему при удовлетворении условия открывается больше одного ордера, вот что мне никак не понятно...
  4. Здраствуйте! Прошу помощи в решении проблемы. Попробую описать: Есть функция, подсчитывающая ордера: int OrdersAll(int mag) { int kolvo=0; for (int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if((OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber() == mag ) kolvo++; } } return(kolvo); } Далее в процессе работы, если нет ни одного ордера по текущ. инструменту, при выполнении условия должен выставиться 1 ордер к примеру на покупку, написано так: if (OrdersAll(MAGICNO)==0) { if(условие) { op=Ask;if(SL>0){sl=Ask-SL*Point*mn;}if(TP>0){tp=Ask+TP*Point*mn;} err=OrderSend(Symbol(),OP_BUY,LotsOptimized(),NormalizeDouble(op,Digits),3,NormalizeDouble(sl,Digits), NormalizeDouble(tp,Digits),"",MAGICNO,0,Blue); if(err<0) { Print("OrderSend()- Ошибка OP_BUY. Ордер не принят. op "+op+" sl "+sl+" tp "+tp+" "+GetLastError());return(-1); } } } Вместо этого при открытии в терминале к примеру нескольких инструментов и запуске советника в каждом из них, код выше может открыть один ордер - это правильно, но в тоже время он может открыть 20-30 ордеров пока моржа не закончится, если условие продержиться несколько тиков. При работе одним инструментом такого замечено не было пока, но я совсем не уверен, что это не произойдет и на одном инструменте. Как мне исправить мой код, чтобы жестко было открытие не более одного ордера.
×
×
  • Создать...