Индикатор в советнике - страница 2 12 Новый комментарий [Удален] 2015.12.13 16:04 #11 andrey egorov: Мне вот как раз нужно засунуть индикатор в советник и не пользоваться iCustom, подскажите пожалуйста примеры решения (MQL4)2 варианта 1) Код индикатора записывать в советник.При этом зоздавая буфера и делая им ArrayResize ArraySetAsSerises2) //+------------------------------------------------------------------+//| SampleEA.mq4 |//| Copyright 2013, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#resource "\\Indicators\\SampleIndicator.ex4"#property strict//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+int OnInit() {//--- получим значение пользовательского индикатора double value=iCustom(_Symbol,_Period,"::Indicators\\SampleIndicator.ex4",0,0); PrintFormat("Indicator: iCustom value=%f",value);//--- ... return(INIT_SUCCEEDED); } Как включить код индикатора Обновление платформы MetaTrader 4 подключение индикатора Konstantin Mitrohin 2017.04.05 21:56 #12 Д день. Подскажите . можно вставить код индикатора в советник (можно без вывода графики - если это нельзя или сложно )//+------------------------------------------------------------------+//| Accelerator.mq4 |//| Copyright 2005-2014, MetaQuotes Software Corp. |//| http://www.mql4.com |//+------------------------------------------------------------------+#property copyright "2005-2014, MetaQuotes Software Corp."#property link "http://www.mql4.com"#property description "Accelerator/Decelerator"#property strict#include <MovingAverages.mqh>//--- indicator settings#property indicator_separate_window#property indicator_buffers 3#property indicator_color1 Black#property indicator_color2 Green#property indicator_color3 Red//--- indicator buffersdouble ExtACBuffer[];double ExtUpBuffer[];double ExtDnBuffer[];double ExtMacdBuffer[];double ExtSignalBuffer[];//---#define PERIOD_FAST 5#define PERIOD_SLOW 34//--- bars minimum for calculation#define DATA_LIMIT 38//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+void OnInit(void) { IndicatorShortName("AC");//--- 2 additional buffers are used for counting. IndicatorBuffers(5);//--- drawing settings SetIndexStyle(0,DRAW_NONE); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexStyle(2,DRAW_HISTOGRAM); IndicatorDigits(Digits+2); SetIndexDrawBegin(0,DATA_LIMIT); SetIndexDrawBegin(1,DATA_LIMIT); SetIndexDrawBegin(2,DATA_LIMIT);//--- all indicator buffers mapping SetIndexBuffer(0,ExtACBuffer); SetIndexBuffer(1,ExtUpBuffer); SetIndexBuffer(2,ExtDnBuffer); SetIndexBuffer(3,ExtMacdBuffer); SetIndexBuffer(4,ExtSignalBuffer);//--- name for DataWindow and indicator subwindow label SetIndexLabel(1,NULL); SetIndexLabel(2,NULL); }//+------------------------------------------------------------------+//| Accelerator/Decelerator Oscillator |//+------------------------------------------------------------------+int OnCalculate (const int rates_total, const int prev_calculated, const datetime& time[], const double& open[], const double& high[], const double& low[], const double& close[], const long& tick_volume[], const long& volume[], const int& spread[]) { int i,limit; double prev=0.0,current;//--- check for rates total if(rates_total<=DATA_LIMIT) return(0);//--- last counted bar will be recounted limit=rates_total-prev_calculated; if(prev_calculated>0) { limit++; prev=ExtMacdBuffer[limit]-ExtSignalBuffer[limit]; }//--- macd counted in the 1-st additional buffer for(i=0; i<limit; i++) ExtMacdBuffer[i]=iMA(NULL,0,PERIOD_FAST,0,MODE_SMA,PRICE_MEDIAN,i)- iMA(NULL,0,PERIOD_SLOW,0,MODE_SMA,PRICE_MEDIAN,i);//--- signal line counted in the 2-nd additional buffer SimpleMAOnBuffer(rates_total,prev_calculated,0,5,ExtMacdBuffer,ExtSignalBuffer);//--- dispatch values between 2 buffers bool up=true; for(i=limit-1; i>=0;) { current=ExtMacdBuffer[i]-ExtSignalBuffer[i]; if(current>prev) up=true; if(current<prev) up=false; if(!up) { ExtUpBuffer[i]=0.0; ExtDnBuffer[i]=current; } else { ExtUpBuffer[i]=current; ExtDnBuffer[i]=0.0; } ExtACBuffer[i]=current; i--; prev=ExtMacdBuffer[i+1]-ExtSignalBuffer[i+1]; }//--- done return(rates_total); }//+------------------------------------------------------------------+ MQL4: automated forex trading, strategy tester and custom indicators with MetaTrader www.mql4.com MQL4: automated forex trading, strategy tester and custom indicators with MetaTrader Почему перерисовывается индикатор? как сделать чтобы не [ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой 12 Новый комментарий
Мне вот как раз нужно засунуть индикатор в советник и не пользоваться iCustom, подскажите пожалуйста примеры решения (MQL4)
2 варианта
1) Код индикатора записывать в советник.
При этом зоздавая буфера и делая им ArrayResize ArraySetAsSerises
2)
//+------------------------------------------------------------------+
//| SampleEA.mq4 |//| Copyright 2013, MetaQuotes Software Corp. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#resource "\\Indicators\\SampleIndicator.ex4"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- получим значение пользовательского индикатора
double value=iCustom(_Symbol,_Period,"::Indicators\\SampleIndicator.ex4",0,0);
PrintFormat("Indicator: iCustom value=%f",value);
//--- ...
return(INIT_SUCCEEDED);
}
Д день. Подскажите . можно вставить код индикатора в советник (можно без вывода графики - если это нельзя или сложно )
//+------------------------------------------------------------------+