Глупая ошибка у новичка

 

Неоткрывает BUY

void CheckForOpen()
  {
  double ma90_5,
  ma90,
  ma905,
  ma14_5,
  ma14,
  ma145;
  int res;
//---- go trading only for first tiks of new bar
  if(Volume[0]>1) return;
//---- get Moving Average 
  ma90_5 =iMA(NULL,0,90,-5,MODE_EMA,PRICE_CLOSE, 1);
  ma90 =iMA(NULL,0,90, 0,MODE_EMA,PRICE_CLOSE, 1);
  ma905 =iMA(NULL,0,90, 5,MODE_EMA,PRICE_CLOSE, 1);
  ma14_5 =iMA(NULL,0,14,-5,MODE_EMA,PRICE_CLOSE, 1);
  ma14 =iMA(NULL,0,14, 0,MODE_EMA,PRICE_CLOSE, 1);
  ma145 =iMA(NULL,0,14, 5,MODE_EMA,PRICE_CLOSE, 1);
   
   
//---- sell conditions
  if(ma905>ma90 && ma90>ma90_5 && ma145>ma14 && ma14>ma14_5)  
  {
  res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
  return;
  }
//---- buy conditions
  if(ma905<ma90 && ma90<ma90_5 && ma145<ma14 && ma14<ma14_5)  
  {
  res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);
  return;
  }
//----
  }

 

А Вы в какую сторону сдвигаете МА ?

В прошлое ? ?

ma90_5 =iMA(NULL,0,90,-5,MODE_EMA,PRICE_CLOSE, 1);
double iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)
ma_shift - Сдвиг индикатора относительно ценового графика
 
В будущее))) Так ведь красивее))
 
В какую цторону сдвиг мне неимеет значения А вот почему не открывает BUY  Я просто учусь
 

Найдите на истории участок, где, по вашему мнению должен открываться Buy, и напишите перед условием открытия Buy

if(TimeCurrent() == StrToTime("<дата, например 2009.01.15 14:00>"))
  Print("ma905 = ", ma905, "ma90 = ", ma90, ", ma90_5 = ", ma90_5, ", ma145 = ", ma145, ", ma14 = ", ma14, ", ma14_5 = ", ma14_5);

В журнале увидите значения каждой МА и сравните с теми, что на графике. Таким образом вы убедитесь в правильности исполнения (неисполнения) условия.

 
Scriptong >>:

Найдите на истории участок, где, по вашему мнению должен открываться Buy, и напишите перед условием открытия Buy

В журнале увидите значения каждой МА и сравните с теми, что на графике. Таким образом вы убедитесь в правильности исполнения (неисполнения) условия.

Чють понял а чюточку нет Это надо всавить в код  Так ли я понял?

 double ma90_5,
  ma90,
  ma905,
  ma14_5,
  ma14,
  ma145;
  int res;
//---- go trading only for first tiks of new bar
  if(Volume[0]>1) return;
//---- get Moving Average 
  ma90_5 =iMA(NULL,0,90,-5,MODE_EMA,PRICE_CLOSE, 1);
  ma90 =iMA(NULL,0,90, 0,MODE_EMA,PRICE_CLOSE, 1);
  ma905 =iMA(NULL,0,90, 5,MODE_EMA,PRICE_CLOSE, 1);
  ma14_5 =iMA(NULL,0,14,-5,MODE_EMA,PRICE_CLOSE, 1);
  ma14 =iMA(NULL,0,14, 0,MODE_EMA,PRICE_CLOSE, 1);
  ma145 =iMA(NULL,0,14, 5,MODE_EMA,PRICE_CLOSE, 1);
   
   
//---- sell conditions
  if(ma905>ma90 && ma90>ma90_5 && ma145>ma14 && ma14>ma14_5)  
  {
  res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
  return;
  }
//---- buy conditions
  if(ma905<ma90 && ma90<ma90_5 && ma145<ma14 && ma14<ma14_5)  
  {

if(TimeCurrent() == StrToTime("<дата, например 2009.01.15 14:00>"))
  Print("ma905 = ", ma905, "ma90 = ", ma90, ", ma90_5 = ", ma90_5, ", ma145 = ", ma145, ", ma14 = ", ma14, ", ma14_5 = ", ma14_5);

  res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);
  return;
  }
//----
  }

 
Scriptong >>:

Найдите на истории участок, где, по вашему мнению должен открываться Buy, и напишите перед условием открытия Buy

А вы поставили после условия. Как вы увидите результаты, если в тело условия выполнение программы не заходит?

И вместо <дата, например 2009.01.15 14:00> поставьте ДАТУ и ВРЕМЯ, а не приведенную мной надпись.

 
Scriptong >>:

А вы поставили после условия. Как вы увидите результаты, если в тело условия выполнение программы не заходит?

И вместо <дата, например 2009.01.15 14:00> поставьте ДАТУ и ВРЕМЯ, а не приведенную мной надпись.

понял