po_saa: а вообще я так и не пойму, ПОЧЕМУ НЕ ЗАРЫВАЕТСЯ ОРДЕР?!!
К большому сожалению нет отладчика. Чтобы ТОЧНО знать почему не закрывается ордер, выведите значения всех переменных, от которых зависит событие, через ф-цию Print в журнал. И потом сравните значения этих переменных. Скорее всего что-то где-то не так.
а вообще я так и не пойму, ПОЧЕМУ НЕ ЗАРЫВАЕТСЯ ОРДЕР?!!
К большому сожалению нет отладчика. Чтобы ТОЧНО знать почему
не закрывается ордер, выведите значения всех переменных, от
которых зависит событие, через ф-цию Print в журнал. И потом сравните
значения этих переменных. Скорее всего что-то где-то не так.
в том и дело, что ТАК... и к тому же не только у меня - ранее кто-то
запускал эту тему, но ответа так и не получил...
а состояние я пигу в файл с именем инструмента и довольно подробно
так вот ТАМ записано (я LOG отсылал) что ОРДЕР закрыт(!!!), а сам тестер
(на графике) продолжает считать его открытым!
externdoubleiClvlBUY =-100; //зона покупки CCIexterndoubleiClvlSELL =100; //зона продажи CCI
if(iCTek>iClvlBUY && iCPrev<=iClvlBUY){//сигнал к покупке от CCIbCSignalBUY=true;
}
Выше видим, что сигнал к покупке когда линия индикатора пересекает горизонтальный уровень -100 снизу вверх.
if(iCTek<=iClvlBUY && iCPrev>iClvlBUY){//сигнал к закрытию открытой позиции на покупкуbCSignalBUYClose=true;
bCSignalBUY=false;
FileWrite(fhandle,"Сигнал ЗАКРЫТЬ ПОКУПКУ");
DrawArrow(SYMBOL_ARROWDOWN);
}
Сигнал к закрытию позиции на покупку пересечение той же линии сверху вниз.
//сигнал к закрытию открытой позиции на покупку - когда имея сигнал на ПОКУПКУ, линия возвращается к уровню покупки "-100" if(iCTek<=iClvlBUY && iCPrev>iClvlBUY)
//сигнал к закрытию открытой позиции на продажу - когда имея сигнал на ПРОДАЖУ, линия возвращается к уровню продажи "100" if(iCTek>=iClvlSELL && iCPrev<iClvlSELL)
ох как я уже замучался вставлят тот же код .. опять приведу его в пример ведь на нем основано много элементарных функций.
//+------------------------------------------------------------------+//| Работа функций эксперта |//+------------------------------------------------------------------+intstart(){//+------------------------------------------------------------------+SignalBuyClose = False; // при каждом тике они будут устанавливатся в это состояниеSignalBuyOpen = False;
SignalSellClose = False;
SignalSellOpen = False;
if(тут мы сравниваем что либо чтобы оно было ложь или правда){// переводим флаги в то состояние которое нам нада к примеру закрывать ордера если выполненно условиевышеSignalBuyClose=true;
}// Обьявляем переменные и присваиваем им значенияtotal=OrdersTotal(); // Присваиваем total число открытых ордеров//+------------------------------------------------------------------+//| Закрытие ордеров |//+------------------------------------------------------------------+// Проверяем есть ли ордер?if(total>0)// Если есть ордера.{// Выполнение цикла, если есть один или более открытых ордеров и перебираем их.for(i=total; i>=0; i--){// Проверяем среди открытых ордеров кроме отложенных, закрытых или удаленныхif(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true){// Проверяем это орбер BUYif(OrderType()==OP_BUY && SignalBuyClose)// можно тут вписать свое сравнение :){// Закрываем ордер BUYOrderClose(OrderTicket(),OrderLots(),Bid,0,White);
continue;
}// Проверяем это орбер SELLif(OrderType()==OP_SELL && SignalSellClose)// можно тут вписать свое сравнение :){// Закрываем ордер SELLOrderClose(OrderTicket(),OrderLots(),Ask,0,White);
continue;
}}}}//+------------------------------------------------------------------+//| Открытие ордеров |//+------------------------------------------------------------------+else// Если нет ордера.{//+------------------------------------------------------------------+// Проверяем образован ли сигнал на покупку Buyif(SignalBuyOpen){// Открываем ордер Buyticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-TrailingStop*Point,Ask+TakeProfit*Point,WindowExpertName(),order_id,0,Blue);
// Проверяем принять ли ордерif(ticket>0){// Ордер принят, печатаем его в журналеif(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("SELL order opened : ",OrderOpenPrice());
// Ордер отклонен, печатаем причину в журнале}elsePrint("Error opening SELL order : ",GetLastError());
// Все удачно открыто ждем некоторое время и выходимreturn(0);
}//+------------------------------------------------------------------+// Проверяем образован ли сигнал на покупку Buyif(SignalSellOpen){ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+TrailingStop*Point,Ask-TakeProfit*Point,WindowExpertName(),order_id,0,Red);
// Проверяем принять ли ордерif(ticket>0){// Ордер принят, печатаем его в журналеif(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("SELL order opened : ",OrderOpenPrice());
// Ордер отклонен, печатаем причину в журнале}elsePrint("Error opening SELL order : ",GetLastError());
// Все удачно открыто ждем некоторое время и выходимreturn(0);
}//+------------------------------------------------------------------+}}return(0);
//+------------------------------------------------------------------+
как видно из данного примера.. т просто вставь в самом начале свое проверку.. типа если твой сигнал поступил и равен 100 и более то это истина и формируй сигнал на закрытие или открытие. после произойдет сперва закрытие так как оно быстрей всего проходит и тока если нет закрытия то он будет открывать. если есть сигнал на открытие.
Ты думаешь они более полгода мучались и ждали, когда ты выложишь свой безграмотный код? :-)
Я не понимаю, зачем ты вытащил из нафталина старую тему?
Де ты видел безграмотный код ?? ты про себя имел в виду наверное.. что за пол года даже незапомнил функцию "if" ну так я рад за тебя. ))) нафталиный ты наш )))
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
а вообще я так и не пойму, ПОЧЕМУ НЕ ЗАРЫВАЕТСЯ ОРДЕР?!!
К большому сожалению нет отладчика. Чтобы ТОЧНО знать почему не закрывается ордер, выведите значения всех переменных, от которых зависит событие, через ф-цию Print в журнал. И потом сравните значения этих переменных. Скорее всего что-то где-то не так.
а вообще я так и не пойму, ПОЧЕМУ НЕ ЗАРЫВАЕТСЯ ОРДЕР?!!
К большому сожалению нет отладчика. Чтобы ТОЧНО знать почему
не закрывается ордер, выведите значения всех переменных, от
которых зависит событие, через ф-цию Print в журнал. И потом сравните
значения этих переменных. Скорее всего что-то где-то не так.
в том и дело, что ТАК... и к тому же не только у меня - ранее кто-то запускал эту тему, но ответа так и не получил...
а состояние я пигу в файл с именем инструмента и довольно подробно
так вот ТАМ записано (я LOG отсылал) что ОРДЕР закрыт(!!!), а сам тестер (на графике) продолжает считать его открытым!
Из эксперта:
Выше видим, что сигнал к покупке когда линия индикатора пересекает горизонтальный уровень -100 снизу вверх.
Сигнал к закрытию позиции на покупку пересечение той же линии сверху вниз.
Логика ДЕЙСТВИТЕЛЬНО такая?
//сигнал к закрытию открытой позиции на покупку - когда имея сигнал на ПОКУПКУ, линия возвращается к уровню покупки "-100"
if(iCTek<=iClvlBUY && iCPrev>iClvlBUY)
//сигнал к закрытию открытой позиции на продажу - когда имея сигнал на ПРОДАЖУ, линия возвращается к уровню продажи "100"
if(iCTek>=iClvlSELL && iCPrev<iClvlSELL)
ох как я уже замучался вставлят тот же код .. опять приведу его в пример ведь на нем основано много элементарных функций.
как видно из данного примера.. т просто вставь в самом начале свое проверку.. типа если твой сигнал поступил и равен 100 и более то это истина и формируй сигнал на закрытие или открытие. после произойдет сперва закрытие так как оно быстрей всего проходит и тока если нет закрытия то он будет открывать. если есть сигнал на открытие.
To Nadejnie
Ты думаешь они более полгода мучались и ждали, когда ты выложишь свой безграмотный код? :-)
Я не понимаю, зачем ты вытащил из нафталина старую тему?
To Nadejnie
Ты думаешь они более полгода мучались и ждали, когда ты выложишь свой безграмотный код? :-)
Я не понимаю, зачем ты вытащил из нафталина старую тему?
Де ты видел безграмотный код ?? ты про себя имел в виду наверное.. что за пол года даже незапомнил функцию "if" ну так я рад за тебя. ))) нафталиный ты наш )))