Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2544

 
Maxim Kuznetsov #:

удивительный талант постановки задач и точных технических формулировок :-)

так чего надо-то ?

---

просто посчитать средние от разных символов и получить разницу этих средних ??

это привести цены в один общий тайминг (заполнить пропущенные бары или убрать лишнее), посчитать там средние и получить разницу. всё.

) сразу поржал! хотелось пообщаться хорошее настроение перед завтраком. Да через iCustom () - думаю специально дважды напишу для тех кто не сразу поймет....)

считывать в робота с индикатора значения  буферов

// Буферы для отображения данных
double Buf1[];    // Первый инструмент
double Buf2[];    // Второй инструмент

нужны на 0 на 1 на 2 барах. Это по-элегантнее хотел с индикатора считывать...

уже в роботе сделал кое-что - сразу в роботе (тоже можете посмотреть), но лучше с индикатора через iCustom.... если поддается....

в робота надо получать значения буферов 1 и 2 ценовых линий индикатора.

Вот сам уже в робота напрямую ф-ии с индикатора загружаю.... пока не проверял работу робота через Print значений в тестере... спс за помощь....  )

 //------------------------------------------------------------------ 
  // Отрисовка ценовых линий: рисуем и синхронизируем по наличию баров  
    // Первый ценовой график
    _ma1 = iMA(Symbol1Name,Period(),MAFast,0,MAMethod,MAPrice,0);    
    _ma2 = iMA(Symbol1Name,Period(),MASlow,0,MAMethod,MAPrice,0);    
    Buf10 = kPrice1*(_ma1-_ma2);
    
    _ma1 = iMA(Symbol1Name,Period(),MAFast,0,MAMethod,MAPrice,1);    
    _ma2 = iMA(Symbol1Name,Period(),MASlow,0,MAMethod,MAPrice,1);    
    Buf11 = kPrice1*(_ma1-_ma2);    
    
    _ma1 = iMA(Symbol1Name,Period(),MAFast,0,MAMethod,MAPrice,2);    
    _ma2 = iMA(Symbol1Name,Period(),MASlow,0,MAMethod,MAPrice,2);    
    Buf12 = kPrice1*(_ma1-_ma2);
   
    // Второй ценовой график    
    if (UseVolatility==false)
    {
      _ma1 = iMA(Symbol2Name,Period(),MAFast,0,MAMethod,MAPrice,0);     
      _ma2 = iMA(Symbol2Name,Period(),MASlow,0,MAMethod,MAPrice,0);      
       Buf20= kPrice2*(_ma1-_ma2);
       
      _ma1 = iMA(Symbol2Name,Period(),MAFast,0,MAMethod,MAPrice,1);     
      _ma2 = iMA(Symbol2Name,Period(),MASlow,0,MAMethod,MAPrice,1);      
       Buf21= kPrice2*(_ma1-_ma2);
       
      _ma1 = iMA(Symbol2Name,Period(),MAFast,0,MAMethod,MAPrice,2);     
      _ma2 = iMA(Symbol2Name,Period(),MASlow,0,MAMethod,MAPrice,2);      
       Buf22= kPrice2*(_ma1-_ma2); 
    
    }
    
    if (UseVolatility==true && volA2!=EMPTY)
    {
      _ma1 = iMA(Symbol2Name,Period(),MAFast,0,MAMethod,MAPrice,0);
      _ma2 = iMA(Symbol2Name,Period(),MASlow,0,MAMethod,MAPrice,0);      
      Buf20= kPrice2*volA2*(_ma1-_ma2);
      
      _ma1 = iMA(Symbol2Name,Period(),MAFast,0,MAMethod,MAPrice,1);
      _ma2 = iMA(Symbol2Name,Period(),MASlow,0,MAMethod,MAPrice,1);      
      Buf21= kPrice2*volA2*(_ma1-_ma2);
      
      _ma1 = iMA(Symbol2Name,Period(),MAFast,0,MAMethod,MAPrice,2);
      _ma2 = iMA(Symbol2Name,Period(),MASlow,0,MAMethod,MAPrice,2);      
      Buf22= kPrice2*volA2*(_ma1-_ma2);    
      
      
    }
 
Roman Shiredchenko #:

Хотелось бы поэлегантнее может есть  возможность с iCustom..... спс.

double ind_1=iCustom(_Symbol,_Period,"Ind_2linep1_MQL",Symbol1Name,Symbol1Reverse,Symbol2Name,Symbol2Reverse,___MISC___,UseVolatility,Triangle,TriangleColor,AlertChannelMore,AlertChannelLess,__VOL___,VOLMode,VOLPeriodATR,___MA___,MASlow,MAFast,MAMethod,MAPrice,0,0);  "0" - bar
double ind_2=iCustom(_Symbol,_Period,"Ind_2linep1_MQL",Symbol1Name,Symbol1Reverse,Symbol2Name,Symbol2Reverse,___MISC___,UseVolatility,Triangle,TriangleColor,AlertChannelMore,AlertChannelLess,__VOL___,VOLMode,VOLPeriodATR,___MA___,MASlow,MAFast,MAMethod,MAPrice,0,1);  "1" - bar
 
Maxim Kuznetsov #:

удивительный талант постановки задач и точных технических формулировок :-)

так чего надо-то ?

---

просто посчитать средние от разных символов и получить разницу этих средних ??

это привести цены в один общий тайминг (заполнить пропущенные бары или убрать лишнее), посчитать там средние и получить разницу. всё.

Да.
На
чиная читать ваш пост я подумал что вы меня похвалите что все грамотно и лаконично заформулировал по запросу...)
 
Tretyakov Rostyslav #:
О! Спс! буду пробовать и смотреть и тестить!!!!!
 
Maxim Kuznetsov #:

SetIndexBuffer и PlotIndexSet имеют раздельные индексации. В первом - индекс буфера, во втором линии плот

у тебя рисуется 4 линии (в #property задано) и в PlotIndexSet(..) могут быть значения от 0 до 3. Макд - 0 и 1, стрелки 2 и 3

Не вполне очевидным образом сделано, но потом все привыкли

Спасибо, всё получилось. Если не трудно, подскажи, почему у меня индикатор " сжался" по вертикали.

При этом, когда, я совмещаю два индюка в подвале в ручную, всё совмещается отлично.


 
Игорь #:

Спасибо, всё получилось. Если не трудно, подскажи, почему у меня индикатор " сжался" по вертикали.


могут быть разные причины, но как правило - где-то есть мусор в индикаторном буфере. Внимательно проверьте код и/или "сжатый график" (нажать Ctrl-D и выискивать мышью где некорректные данные, обычно в крайних  частях самые левые и самые правые)

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

 
Maxim Kuznetsov #:
EMPTY_VALUE

Да, есть такое, у меня сигнальном индикаторе уже прописано.

 PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,NULL);
 PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,NULL);

А вот в Макд по умолчанию таких строк нет.

 
Maxim Kuznetsov #:

могут быть разные причины, но как правило - где-то есть мусор в индикаторном буфере. Внимательно проверьте код и/или "сжатый график" (нажать Ctrl-D и выискивать мышью где некорректные данные, обычно в крайних  частях самые левые и самые правые)

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

Сейчас включил в метоедиторе включил "начать на исторических данных", макд проходит тест в нормальном режиме, при этом, сигнального индюка нет совсем.

 
Игорь #:

Спасибо, всё получилось. Если не трудно, подскажи, почему у меня индикатор " сжался" по вертикали.

При этом, когда, я совмещаю два индюка в подвале в ручную, всё совмещается отлично.


У Вас значение сигнального индикатора на много больше MACD
 
Tretyakov Rostyslav #:
У Вас значение сигнального индикатора на много больше MACD

Установил  параметр 5, сигналов стало больше, однако макд не изменился (остался сплющенным).

По ходу дела, у меня косяк в масштабе совместимости двух кодах в подвале.