Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Не можешь найти ответ на вопрос? Воспользуйся поиском!
Nicolai Cichiniov
148
Nicolai Cichiniov 2014.02.04 19:52  
vlad6k:

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


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

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

Алексей Тарабанов
7271
Алексей Тарабанов 2014.02.04 20:20  
cichiniov:


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

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

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


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

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

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

Vladimir Skorina
498
Vladimir Skorina 2014.02.05 06:26  
cichiniov:


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

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


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

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


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 2014.02.27 11:40  
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
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий