не открывается ордер

 
здравствуйте гении программирования, обьясните по какой причине не открывается ордер.
Файлы:
proga2_1.mq4  1 kb
 
//+------------------------------------------------------------------+
//| proga2.mq4 |
//| Димарик |
//| http//dimarik0000@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Димарик"
#property link "http//dimarik0000@yandex.ru"


//+------------------------------------------------------------------+
int MACD1, MACD2;
int total;
int ticket; 
int type=0;
int start()
{ 
MACD1=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
MACD2=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);

// проверка возможности открытия Buy
total=OrdersTotal();
{
if (MACD1>MACD2)
OrderSend(Symbol(),OP_BUY,0.2,Ask,3,0,0, "Покупаем ",0,0,Blue);
}
}
улыбнуло .... вам ещё читать и читать ... 
 
elmucon:
улыбнуло .... вам ещё читать и читать ... 

хороший ответ очень помогли спасибо
 
dimarik0000:

хороший ответ очень помогли спасибо

а что тут ответить - для начало со скобками разберитесь ... 
 
dimarik0000:

хороший ответ очень помогли спасибо
Он имел в виду, что прежде, чем что-то спрашивать, нужно почитать журнал. Там все подробно написано.
 
dimarik0000:
здравствуйте гении программирования, обьясните по какой причине не открывается ордер.


Обратите внимание на тип переменных MACD1, MACD2. Он целый. А это значит, что переменные всегда будут равны нулю. Замените int на double. А так у вас не выполняется условие ни разу.

Пробуйте так:

#property copyright "Димарик"
#property link "http//dimarik0000@yandex.ru"


//+------------------------------------------------------------------+
double MACD1, MACD2;
int total;
int ticket;
int type=0;
int start()
{
MACD1=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
MACD2=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);

// проверка возможности открытия Buy
total=OrdersTotal();
{
if (MACD1>MACD2)
OrderSend(Symbol(),OP_BUY,0.2,Ask,3,0,0, "Покупаем ",0,0,Blue);
}
}

 
DmitriyN:


Обратите внимание на тип переменных MACD1, MACD2. Он целый. А это значит, что переменные всегда будут равны нулю. Замените int на double. А так у вас не выполняется условие ни разу.


благодарю вас
 

DmitriyN: 


Обратите внимание на тип переменных MACD1, MACD2. Он целый. А это значит, что переменные всегда будут равны нулю. Замените int на double. А так у вас не выполняется условие ни разу.


да там и до выполнения условия не дойдет  ... :)

 

#property copyright "Димарик"
#property link "http//dimarik0000@yandex.ru"


//+------------------------------------------------------------------+
double MACD1, MACD2;
int total;
int ticket; 
int type=0;
int start()
 { 
 MACD1=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
 MACD2=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);

 // проверка возможности открытия Buy
 total=OrdersTotal();

 if (MACD1>MACD2)
    {
    OrderSend(Symbol(),OP_BUY,0.2,Ask,3,0,0, "Покупаем ",0,0,Blue);
    }

 }
а лучше так .... 
 
elmucon:
да там и до выполнения условия не дойдет  ... :) 
Ничего страшного, на ошибках учатся.
 
//+------------------------------------------------------------------+
//|                                                       proga2.mq4 |
//|                                                          Димарик |
//|                                      http//dimarik0000@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Димарик"
#property link      "http//dimarik0000@yandex.ru"


//+------------------------------------------------------------------+
double MACD1, MACD2; // ошибка - типы этих данных должны быть double (при использовании int результат вызова iMACD будет приводиться к 0 и условие MACD1>MACD2 всегда будет ложным)
int total;
int ticket; 
int type=0;
int start()
  { 
     
   MACD1=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
   MACD2=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);

   // проверка возможности открытия Buy
   total=OrdersTotal(); // эти данные вообще нигде более не используются
    {
     if (MACD1>MACD2)
      ticket=OrderSend(Symbol(),OP_BUY,0.2,Ask,3,0,0, "Покупаем ",0,0,Blue);
    }
  }
проверил, открывает
 
midorum:
проверил, открывает


да ну это же бред :

   total=OrdersTotal(); // эти данные вообще нигде более не используются
    {
     if (MACD1>MACD2)
      ticket=OrderSend(Symbol(),OP_BUY,0.2,Ask,3,0,0, "Покупаем ",0,0,Blue);
    }

зачем там скобки ?

открывает потому что условие без else

там вообще скобок не надо ...

   total=OrdersTotal(); // эти данные вообще нигде более не используются

     if (MACD1>MACD2) ticket=OrderSend(Symbol(),OP_BUY,0.2,Ask,3,0,0, "Покупаем ",0,0,Blue);

 как вы пишите - где об этом читаете - просто пипец ... 

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