Во первых MACD - это система пересечений iMA, поэтому менять нужно только те функции которые использують функции сглажение
- iMA заменить на iCustom(NULL,0,"ZeroLag",....
Но для того чтобы не искать ошибке - есть готовый MACD даже где-то в CODEBASE..
Спасибо конечно. В CODEBASE искал, не нашел.
Народ! Ну помогите!
Похоже, Вы неправильно прописали название индикатора. Посмотрите в журнале, там должны быть сообщения типа "Не могу найти файл ZeroLag.ex4".
Если взять из CodeBase индикатор Collector'а ZeroLag MACD.mq4, то строка вызова должна выглядеть так:
MacdCurrent=iCustom(NULL,0,"ZeroLag MACD",12,24,9,0,0);
Нет, просто у меня сигналы используют встроеный MACD:
MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
А мне надо чтобы использовался ZeroLAg MACD.
Но я чтото напутал в синтаксисе.
А МА-шку я не использую вообще.
(MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);) - удалил.
Похоже, Вы неправильно прописали название индикатора. Посмотрите в журнале, там должны быть сообщения типа "Не могу найти файл ZeroLag.ex4".
Если взять из CodeBase индикатор Collector'а ZeroLag MACD.mq4, то строка вызова должна выглядеть так:
Так вот последние цифры в параматрах 0,0 0,1 и 1,0 и 1,1 так или нет?
extern int FastEMA = 12; extern int SlowEMA = 24; extern int SignalEMA = 9; int start() { double ZeroMACD=iCustom(NULL,0,"ZeroLag MACD",FastEMA,SlowEMA,SignalEMA,0,0); double ZeroSignal=iCustom(NULL,0,"ZeroLag MACD",FastEMA,SlowEMA,SignalEMA,1,0); }
Что-то примерно так. Это для нулевого бара (последняя цифра).
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день. Гуру! Объясните "тупому" как заменить в экперте MACD на ZeroLag MACD.
Никак не получается. Работает не правильно.
То что есть:
в начале кода
extern double MACDOpenLevel=3;
extern double MACDCloseLevel=2;
extern double MATrendPeriod=26;
в функциях покупки/продажи:
MacdCurrent=CD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
MacdPrevious=CD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
SignalCurrent=CD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
SignalPrevious=CD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);
long
if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious &&
MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)
short
if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)
Что сделеал:
1. Убрал
extern double MACDOpenLevel=3;
extern double MACDCloseLevel=2;
extern double MATrendPeriod=26;
2. Заменил
MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);
на
MacdCurrent=iCustom(NULL,0,"ZeroLag",12,24,9,0,0);
MacdPrevious=iCustom(NULL,0,"ZeroLag",12,24,9,0,1);
SignalCurrent=iCustom(NULL,0,"ZeroLag",12,24,9,1,0);
SignalPrevious=iCustom(NULL,0,"ZeroLag",12,24,9,1,1);
MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);
MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);
Хелп!