Bugatiniki26
22:08,
Я пытаюсь использовать индикатор ESI Crossover Signal в EA, и мне трудно получить от него значения. Я использую iCustom (), и независимо от того, какой режим я выбираю (0 или 1), индикатор возвращает только 2147483647. Любые мысли о том, что я делаю неправильно?
Вот пример того, что я пытаюсь сделать:
двойной EMA = iCustom (NULL, 0, ESI Crossover Signal, 5,13, false, 0,0);
Печать (EMA);
Вот код indy:
// ----------------------------------------------- -------------------
//| EMA-Crossover_Signal.mq4 |
//| Copyright © 2005, Джейсон Робинсон (jnrtrading) |
//|
http://www.jnrtading.co.uk|
// ----------------------------------------------- -------------------
/*
------------------------------------------------- -----------------
| Позволяет ввести два периода ema, и он отобразит вас на |
| Какой момент они пересекли. Это более полезно для более коротких |
| периоды, которые затушевываются барамиподсвечниками и когда |
| уровень масштабирования отсутствует. Также позволяет вам удалить emas |
| из графика. (emas изначально установлены на 5 и 6) |
------------------------------------------------- -----------------
*
#property copyright Copyright © 2005, Джейсон Робинсон (jnrtrading)
#property link http://www.jnrtrading.co.uk
#property indior_chart_window
#property indior_buffers 2
#property indior_color1 SeaGreen
#property indior_color2 Красный
double CrossUp [];
double CrossDown [];
extern int FasterEMA = 5;
extern int SlowerEMA = 13;
extern bool SoundON = false;
double alertTag;
двойной контроль = 2147483647;
// ----------------------------------------------- -------------------
//| Пользовательская функция инициализации индикатора |
// ----------------------------------------------- -------------------
int init ()
{
//---- индикаторы
SetIndexStyle (0, DRAW_ARROW, EMPTY, 3);
SetIndexArrow (0, 233);
SetIndexBuffer (0, CrossUp);
SetIndexStyle (1, DRAW_ARROW, EMPTY, 3);
SetIndexArrow (1, 234);
SetIndexBuffer (1, CrossDown);
//----
Возвращение (0);
}
// ----------------------------------------------- -------------------
//| Пользовательская функция деинициализации индикатора |
// ----------------------------------------------- -------------------
int deinit ()
{
//----
//----
Возвращение (0);
}
// ----------------------------------------------- -------------------
//| Пользовательская функция итерации индикатора |
// ----------------------------------------------- -------------------
int start () {
int limit, i, counter;
double speedEMAnow, slowerEMAnow, быстрееEMAprevious, slowerEMArerevious, fastEMAafter, slowerEMAafter;
double Range, AvgRange;
int counted_bars = IndiorCounted ();
//---- проверить возможные ошибки
if (counted_barslt; 0) return (-1);
//---- последний подсчитанный балл будет пересчитан
if (counted_barsgt; 0) counted_bars--;
предел = Bars-counted_bars;
для (i = 0; i lt; = limit; i ) {
Счетчик = я;
Диапазон = 0;
AvgRange = 0;
for (counter = i; counterlt; = i 9; counter )
{
AvgRange = AvgRange MathAbs (высокий [счетчик] -Low [счетчик]);
}
Диапазон = AvgRange10;
fastEMAnow = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i);
fastEMAprevious = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i 1);
fastEMAafter = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);
slowerEMAnow = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i);
slowerEMAprevious = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i 1);
slowerEMAafter = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);
if ((быстрееEMAnow gt, slowerEMAnow) (быстрееEMAprevious lt; slowerEMAprevious) (быстрееEMAafter gt; slowerEMAafter)) {
CrossUp [i] = Low [i] - Диапазон * 0,5;
}
else if ((более быстрыйEMAnow lt; slowerEMAnow) (более быстрыйEMAprevious gt; slowerEMAprevious) (быстрее EMAafter lt; slowerEMAafter)) {
CrossDown [i] = High [i] Range * 0.5;
}
if (SoundON == true i == 1 CrossUp [i]] CrossDown [i] alertTag! = Time [0]) {
Предупреждение (EMA Cross Trend going Down, Symbol (),, Period ());
alertTag = Время [0];
}
if (SoundON == true i == 1 CrossUp [i] lt; CrossDown [i] alertTag! = Time [0]) {
Предупреждение (EMA Cross Trend going Up, Symbol (),, Period ());
alertTag = Время [0];
}
}
Возвращение (0);
}
Вот пример того, что я пытаюсь сделать:
двойной EMA = iCustom (NULL, 0, ESI Crossover Signal, 5,13, false, 0,0);
Печать (EMA);
Вот код indy:
// ----------------------------------------------- -------------------
//| EMA-Crossover_Signal.mq4 |
//| Copyright © 2005, Джейсон Робинсон (jnrtrading) |
//|
http://www.jnrtading.co.uk|
// ----------------------------------------------- -------------------
/*
------------------------------------------------- -----------------
| Позволяет ввести два периода ema, и он отобразит вас на |
| Какой момент они пересекли. Это более полезно для более коротких |
| периоды, которые затушевываются барамиподсвечниками и когда |
| уровень масштабирования отсутствует. Также позволяет вам удалить emas |
| из графика. (emas изначально установлены на 5 и 6) |
------------------------------------------------- -----------------
*
#property copyright Copyright © 2005, Джейсон Робинсон (jnrtrading)
#property link http://www.jnrtrading.co.uk
#property indior_chart_window
#property indior_buffers 2
#property indior_color1 SeaGreen
#property indior_color2 Красный
double CrossUp [];
double CrossDown [];
extern int FasterEMA = 5;
extern int SlowerEMA = 13;
extern bool SoundON = false;
double alertTag;
двойной контроль = 2147483647;
// ----------------------------------------------- -------------------
//| Пользовательская функция инициализации индикатора |
// ----------------------------------------------- -------------------
int init ()
{
//---- индикаторы
SetIndexStyle (0, DRAW_ARROW, EMPTY, 3);
SetIndexArrow (0, 233);
SetIndexBuffer (0, CrossUp);
SetIndexStyle (1, DRAW_ARROW, EMPTY, 3);
SetIndexArrow (1, 234);
SetIndexBuffer (1, CrossDown);
//----
Возвращение (0);
}
// ----------------------------------------------- -------------------
//| Пользовательская функция деинициализации индикатора |
// ----------------------------------------------- -------------------
int deinit ()
{
//----
//----
Возвращение (0);
}
// ----------------------------------------------- -------------------
//| Пользовательская функция итерации индикатора |
// ----------------------------------------------- -------------------
int start () {
int limit, i, counter;
double speedEMAnow, slowerEMAnow, быстрееEMAprevious, slowerEMArerevious, fastEMAafter, slowerEMAafter;
double Range, AvgRange;
int counted_bars = IndiorCounted ();
//---- проверить возможные ошибки
if (counted_barslt; 0) return (-1);
//---- последний подсчитанный балл будет пересчитан
if (counted_barsgt; 0) counted_bars--;
предел = Bars-counted_bars;
для (i = 0; i lt; = limit; i ) {
Счетчик = я;
Диапазон = 0;
AvgRange = 0;
for (counter = i; counterlt; = i 9; counter )
{
AvgRange = AvgRange MathAbs (высокий [счетчик] -Low [счетчик]);
}
Диапазон = AvgRange10;
fastEMAnow = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i);
fastEMAprevious = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i 1);
fastEMAafter = iMA (NULL, 0, FasterEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);
slowerEMAnow = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i);
slowerEMAprevious = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i 1);
slowerEMAafter = iMA (NULL, 0, SlowerEMA, 0, MODE_EMA, PRICE_CLOSE, i-1);
if ((быстрееEMAnow gt, slowerEMAnow) (быстрееEMAprevious lt; slowerEMAprevious) (быстрееEMAafter gt; slowerEMAafter)) {
CrossUp [i] = Low [i] - Диапазон * 0,5;
}
else if ((более быстрыйEMAnow lt; slowerEMAnow) (более быстрыйEMAprevious gt; slowerEMAprevious) (быстрее EMAafter lt; slowerEMAafter)) {
CrossDown [i] = High [i] Range * 0.5;
}
if (SoundON == true i == 1 CrossUp [i]] CrossDown [i] alertTag! = Time [0]) {
Предупреждение (EMA Cross Trend going Down, Symbol (),, Period ());
alertTag = Время [0];
}
if (SoundON == true i == 1 CrossUp [i] lt; CrossDown [i] alertTag! = Time [0]) {
Предупреждение (EMA Cross Trend going Up, Symbol (),, Period ());
alertTag = Время [0];
}
}
Возвращение (0);
}