Скачать MetaTrader 5

Помогите с кодом

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
traderEvgen
422
traderEvgen  

Такая проблема 

После пересечения скользящих средних нужно входить, но нужно игнорировать все следующие пересечения пока не закроется ордер.

 

int TimeBar;


if (TimeBar!=Time[0])
if( пересечение )
  {
    OpenOrders(OP_BUY);
    TimeBar=Time[0];  
  }
Vitalii Ananev
9019
Vitalii Ananev  
traderEvgen:

Такая проблема 

После пересечения скользящих средних нужно входить, но нужно игнорировать все следующие пересечения пока не закроется ордер.

 

datetime TimeBar; а не int. Больше ошибок не вижу.  

traderEvgen
422
traderEvgen  
Vitalii Ananev:

datetime TimeBar; а не int. Больше ошибок не вижу.  

Ордер закрывается по SL или TP, но возможно пересечение скользящих средних, и тогда будет открыт новый ордер, при том что предыдущий не закрылся, а мне надо что бы новый открывался только когда предыдущий закрылся.

Да.... сделки  открываются только Buy 

Vitalii Ananev
9019
Vitalii Ananev  
traderEvgen:
Ордер закрывается по SL или TP, но возможно пересечение скользящих средних, и тогда будет открыт новый ордер, при том что предыдущий не закрылся, а мне надо что бы новый открывался только когда предыдущий закрылся 

Для начала тип переменной TimeBar должен быть datetime.

Перед отправкой торгового приказа проверяйте наличие уже открытых ордеров (функция OrdersTotal() возвращает кол-во открытых ордеров). 

Посмотрите примеры советников в базе кодов, по сто раз одно и тоже писать не хочется. 

traderEvgen
422
traderEvgen  
Vitalii Ananev:

Для начала тип переменной TimeBar должен быть datetime.

Перед отправкой торгового приказа проверяйте наличие уже открытых ордеров (функция OrdersTotal() возвращает кол-во открытых ордеров).

за datetime спасибо, уже исправил :)

А  OrdersTotal не поможет, если вручную был вход, или с другого советника ?

Vitalii Ananev
9019
Vitalii Ananev  
traderEvgen:

за datetime спасибо, уже исправил :)

А  OrdersTotal не поможет, если вручную был вход, или с другого советника ?

Проверяйте ордера на наличие магического номера.

То есть отправляя торговый приказ на сервер указывайте ордеру уникальный маг. номер. По нему вы будете отличать ордера своего советника от других советников и от открытых вручную. 

traderEvgen
422
traderEvgen  
Vitalii Ananev:

Проверяйте ордера на наличие магического номера.

То есть отправляя торговый приказ на сервер указывайте ордеру уникальный маг. номер. По нему вы будете отличать ордера своего советника от других советников и от открытых вручную. 

да, нужно использовать magic Number, возможно Symbol(). Но как написать проверку?

Помогите пожалуйста... я уже столько времени на это потратил и ничего не выходит  

Vitalii Ananev
9019
Vitalii Ananev  

Вот простой пример:

int OrderCount(int MN,string SMB)
{
   int count = 0;
   int Total = OrdersTotal();

   if (Total==0) return(0);
   for(int i=Total-1; i>=0; i--)         
   {
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
      if (OrderMagicNumber()!=MN && OrderSymbol()!=SMB) continue;
      count++;
   }
   return(count);
}
traderEvgen
422
traderEvgen  
Vitalii Ananev:

Вот простой пример:

спасибо большое 
Vitalii Ananev
9019
Vitalii Ananev  
Vitalii Ananev:

Вот простой пример:

Эта функция считает кол-во всех ордеров любого типа имеющих магической номер MN и символ SMB.

Пример.

if (OrderCount(12345,"EURUSD")==0) OrderSend();
traderEvgen
422
traderEvgen  
Vitalii Ananev:

Эта функция считает кол-во всех ордеров любого типа имеющих магической номер MN и символ SMB.

Пример.

даа, я уже понял. Еще раз огромное спасибо 
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий