Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1303

 
Oleg Kolesov:
Владимир. Создан в OnInit(). Советник видит индикатор. При визуализации правильно передает параметры, рисует. Торговать не хочет?

Вставляйте код правильно.

 
//+------------------------------------------------------------------+
//|  Настраиваемые параметры                                         |
//+------------------------------------------------------------------+
input string Expert_Title="Exp_Tangents2";                        // The name of the EA
input int Period1=29;                                             // Period1
input int Period2=145;                                            // Period2
input int Period3=609;                                            // Period3
input double level1=46.0;                                         //                                    
input double level2=22.0;                                         //
input double level3=0.0;                                          //
input double level4=-22.0;                                        //
input double level5=-46.0;                                        //
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
// получаем хэндл индикатора Tangents
   HLHandle=iCustom(NULL,0,"Examples\\Tangents2",Period1,Period2,
                      Period3,level1,level2,level3,level4,level5);
// если хэндл неверный
   if(HLHandle<0)
     {
      Alert("Ошибка создания хэнла индикатора Tangents2 - ошибка: ",GetLastError(),"!!");
      return(-1);
     }
   }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//+---------------------------------------------------------------------+
//| Копируем значения индикаторов в массивы, используя хэндлы индикатора
//+---------------------------------------------------------------------+
   if(CopyBuffer(HLHandle,0,0,3,L1)<0 || CopyBuffer(HLHandle,1,0,3,L2)<0
      || CopyBuffer(HLHandle,2,0,3,L3)<0)
     {
      Alert("Ошибка копирования буферов хэндла индикатора Tangents2 - ошибка:",GetLastError(),"!!");
      return;
     }
  }
//+------------------------------------------------------------------+
//|  Проверяет условия на покупку                                    |
//+------------------------------------------------------------------+
bool checkBuy()
  {
   bool dobuy = false;
   if(L2[2]<level1 && L2[1]>level1 && L3[2]<level1 && L3[1]>level1 && (L1[1]>level1 || L1[1]<level5))
           {
            dobuy = true;
           }
   return(dobuy);
  }
 
Oleg Kolesov:

Зачем два раза что-то копировать из буфера '0'?

 
Oleg Kolesov:

Массивы в которые копируете не забыли перевернуть при помощи ArraySetAsSeries(***,true) ?

 
Исправил. Лишнее добавил (в процессе). Третий день пытаюсь решить задачу. 
 
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
// проверим снова, может ли советник торговать
   if(checkTrading()==false)
     {
      Alert("Советник не может торговать,не удовлетворяются торговые требования");
      return;
     }
   ArraySetAsSeries(mrate,true);
   ArraySetAsSeries(L1,true);
   ArraySetAsSeries(L2,true);
   ArraySetAsSeries(L3,true);
 

Владимир шаблон этого советника не раз проверен, на реале торговал. 

Вот условие >level,<level никак не получается.

 
Oleg Kolesov:

Теперь из условия на открытие позиции удалите всё лишнее и оставьте только одно условие. И так добавляйте по одному условию, пока не дойдёте до того момента, когда новое добавленное условие убьет торговый сигнал.

 
Спасибо. Попробую.
 
Oleg Kolesov:

Владимир шаблон этого советника не раз проверен, на реале торговал. 

Вот условие >level,<level никак не получается.

Если Вы заметили, то я уже вторую страницу работаю в режиме Телепатии. Я вообще ни разу не видел код, о котором Вы говорите. Думаю что Телепатии хватит максимум ещё на одну страницу ...