[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 848

 

думаю из-за этого

while (att_to_modify_sell<=attempt_to_modify)
 
vasya_vasya:

думаю из-за этого

Спасибо, заметил и удалил сразу сообщение, но вы успели на него ответить :)

Всё-равно не нравится моя цикличность..

Задача после n-ного кол-ва неудачных попыток модифицировать ордер, закрывать его по рынку!

Покажите пожалуйста как красиво это сделать в коде.

Спасибо!

 
vasya_vasya:

думаю из-за этого

att_to_modify=2;
att_to_modify_sell=0;
            
Print("att_to_modify_sell="+att_to_modify_sell);
Print("Модификация SL, попытка установить новый СЛ, ord_open_sell="+ord_open_sell+" stop_TP="+stop_TP+" Старый СЛ= "+ord_sl+" Bid="+Bid+" ord_take_profit="+ord_take_profit+" Ask="+Ask);
Print("Модификация в цикле1");   
ticket=OrderModify(ticket_sell,0,NormalizeDouble((ord_open_sell-stop_TP*Point),Digits),NormalizeDouble(ord_take_profit,Digits),0,0); //первый перенос СЛ
  if(ticket<0)
  {               
    Print("OrderModify(SELLSTOP install first SL) failed with error #",GetLastError());
    att_to_modify_sell+=1;
    Sleep(3000);
    if (att_to_modify_sell>=attempt_to_modify /*&& Ask<(ord_open_sell-stop_TP*Point-p_TS_DIST*Point)*/)                     
    {
      OrderClose(ticket_sell,ord_lots,MarketInfo(Symbol(),MODE_ASK),3,Green);
    }
    if(ticket>=0)
    {
      att_to_modify_sell=attempt_to_modify+1;
      Print("Модификация прошла успешно");
    }  
    Print("att_to_modify_sell!!!="+att_to_modify_sell);           
  }

Вывод:

2010.09.14 16:46:04 2010.06.07 00:00 MМ1.20 EURUSD,M5: OrderModify error 130
2010.09.14 16:46:04 2010.06.07 00:00 MМ_1.20 EURUSD,M5: Модификация в цикле1
2010.09.14 16:46:04 2010.06.07 00:00 MМ_1.20 EURUSD,M5: Модификация SL, попытка установить новый СЛ, ord_open_sell=1.19799000 stop_TP=200 Старый СЛ= 1.20499000 Bid=1.19470000 ord_take_profit=1.19479000 Ask=1.19483000
2010.09.14 16:46:04 2010.06.07 00:00 MМ_1.20 EURUSD,M5: att_to_modify_sell=0


Была ошибка, так почему у меня не обрабатывается условие

if(ticket<0) ?????


и соответственно не выводятся принты..

Print("OrderModify(SELLSTOP install first SL) failed with error #",GetLastError());
Print("att_to_modify_sell!!!="+att_to_modify_sell); 


Кусок кода закрывает ордер по рынку после att_to_modify попыток!

Спасибо!

 
Возможно ли как то сделать чтобы советник сам себя отключил?
 
Elliotttrader:

Вывод:

2010.09.14 16:46:04 2010.06.07 00:00 MМ1.20 EURUSD,M5: OrderModify error 130
2010.09.14 16:46:04 2010.06.07 00:00 MМ_1.20 EURUSD,M5: Модификация в цикле1
2010.09.14 16:46:04 2010.06.07 00:00 MМ_1.20 EURUSD,M5: Модификация SL, попытка установить новый СЛ, ord_open_sell=1.19799000 stop_TP=200 Старый СЛ= 1.20499000 Bid=1.19470000 ord_take_profit=1.19479000 Ask=1.19483000
2010.09.14 16:46:04 2010.06.07 00:00 MМ_1.20 EURUSD,M5: att_to_modify_sell=0

Была ошибка, так почему у меня не обрабатывается условие

и соответственно не выводятся принты..

Кусок кода закрывает ордер по рынку после att_to_modify попыток!

Спасибо!


Ошибка 130 - неправильные стопы.

Проанализируйте 3-ий параметр в функции

ticket=OrderModify(ticket_sell,0,NormalizeDouble((ord_open_sell-stop_TP*Point),Digits),NormalizeDouble(ord_take_profit,Digits),0,0); //первый перенос СЛ

это же, как я понял, ордер sell, а стоп вы по цене опускаете

Может нужен "+" - ord_open_sell+stop_TP*Point

 
abolk:


Ошибка 130 - неправильные стопы.

Проанализируйте 3-ий параметр в функции

ticket=OrderModify(ticket_sell,0,NormalizeDouble((ord_open_sell-stop_TP*Point),Digits),NormalizeDouble(ord_take_profit,Digits),0,0); //первый перенос СЛ

это же, как я понял, ордер sell, а стоп вы по цене опускаете

Может нужен "+" - ord_open_sell+stop_TP*Point

Я не про эту ошибку спрашиваю. Я спрашиваю почему у меня не обрабатывается.
if(ticket<0)
Спасибо!
 
Elliotttrader:
Я не про эту ошибку спрашиваю. Я спрашиваю почему у меня не обрабатывается.
Спасибо!

Для начала выведите значение ticket принтом после модифай
 
abolk:

Для начала выведите значение ticket принтом после модифай


Господа, профессионалы, писал вопрос, но ответ на него ничего не изменил, проблема не ушла, поэтому повторюсь в надежде получить решение проблемы:

Пишу себе индикатор, надо около 2000 баров из истории, такой цикл:

for (int i=1; i<1900; i++)

перебирает только 1000 баров.

Пробую вывести переменную Bars, пишет, что ее значение 1000, хотя график и исторические данные выкачены до 2000 года.

Почему это происходит, что не так????

Подскажите, пожалуйста!!!!
 

 
abolk:

Для начала выведите значение ticket принтом после модифай

Укоротил до

               Print("Модификация SL, попытка установить новый СЛ, ord_open_sell="+ord_open_sell+" stop_TP="+stop_TP+" Старый СЛ= "+ord_sl+" Bid="+Bid+" ord_take_profit="+ord_take_profit+" Ask="+Ask);
               Print("Модификация в цикле1");             
               ticket=OrderModify(ticket_sell,0,NormalizeDouble((ord_open_sell-stop_TP*Point),Digits),NormalizeDouble(ord_take_profit,Digits),0,0); //первый перенос СЛ
               Print("ticket="+ticket);

               if(ticket<0){Print("OrderModify(SELLSTOP install first SL) failed with error #",GetLastError());}

               Print("Модификация закончена");


2010.09.14 20:35:26 2010.06.07 00:00 MМ_1.20 EURUSD,M5: Модификация закончена
2010.09.14 20:35:26 2010.06.07 00:00 MМ_1.20 EURUSD,M5: ticket=0
2010.09.14 20:35:26 2010.06.07 00:00 MМ_1.20 EURUSD,M5: OrderModify error 130
2010.09.14 20:35:26 2010.06.07 00:00 MМ_1.20 EURUSD,M5: Модификация в цикле1
2010.09.14 20:35:26 2010.06.07 00:00 MМ_1.20 EURUSD,M5: Модификация SL, попытка установить новый СЛ, ord_open_sell=1.19799000 stop_TP=200 Старый СЛ= 1.20499000 Bid=1.19470000 ord_take_profit=1.19479000 Ask=1.19483000

2010.09.14 20:35:26 2010.06.07 00:00 MМ_1.20 EURUSD,M5: att_to_modify_sell=0


Мужики, меня глючит.. Как при ошибке может

ticket
быть навен 0-лю?
 
Elliotttrader:

Укоротил до

2010.09.14 20:35:26 2010.06.07 00:00 MМ_1.20 EURUSD,M5: Модификация закончена
2010.09.14 20:35:26 2010.06.07 00:00 MМ_1.20 EURUSD,M5: ticket=0
2010.09.14 20:35:26 2010.06.07 00:00 MМ_1.20 EURUSD,M5: OrderModify error 130
2010.09.14 20:35:26 2010.06.07 00:00 MМ_1.20 EURUSD,M5: Модификация в цикле1
2010.09.14 20:35:26 2010.06.07 00:00 MМ_1.20 EURUSD,M5: Модификация SL, попытка установить новый СЛ, ord_open_sell=1.19799000 stop_TP=200 Старый СЛ= 1.20499000 Bid=1.19470000 ord_take_profit=1.19479000 Ask=1.19483000

2010.09.14 20:35:26 2010.06.07 00:00 MМ_1.20 EURUSD,M5: att_to_modify_sell=0

Мужики, меня глючит.. Как при ошибке может

быть навен 0-лю?

выведите принтом -- ticket_sell и покажите тип переменной ticket