OnTick открытие позиции каждый тик

 
Добрый день!

Прошу сильно не ругаться ибо изучаю 2-ой день!

Есть условия на откртие и закртие позиций, которые исполняются в 

void OnTick()
 {
   CheckForOpen();
   CheckForClose();
 }

Дело в том, что условие на открытие в рамках одной свечи открывает и закрывает муллион раз))))  (оно и опнтяно, тк условие верно на каждом моменте тика)

Вопрос:
Как правилльно прописать, что бы условия на открытие позиции проверялось (или исполнялось) только тогда, когда закрыта предыдущая сделка?



 
Str1987:
Добрый день!

Прошу сильно не ругаться ибо изучаю 2-ой день!

Есть условия на откртие и закртие позиций, которые исполняются в 

void OnTick()
 {
   CheckForOpen();
   CheckForClose();
 }

Дело в том, что условие на открытие в рамках одной свечи открывает и закрывает муллион раз))))  (оно и опнтяно, тк условие верно на каждом моменте тика)

Вопрос:
Как правилльно прописать, что бы условия на открытие позиции проверялось (или исполнялось) только тогда, когда закрыта предыдущая сделка?


Вам необходимо проверить, есть ли открытая позиция в терминале (Магик, символ, тип)

Самый простой способ это PositionsTotal() Далее, если нужно перебирать по определенному символу или магику или типу, то считайте через цикл 

bool EPs(string sSymbol,int type=-1,ulong magic=-1)
  {
   int  PosTotal=PositionsTotal();
   for(int i=PosTotal-1;i>=0;i--)
     {

      if((PositionSelectByTicket(PositionGetTicket(i))==true || (!PositionSelectByTicket(PositionGetTicket(i)) && PositionSelect(sSymbol)))
         && (PositionGetSymbol(i)==sSymbol || sSymbol=="")
         && (PositionGetInteger(POSITION_TYPE)==type || type==-1)
         && (PositionGetInteger(POSITION_MAGIC)==magic || magic==-1))
        {

         return(true);
        }
     }
   return(false);

  }
 
Str1987:
Добрый день!

Прошу сильно не ругаться ибо изучаю 2-ой день!

Есть условия на откртие и закртие позиций, которые исполняются в 

void OnTick()
 {
   CheckForOpen();
   CheckForClose();
 }

Дело в том, что условие на открытие в рамках одной свечи открывает и закрывает муллион раз))))  (оно и опнтяно, тк условие верно на каждом моменте тика)

Вопрос:
Как правилльно прописать, что бы условия на открытие позиции проверялось (или исполнялось) только тогда, когда закрыта предыдущая сделка?



Нужно посчитать количество позиций, если позиций нет то открываться.

 
Evgeny Belyaev:

Нужно посчитать количество позиций, если позиций нет то открываться.

А как это в коде реализовать?




а может так?


void OnTick()
 {

if(OrdersTotal() >=1)  CheckForClose();
else CheckForOpen();
}

 
Str1987:
А как это в коде реализовать?




а может так?


void OnTick()
 {

if(OrdersTotal() >=1)  CheckForClose();
else CheckForOpen();
}

MT4?

 
Evgeny Belyaev:

MT4?

Да

 
Str1987:

Да

тогда приведенный вами код годится

 
Alexey Volchanskiy:

тогда приведенный вами код годитс

Ога работает )))

Причина обращения: