Есть индикатор. Для рассчета беруться данные от двух символов за N-ый бар, используются функции iHigh,iLow,iOpen.
Вызываю индикатор из советника и просто прикрепляю индикатор к графику. Входные параметры одинаковые. Но почему значения разные получаются? Я где-то промахнулся с документацией к MT4 и не все изучил, и неправильно работаю с функциями или же тут есть своя особенность.
Если графики открыты то нужна только синхронизация по времени. И желательно делать контроль истории в любом случае. Точнее автоматический перерасчет индикатора после загрузки истории. Если есть желание, то можно довести индикатор. МОжно и в этой ветке
Если графики открыты то нужна только синхронизация по времени. И желательно делать контроль истории в любом случае. Точнее автоматический перерасчет индикатора после загрузки истории. Если есть желание, то можно довести индикатор. МОжно и в этой ветке
Спасибо что откликнулись. Нет графики закрыты. Проблема с тестером. История закачана минутная по всем используемым символам. Пересчет на нужный таймфрейм для каждого символа сделан.
Спасибо что откликнулись. Нет графики закрыты. Проблема с тестером. История закачана минутная по всем используемым символам. Пересчет на нужный таймфрейм для каждого символа сделан.
Тогда могу только пример своего индикатора дать. Синхронизация и контроль истории есть.
//+------------------------------------------------------------------+ //| VininI_MACD%.mq4 | //| Copyright © 2009, Victor Nicolaev | //| vinin.ucoz.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2009, Victor Nicolaev" #property link "vinin.ucoz.ru" #property indicator_separate_window #property indicator_buffers 2 #property indicator_level1 0 #property indicator_color1 Green #property indicator_color2 Red extern string gSymbol=""; // используемый инструмент, по умолчанию текущий extern int Fast =12; extern int Slow =26; extern int Signal = 9; extern int Mode_Main = 3; extern int Mode_Signal=0; double MACD_MAIN[], MACD_SIGNAL[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { if (gSymbol=="") gSymbol=Symbol(); SetIndexBuffer(0,MACD_MAIN); SetIndexBuffer(1,MACD_SIGNAL); SetIndexStyle(0,DRAW_LINE); SetIndexStyle(1,DRAW_LINE); SetIndexDrawBegin(0,Slow+Signal); SetIndexDrawBegin(1,Slow+Signal); IndicatorShortName("MACD%("+gSymbol+","+Fast+","+Slow+","+Signal+")"); SetIndexLabel(0,"MACD"); SetIndexLabel(1,"SIGNAL"); return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int i, counted_bars=IndicatorCounted(), tmpBar, tmpTime, tBars; static int gBars=0; double MA_FAST,MA_SLOW; bool bSymbol=(gSymbol!=Symbol()); if (counted_bars>0) counted_bars--; if (bSymbol) { // Контроль истории tBars=iBars(gSymbol,0); if (tBars-gBars>2) { counted_bars=0; gBars=tBars; } } int limit=Bars-counted_bars; if (limit>Slow) limit-=Slow; for (i=limit;i>0;i--) { tmpBar=i; if (bSymbol) { // синхронизация tmpTime=Time[i]; tmpBar=iBarShift(gSymbol,0,tmpTime); if (iTime(gSymbol,0,tmpBar)>tmpTime) tmpBar--; MA_FAST=iMA(gSymbol,0,Fast,0,Mode_Main,PRICE_CLOSE,tmpBar); MA_SLOW=iMA(gSymbol,0,Slow,0,Mode_Main,PRICE_CLOSE,tmpBar); } else { MA_FAST=iMA(gSymbol,0,Fast,0,Mode_Main,PRICE_CLOSE,i); MA_SLOW=iMA(gSymbol,0,Slow,0,Mode_Main,PRICE_CLOSE,i); } if (MA_SLOW>0) MACD_MAIN[i]= (MA_FAST/MA_SLOW-1.0)*1000.0; } for (i=limit;i>0;i--) { MACD_SIGNAL[i]=iMAOnArray(MACD_MAIN,0,Signal,0,Mode_Signal,i); } return(0); } //+------------------------------------------------------------------+
Сразу не смог вникнуть. Если не разберусь, обращуськ вам Vinin. Надеюсь вы не против.
Хорошо. Нашел у себя ошибку. Исправленный вариант

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Вызываю индикатор из советника и просто прикрепляю индикатор к графику. Входные параметры одинаковые. Но почему значения разные получаются? Я где-то промахнулся с документацией к MT4 и не все изучил, и неправильно работаю с функциями или же тут есть своя особенность.