Auftrag beendet
Spezifikation
Название: Procent_3MA
Необходим осциллятор по 3 МА с диапазоном от 0% до 100%.
Требование:
1. Каждая МА должна рассчитываться независимо друг от друга (3 iMA) и легко заменима в коде на пользовательский индикатор;
2. Каждая МА имеет полный диапазон настроек в том числе тайм фрейма с которого она будет брать расчет;
Используются следующие пользовательские переменные:
maH - настраиваемая ma (это не пользовательская переменная);
TFmaH - с какого окна берутся показатели для расчета H средней ;
PmaH - период H средней;
PRICEmaH - цена по которой производится расчет H средней;
TYPEmaH - метод расчета H средней;
SHIFTmaH - сдвиг H средней;
maL - настраиваемая ma (это не пользовательская переменная);
TFmaL - с какого окна берутся показатели для расчета L средней ;
PmaL - период L средней;
PRICEmaL - цена по которой производится расчет L средней;
TYPEmaL - метод расчета L средней;
SHIFTmaL - сдвиг L средней;
maC - настраиваемая ma (это не пользовательская переменная);
TFmaC - с какого окна берутся показатели для расчета C средней ;
PmaC - период C средней;
PRICEmaC - цена по которой производится расчет C средней;
TYPEmaC - метод расчета C средней;
SHIFTmaC - сдвиг C средней;
pipsXH - величина пунктов от ma для расчета коэффициента, на который будет скорректирован показатель maH;
pipsXL - величина пунктов от ma для расчета коэффициента, на который будет скорректирован показатель maL;
pp - точка точности - сколько знаков после запятой учитывать при расчете индикатора;
Алгоритм работы:
0. proc – буфер, который и рисуем в виде линии
1. Если maH+pipsXH>maL-pipsXL, то UP=maH+pipsXH DOWN=maL-pipsXL, иначе UP=maL-pipsXL DOWN=maH+pipsXH
2. Delta=UP-DOWN
4. Kproc=Delta/100
5. Если UP>maC<DOWN то proc=(UP-maC)/Kproc*100, иначе если UP<maC, то proc=100 и если DOWN>maC то proc=0
6. NormalizeDouble (proc,pp)