Скачать MetaTrader 5

Подскажите, как сформулировать часть алгоритма в советнике. За помощь разработаю сайт!!! - страница 2

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Nicolai Cichiniov
162
Nicolai Cichiniov  
vlad6k:

я думаю проще .. или запись в файл (переменной) .. или на графике метку создавать со значением переменной .. тогда не промахнешься .. если ордерами следить .. надо от конкретного случая смотреть.. один закрылся второй нет.. я думаю файл было б идеально..


Как думаешь, эту проблему можно решить?

"вариант уважаемого r772ra показал себя замечательно! Осталось решить только одну задачу. При отсутствии ордеров советник открывается не по открытию, а в момент включения..."

Алексей Тарабанов
7330
Алексей Тарабанов  
cichiniov:


Как думаешь, эту проблему можно решить?...

... Осталось решить только одну задачу. При отсутствии ордеров советник открывается не по открытию, а в момент включения..."

Николай, проще рассказать, где берешь траву, имхенько.
Roman Kutemov
1861
Roman Kutemov  
cichiniov:


При отсутствии ордеров советник открывается не по открытию, а в момент включения..."

сделайте проверку на открытие новой свечи.

тогда и советник проще будет оптимизировать по ценам открытия.

Vladimir Skorina
538
Vladimir Skorina  
cichiniov:


Как думаешь, эту проблему можно решить?

"вариант уважаемого r772ra показал себя замечательно! Осталось решить только одну задачу. При отсутствии ордеров советник открывается не по открытию, а в момент включения..."


ну незнаю.. записал в txt 1 или 0 и все.. открыл файл считал true или false .. как удобней ... интересно как вы говорите.. все условия учли? а сколько еще будет? и смотря как работает советник. . если примитив то наверно и ваш вариант подойдет.. а если будете писать строчек 3000 то думаю потом можно и прозевать ..
Nicolai Cichiniov
162
Nicolai Cichiniov  
Я просто ищу совета у знающих! Я просто уверен, что такой каскад проблем, которые мы вместе увидели, возникает очень часть. Так почему бы не решить их вместе! Ну, или давайте вместе искать, где купить траву, раз ЭМКЬЮЭлем заниматься не охота!
Sergey Gustaytis
503
Sergey Gustaytis  

Да, просто подождите новый бар. Тем более что наверняка именно на открытии бара надо сделать целый ряд действий


datetime t0=0;
bool fs=false;
void OnTick() 
{
  if (t0!=Time[0]) // new bar open / Time[0] for current period or iTime(Symbol(), period, 0) for any  
  {
     t0=Time[0];
     if(!fs) { fs=true; return; }
     
     // любые действия которые надо сделать именно на 1 тике  нового бара
  }
Sergey Gustaytis
503
Sergey Gustaytis  
cichiniov:

Этот вариант показал себя замечательно! Осталось решить только одну задачу. При отсутствии ордеров советник открывается не по открытию, а в момент включения...

Мда, Игорь конечно молодец но как истинный программист пишет не задумываясь о ресурсах

Вот так гораздо короче будет

bool LastClosedOrderTime(int &oot, int &oct)
{     
   int ot,oht=OrdersHistoryTotal();
   if (oht<1) return(0);
   for(int j=oht-1; j>=0; j--)
   {
      if (OrderSelect(j,SELECT_BY_POS,MODE_HISTORY))
      {
         ot=OrderType()+1; if (ot>2) continue;
         // last closed position
         oot=OrderOpenTime();
         oct=OrderCloseTime();
//Print("Last Closed ",OrderSymbol(),"  Ticket #",OrderTicket()," OpenTime ",TimeToStr(oot,TIME_DATE|TIME_MINUTES|TIME_SECONDS)," CloseTime ",TimeToStr(oct,TIME_DATE|TIME_MINUTES|TIME_SECONDS));         
         return(1);
      }
   }
   return(0);
}  

Это всего один цикл, последний открытый ордер в истории

oht-1

Ну а дальше масса вариантов, например

int oot=0,oct=0;

LastClosedOrderTime(int &oot, int &oct);
if(oot>0 && oot<Time[0])  //если на 0 баре не открывались
   OrderSend();
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий