Натолкнулся на проблему.
Код простейшего индикатора. По логике, при восходящем "тренде" Close должно быть больше Open, при нисходящем - наоборот.
Но не получется так. Такое впечатление, что функция iMa вместо Close использует Open.
Буду рад, если я где-то ошибся.
maOpen=iMA(NULL,0,MaPeriod,0,MaMetod,MODE_OPEN,pos);
maClose=iMA(NULL,0,MaPeriod,0,MaMetod,MODE_CLOSE,pos);
Попробуй использовать другие константы. PRICE_OPEN и PRICE_CLOSE
Натолкнулся на проблему.
Код простейшего индикатора. По логике, при восходящем "тренде" Close должно быть больше Open, при нисходящем - наоборот.
Но не получется так. Такое впечатление, что функция iMa вместо Close использует Open.
Буду рад, если я где-то ошибся.
maOpen=iMA(NULL,0,MaPeriod,0,MaMetod,MODE_OPEN,pos);
maClose=iMA(NULL,0,MaPeriod,0,MaMetod,MODE_CLOSE,pos);
Попробуй использовать другие константы. PRICE_OPEN и PRICE_CLOSE
Спасибо. Заигрался :)
maOpen=iMA(NULL,0,MaPeriod,0,MaMetod,MODE_OPEN,pos);
maClose=iMA(NULL,0,MaPeriod,0,MaMetod,MODE_CLOSE,pos);
Попробуй использовать другие константы. PRICE_OPEN и PRICE_CLOSE
Кстати, Виктор, а почему в iMA вообще работают MODE_OPEN и MODE_CLOSE, и что при этом получается? В документации ничего не нашел, но встречал МА с этими идентификаторами в индикаторе #Heiken_Ashi_Ma 20 из Code Base.
maOpen=iMA(NULL,0,MaPeriod,0,MaMetod,MODE_OPEN,pos);
maClose=iMA(NULL,0,MaPeriod,0,MaMetod,MODE_CLOSE,pos);
Попробуй использовать другие константы. PRICE_OPEN и PRICE_CLOSE
Кстати, Виктор, а почему в iMA вообще работают MODE_OPEN и MODE_CLOSE, и что при этом получается? В документации ничего не нашел, но встречал МА с этими идентификаторами в индикаторе #Heiken_Ashi_Ma 20 из Code Base.
Значения MODE_OPEN =0,MODE_CLOSE=3...
Значенния PRICE_OPEN =1, PRICE_CLOSE=0...
Таким образом, MODE_OPEN =PRICE_CLOSE, а MODE_CLOSE=PRICE_LOW... Поэтому и работает не так...
Кстати, Виктор, а почему в iMA вообще работают MODE_OPEN и MODE_CLOSE, и что при этом получается? В документации ничего не нашел, но встречал МА с этими идентификаторами в индикаторе #Heiken_Ashi_Ma 20 из Code Base.
MODE_OPEN и MODE_CLOSE - такие же константы как PRICE_OPEN и PRICE_CLOSE, просто значения у них другие (наверное).
Проверяем так: Print( "MODE_OPEN = ", MODE_OPEN, ", MODE_CLOSE = ", MODE_CLOSE ); ;)
ps: опоздал )
И еще кто-то жалуется. что на форуме не отвечают на вопросы... Даже кофе не успел выпить.
Однако, если бы обратил внимание, что applied_price имеет тип int, мог бы сообразить сам.
Спасибо, ребята.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Натолкнулся на проблему.
Код простейшего индикатора. По логике, при восходящем "тренде" Close должно быть больше Open, при нисходящем - наоборот.
Но не получется так. Такое впечатление, что функция iMa вместо Close использует Open.
Буду рад, если я где-то ошибся.
//+------------------------------------------------------------------+
//| Test.mq4 |
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#property copyright " "
#property link ""
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Lime
//---- parameters
extern int MaMetod = MODE_EMA;
extern int MaPeriod = 21;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
//----
int ExtCountedBars=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//|------------------------------------------------------------------|
int init()
{
//---- indicators
IndicatorBuffers(8);
SetIndexStyle(0,DRAW_LINE, 0, 2, Red);
SetIndexBuffer(0, ExtMapBuffer1);
SetIndexStyle(1,DRAW_LINE, 0, 2, Lime);
SetIndexBuffer(1, ExtMapBuffer2);
//---- indicator buffers mapping
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexBuffer(1,ExtMapBuffer2);
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
double maOpen, maClose, maLow, maHigh;
if(Bars<=10) return(0);
ExtCountedBars=IndicatorCounted();
//---- check for possible errors
if (ExtCountedBars<0) return(-1);
//---- last counted bar will be recounted
if (ExtCountedBars>0) ExtCountedBars--;
int pos=Bars-ExtCountedBars-1;
while(pos>=0)
{
maOpen=iMA(NULL,0,MaPeriod,0,MaMetod,MODE_OPEN,pos);
maClose=iMA(NULL,0,MaPeriod,0,MaMetod,MODE_CLOSE,pos);
ExtMapBuffer1[pos]=maOpen;
ExtMapBuffer2[pos]=maClose;
pos--;
}
//----
return(0);
}
//+------------------------------------------------------------------+