Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Зарабатывай на сервисах MQL5. Это просто!
Anna_89
507
Anna_89 2015.07.30 19:48 

Здравствуйте! Сделки ставятся только на куплю. Хотя на продажу код прописан. Может у меня где-то ошибка? 

int start()
{
   int tiket;
   double ashi_1_0,ashi_1_1,ashi_1_2,ashi_1_3,lord_2_0;
   
if(Time[0] == prevtime)   
      return(0);  
   prevtime = Time[0];
   
   if (OrdersTotal()   == 0)
 {  
   ashi_1_0=iCustom(NULL,0,"Heiken_Ashi_Smoothed1lime",2,0,0);
   ashi_1_1=iCustom(NULL,0,"Heiken_Ashi_Smoothed1lime",6,1,0);
   ashi_1_2=iCustom(NULL,0,"Heiken_Ashi_Smoothed1lime",3,2,0);
   ashi_1_3=iCustom(NULL,0,"Heiken_Ashi_Smoothed1lime",2,3,0);
   
   lord_2_0=iCustom(NULL,0,"TrendLord1",21,0,0);
    
   if ((ashi_1_1<=ashi_1_2) && (ashi_1_0>ashi_1_3) && (lord_2_0<Bid))
   {
     tiket=OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),Slippage,0,0,"",Magic,0,clrGreen);
     if(tiket < 0) { Print("Ошибка при выборе ордера BUY #", GetLastError() ); prevtime = Time[1]; }
   }
   
   if ((ashi_1_1>=ashi_1_2) && (ashi_1_0<ashi_1_3) && (lord_2_0>Bid))
   {
     tiket=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),Slippage,0,0,"",Magic,0,clrGreen);
     if(tiket < 0) { Print("Ошибка при выборе ордера BUY #", GetLastError() ); prevtime = Time[1]; }
   }
 }
Vladimir Karputov
Модератор
41773
Vladimir Karputov 2015.07.30 19:51  
Anna_89:

Здравствуйте! Сделки ставятся только на куплю. Хотя на продажу код прописан. Может у меня где-то ошибка?

 И ещё: если вопрос по MQL4, то сразу, пожалуйста, указывайте это в названии темы.

Vladimir Karputov
Модератор
41773
Vladimir Karputov 2015.07.30 19:54  

А если по коду пройтись стилизатором:

void OnStart()
  {
   int tiket;
   double ashi_1_0,ashi_1_1,ashi_1_2,ashi_1_3,lord_2_0;

   if(Time[0]==prevtime)
      return(0);
   prevtime=Time[0];

   if(OrdersTotal()==0)
     {
      ashi_1_0=iCustom(NULL,0,"Heiken_Ashi_Smoothed1lime",2,0,0);
      ashi_1_1=iCustom(NULL,0,"Heiken_Ashi_Smoothed1lime",6,1,0);
      ashi_1_2=iCustom(NULL,0,"Heiken_Ashi_Smoothed1lime",3,2,0);
      ashi_1_3=iCustom(NULL,0,"Heiken_Ashi_Smoothed1lime",2,3,0);

      lord_2_0=iCustom(NULL,0,"TrendLord1",21,0,0);

      if((ashi_1_1<=ashi_1_2) && (ashi_1_0>ashi_1_3) && (lord_2_0<Bid))
        {
         tiket=OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),Slippage,0,0,"",Magic,0,clrGreen);
         if(tiket<0) { Print("Ошибка при выборе ордера BUY #",GetLastError()); prevtime=Time[1]; }
        }

      if((ashi_1_1>=ashi_1_2) && (ashi_1_0<ashi_1_3) && (lord_2_0>Bid))
        {
         tiket=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),Slippage,0,0,"",Magic,0,clrGreen);
         if(tiket<0) { Print("Ошибка при выборе ордера BUY #",GetLastError()); prevtime=Time[1]; }
        }
     }
Artyom Trishkin
Модератор
73470
Artyom Trishkin 2015.07.30 22:48  
Anna_89:

Здравствуйте! Сделки ставятся только на куплю. Хотя на продажу код прописан. Может у меня где-то ошибка? 

if(OrdersTotal()==0)

Если нет вообще никаких ордеров и позиций. Совсем нет. По любому символу, с любым типом и магиком, то откроет.

Anna_89
507
Anna_89 2015.07.31 12:26  

Исправила код. Но на продажу сделки все равно не открываются. 

int start()
  {
   int tiket;
   double ashi_1_0,ashi_1_1,ashi_1_2,ashi_1_3,lord_2_0;

   if(Time[0]==prevtime)
      return(0);
   prevtime=Time[0];

   if(OrdersTotal()<=0)
     {
      ashi_1_0=iCustom(NULL,0,"Heiken_Ashi_Smoothed1lime",2,0,0);
      ashi_1_1=iCustom(NULL,0,"Heiken_Ashi_Smoothed1lime",6,1,0);
      ashi_1_2=iCustom(NULL,0,"Heiken_Ashi_Smoothed1lime",3,2,0);
      ashi_1_3=iCustom(NULL,0,"Heiken_Ashi_Smoothed1lime",2,3,0);

      lord_2_0=iCustom(NULL,0,"TrendLord1",21,0,0);

      if((ashi_1_0>ashi_1_2) && (lord_2_0<Bid))
        {
         tiket=OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),Slippage,0,0,"",Magic,0,clrGreen);
         if(tiket<0) { Print("Ошибка при выборе ордера BUY #",GetLastError()); prevtime=Time[1]; }
        }

      if((ashi_1_1>ashi_1_3) && (lord_2_0>Bid))
        {
         tiket=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),Slippage,0,0,"",Magic,0,clrGreen);
         if(tiket<0) { Print("Ошибка при выборе ордера BUY #",GetLastError()); prevtime=Time[1]; }
        }
     }
Vitalii Ananev
7813
Vitalii Ananev 2015.07.31 13:00  
Anna_89:

Исправила код. Но на продажу сделки все равно не открываются. 

Или в настройках советника разрешены только покупки или условие :

      if((ashi_1_1>ashi_1_3) && (lord_2_0>Bid))
        {
         tiket=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),Slippage,0,0,"",Magic,0,clrGreen);
         if(tiket<0) { Print("Ошибка при выборе ордера BUY #",GetLastError()); prevtime=Time[1]; }
        }

 всегда ложно.

Anna_89
507
Anna_89 2015.07.31 13:09  
Vitalii Ananev:

Или в настройках советника разрешены только покупки или условие :

 всегда ложно.

Значит написано неправильно условие на продажу?
Artyom Trishkin
Модератор
73470
Artyom Trishkin 2015.07.31 13:30  
Anna_89:

Исправила код. Но на продажу сделки все равно не открываются. 

А как вы его исправили?

if(OrdersTotal()<=0)

теперь если ещё и меньше ноля... Реальное количество может быть либо ноль, либо больше, но не меньше ноля

Anna_89
507
Anna_89 2015.07.31 13:36  
Artyom Trishkin:

А как вы его исправили?

теперь если ещё и меньше ноля... Реальное количество может быть либо ноль, либо больше, но не меньше ноля

И как правильно написать?
Artyom Trishkin
Модератор
73470
Artyom Trishkin 2015.07.31 13:49  
Anna_89:
И как правильно написать?
А как вам по условиям нужно?
Anna_89
507
Anna_89 2015.07.31 13:53  
Artyom Trishkin:
А как вам по условиям нужно?

Вот индикатор по которому я пишу советник.

Нужно когда появляется сигнал белого цвета ставится ордер на продажу, когда зеленый - на куплю. Но не могу подобрать правильно условие. 

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