Чтобы проверить правильность рассуждений и выводов, напишем простенький советник, который сделает вызов "нашего" индикатора и выведет результаты расчётов на экран:
[code]//+------------------------------------------------------------------+
//| 222222222222222222222222222.mq4 |
//| 4x_trader@bk.ru |
//| 4x_trader@bk.ru |
//+------------------------------------------------------------------+
#property copyright "4x_trader@bk.ru"
#property link "4x_trader@bk.ru"
extern int digPlus = 2; //это чтобы убедиться, что причина расхождения показаний кроется в округлении чисел...
extern int intTF = PERIOD_H1;// таймфрейм, на который якобы установлен индикатор - должен быть меньше или равен strTimeFrame
extern string ind_Name = "FastTMALine";// имя индикатора
//========= параметры индикатора по порядку
extern string strTimeFrame = "H4";//1 можно написать "240" - внешний параметр индикатора, значения которого якобы он показывает...
extern int TMAPeriod = 20;//2
extern int Price = PRICE_CLOSE;//3
extern double ATRMultiplier = 2.0;//4
extern int ATRPeriod = 100;//5
extern double TrendThreshold = 0.5;//6
extern bool ShowCenterLine = true;//7
extern bool alertsOn = false;//8
extern bool alertsMessage = false;//9
extern bool alertsSound = false;//10
extern bool alertsEmail = false;//11
extern bool MoveEndpointEveryTick = false;//12
extern int MaxBarsBack = 5000;//13
double tma_middle, tma_up, tma_down, tma_middle1, tma_up1, tma_dn1, tma_middle2, tma_up2, tma_dn2;
//+------------------------------------------------------------------+
int init()
{
Comment("Ждём очередного тика ...");
return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
Comment("");
return(0);
}
//+------------------------------------------------------------------+
int start()
{
//---- теперь сделаем расчёт и вывод на экран значений пользовательского индикатора, вызванного тремя способами:
// первый - индикатор считается на ТФ, на котором установлен эксперт с расчётом значений старшего MTF = strTimeFrame
// средняя линия TMA - 0
tma_middle = iCustom(Symbol(), 0, ind_Name, strTimeFrame, 20, 0, 2.0, 100, 0.5, true, false, false, false, false, false, 5000, 0, 0);
// верхняя - 1
tma_up = iCustom(Symbol(), 0, ind_Name, strTimeFrame, 20, 0, 2.0, 100, 0.5, true, false, false, false, false, false, 5000, 1, 0);
// нижняя - 2
tma_down = iCustom(Symbol(), 0, ind_Name, strTimeFrame, 20, 0, 2.0, 100, 0.5, true, false, false, false, false, false, 5000, 2, 0);
//************ второй - предложенный мною вариант с передачей всех 13 внешних параметров:
tma_middle1 = iCustom(Symbol(), intTF, ind_Name, strTimeFrame, 20, 0, 2.0, 100, 0.5, true, false, false, false, false, false, 5000, 0, 0);
tma_up1 = iCustom(Symbol(), intTF, ind_Name, strTimeFrame, 20, 0, 2.0, 100, 0.5, true, false, false, false, false, false, 5000, 1, 0);
tma_dn1 = iCustom(Symbol(), intTF, ind_Name, strTimeFrame, 20, 0, 2.0, 100, 0.5, true, false, false, false, false, false, 5000, 2, 0);
//************ третий - сокращённый вариант с передачей только первых в списке параметров, остальные берутся по умолчанию из индикатора:
tma_middle2 = iCustom(Symbol(), intTF, ind_Name, strTimeFrame, 20, 0, 2.0, 100, 0.5, 0, 0);
tma_up2 = iCustom(Symbol(), intTF, ind_Name, strTimeFrame, 20, 0, 2.0, 100, 0.5, 1, 0);
tma_dn2 = iCustom(Symbol(), intTF, ind_Name, strTimeFrame, 20, 0, 2.0, 100, 0.5, 2, 0);
//************Выводим всё это на экран:
Comment( "Индикатор якобы повесили на ТФ=",intTF," минут, MTF индикатора = ", strTimeFrame,
"\n1: ",DoubleToStr(tma_middle, Digits+digPlus)," ; ",DoubleToStr(tma_up, Digits+digPlus)," ; ",DoubleToStr(tma_down, Digits+digPlus)," ; Bid=",DoubleToStr(Bid, Digits)," ; Ask=",DoubleToStr(Ask, Digits),
"\n2: ",DoubleToStr(tma_middle1, Digits+digPlus)," ; ",DoubleToStr(tma_up1, Digits+digPlus)," ; ",DoubleToStr(tma_dn1, Digits+digPlus),
"\n3: ",DoubleToStr(tma_middle2, Digits+digPlus)," ; ",DoubleToStr(tma_up2, Digits+digPlus)," ; ",DoubleToStr(tma_dn2, Digits+digPlus)
);
return(0);
}
//+------------------------------------------------------------------+[/code]
Продолжение следует...))