Давай, посмотрим повнимательнее...
В индикаторе:
extern string TimeFrame = "Current";//1extern int TMAPeriod = 56;//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 = false;//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 = iCustom(Symbol(),
time_frame, "FastTMALine",
240, 20, 0, 2.0, 100, 0.5, true, false, false, false, false, false, 5000, 0, 0);
Ты задаёшь 13 внешних переменных, это кажется правильным, но делаешь одну ошибку - первая переменная
TimeFrame должна быть string, а ты пишешь число 240...
Как быть? Не надо здесь задавать таймфрейм вообще - оставь по умолчанию "Current", а таймфрейм для расчётов будет определяться
вторым параметром.Получится так:
double tma_middle = iCustom(Symbol(), 240, "FastTMALine", "Current", 20, 0, 2.0, 100, 0.5, true, false, false, false, false, false, 5000, 0, 0);Далее... Нет необходимости перечислять при вызове все 13 внешних переменных, если ты не намерен их изменять. По идее, можно не передавать параметры, не подлежащие изменению - они будут теми, что прописаны в индикаторе. Исключить можно начиная с последнего и до первого изменяемого, например:
double tma_middle = iCustom(Symbol(), 240, "FastTMALine", "Current", 20, 0, 2.0, 100, 0.5, true, false, false, false, false, false, 5000, 0, 0);Получим:
double tma_middle = iCustom(Symbol(), 240, "FastTMALine", "Current", 20, 0, 2.0, 100, 0.5, 0, 0);Последнее - ты уверен, что нужно работать со значениями индикатора на текущем баре? Это значение будет изменяться много раз... Лучше уж взять значение первого бара (ИМХО)
double tma_middle = iCustom(Symbol(), 240, "FastTMALine", "Current", 20, 0, 2.0, 100, 0.5, 0, 1);Для tma_up и tma_dn - по аналогии.
Напиши о результате.
Давай, посмотрим повнимательнее... [b]В индикаторе[/b]:
[b]extern [color=#FF0000]string[/color] TimeFrame = "Current";//1[/b]
extern int TMAPeriod = 56;//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 = false;//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
[b]В советнике[/b]:
double tma_middle = iCustom(Symbol(), [b][color=#0000FF]time_frame[/color][/b], "FastTMALine", [b][color=#FF0000]240[/color], 20, 0, 2.0, 100, 0.5, true, false, false, false, false, false, 5000[/b], 0, 0);
Ты задаёшь 13 внешних переменных, это кажется правильным, но делаешь одну ошибку - первая переменная [b][color=#FF0000]TimeFrame[/color][/b] должна быть string, а ты пишешь число 240...
Как быть? Не надо здесь задавать таймфрейм вообще - оставь по умолчанию "Current", а таймфрейм для расчётов будет определяться [b][color=#0000FF]вторым параметром[/color].[/b]
Получится так:
[b]double tma_middle = iCustom(Symbol(), 240, "FastTMALine", "Current", 20, 0, 2.0, 100, 0.5, true, false, false, false, false, false, 5000, 0, 0);[/b]
Далее... Нет необходимости перечислять при вызове все 13 внешних переменных, если ты не намерен их изменять. По идее, можно не передавать параметры, не подлежащие изменению - они будут теми, что прописаны в индикаторе. Исключить можно начиная с последнего и до первого изменяемого, например:
[b]double tma_middle = iCustom(Symbol(), 240, "FastTMALine", "Current", 20, 0, 2.0, 100, 0.5, [color=#FF0000][strike]true, false, false, false, false, false, 5000,[/strike][/color] 0, 0);[/b]
Получим:
[b]double tma_middle = iCustom(Symbol(), 240, "FastTMALine", "Current", 20, 0, 2.0, 100, 0.5, 0, 0);[/b]
Последнее - ты уверен, что нужно работать со значениями индикатора на текущем баре? Это значение будет изменяться много раз... Лучше уж взять значение первого бара (ИМХО)
[b]double tma_middle = iCustom(Symbol(), 240, "FastTMALine", "Current", 20, 0, 2.0, 100, 0.5, 0, [color=#FF0000]1[/color]);[/b]
Для tma_up и tma_dn - по аналогии.
Напиши о результате.