Если есть попытка написания эксперта - должен быть и код, который
не работает. Без кода Вам никто не поможет.
Rosh:
Если есть попытка написания эксперта - должен быть и код, который не работает. Без кода Вам никто не поможет.
Вот пример... На этом куске я проверял правильность отработки:Если есть попытка написания эксперта - должен быть и код, который не работает. Без кода Вам никто не поможет.
double PID[100]; double MAS; //ArraySetAsSeries(PID,true); //---- for (int i=0; i<=100; i++) { //ArrayResize(PID,ArraySize(PID)+1); PID[i]=iMA(NULL,0,35,0,0,0,0); MAS=iMAOnArray(PID,0,45,3,MODE_EMA,0); } Comment(DoubleToStr(PID[0],4)+"n"+DoubleToStr(MAS,4));
1. Надо делать 2 разных цикла: первый для заполнения буфера значениями
SMA, второй для расчёта EMA на SMA
2. Не забывать об индексации - прямой и обратной.
3. А что это за запись в цикле такая? PID[i]=iMA(NULL,0,35,0,0,0,0); Вы все элементы массива PID заполняете одним и тем
же значением
4. То же что и 3, только относительно массива MAS
stringo:
До этого аробовал так:1. Надо делать 2 разных цикла: первый для заполнения буфера значениями
SMA, второй для расчёта EMA на SMA
2. Не забывать об индексации - прямой и обратной.
double PID[100]; double MAS; ArraySetAsSeries(PID,true); //---- for (int i=0; i<=100; i++) { //ArrayResize(PID,ArraySize(PID)+1); PID[i]=iMA(NULL,0,35,0,0,0,0); } for (int i=0; i<=100; i++) { MAS=iMAOnArray(PID,0,45,3,MODE_EMA,0); } Comment(DoubleToStr(PID[0],4)+"n"+DoubleToStr(MAS,4));Результат тоже не очень...
Я ещё пару пунктов добавил - 3 и 4
PID[i]=iMA(NULL,0,35,0,0,0,i);Надо так? Но так я тоже пробовал.
Ну а вот это что такое?
for (int i=0; i<=100; i++) { MAS=iMAOnArray(PID,0,45,3,MODE_EMA,0); } Comment(DoubleToStr(PID[0],4)+"\n"+DoubleToStr(MAS,4));
Попробуйте хотя бы вот так
for (i=0; i<=100; i++) { MAS=iMAOnArray(PID,0,45,3,MODE_EMA,i); Print(DoubleToStr(PID[i],4)," ",DoubleToStr(MAS,4)); }
double PID[100]; double MAS; ArraySetAsSeries(PID,true); //---- for (int i=0; i<=100; i++) { //ArrayResize(PID,ArraySize(PID)+1); PID[i]=iMA(NULL,0,35,0,0,0,i); } for (i=0; i<=100; i++) { MAS=iMAOnArray(PID,0,45,0,MODE_EMA,0); } Comment(DoubleToStr(PID[0],4)+"\n"+DoubleToStr(MAS,4));Кажись победил...
Да точно... Всем спасибо. Последний мой пост - это правильный код.
..
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В общем проблема. Нужно для эксперта расчитать SMA по Close и на его основе расчитать EMA со сдвигом -3.
Пробовал iMAOnArray, но что-то не клеется: SMA расчитывается нормально, а EMA выдает лабуду даже с нулевым сдвигом. Может что посоветуете?