Очень интересно! Хорошо бы добавить в код shortname, чтобы можно было использовать в эксперте! Тогда можно будет судить о практическом применении и для автотрейдинга! Ставлю +10 авансом! Спасибо за свежую струю в проверенных и не всегда верных МАшках!
Добавил shortname "ForsesMom" и периоды с bool вывел в extern, всё работает, буду пробовать с экспертом. Надеюсь, что-нибудь вырисуется!
Спасибо за коментарий, не поясните что такое shortname? В справке вроде этой... http://docs.mql4.com/ru/customind/IndicatorShortName не слишком понятно зачем оно надо? Интуитивно я бы предположил, что для того чтобы вызывать индикатор строкой вроде... iForsesMom(some), но интуиция это одно...
Еще хотелось бы знать что вы думаете о сглаживании результата? На светлом рисунке выше видна пара моментов, когда финальная индикация выходит за пределы зоны Флета совсем чуть-чуть...
Я обдумывал такой вариант...
extern int smoothDegree = 1;
//---- внутри функции start() при изменении буферов
double result = ExtMapBuffer1[i] + ExtMapBuffer2[i] + ExtMapBuffer3[i];
if(result > ExtMapBuffer1[ i+1]){
result = result - 0.0001 * smoothDegree;
}
if(result < ExtMapBuffer1[ i+1]){
result = result + 0.0001 * smoothDegree;
}
ExtMapBuffer4[i] = result;
Такой простой способ сглаживания пришел мне в голову первым, но боюсь при больших значениях степени сглаживания, может возникать Инверсия графика (потому как такое сглаживание не учитывает мощность изменения и просто чуток корректирует значение)
Смотрите, это сейчас ваш init() у меня:
//+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ double bar0 = 0; double bar1 = 0; int init() { string short_name; //---- indicators SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(0,ExtMapBuffer1); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexBuffer(1,ExtMapBuffer2); SetIndexStyle(2,DRAW_HISTOGRAM); SetIndexBuffer(2,ExtMapBuffer3); SetIndexStyle(3,DRAW_LINE,EMPTY,2); SetIndexBuffer(3,ExtMapBuffer4); //---- short_name="ForsesMom("+Fast+","+Slow+","+Tren+")"; IndicatorShortName(short_name); SetIndexLabel(3,short_name); //---- return(0); } //И далее соответственно поменял.Поигрался, годится только для глаз! Для эксперта не лучше, чем подогнанная МАшка! В любой момент подводёт! Но надо пытаться, искать! Сам процесс, уже хорошо! Может, когда-нибудь найдём тут "золотую середину"!
Спасибо )
Вообще не рассчитывал особенно, что можно будет на основе этого целый эксперт накрутить, я пару интересных Паттернов в свечах заметил, и весьма надежных, но против Тренда все равно не попрешь, так что может мне еще и повезет с комбинацией этих идей )))
Спасибо за коментарий, не поясните что такое shortname? В справке вроде этой... http://docs.mql4.com/ru/customind/IndicatorShortName не слишком понятно зачем оно надо? Интуитивно я бы предположил, что для того чтобы вызывать индикатор строкой вроде... iForsesMom(some), но интуиция это одно...
Еще хотелось бы знать что вы думаете о сглаживании результата? На светлом рисунке выше видна пара моментов, когда финальная индикация выходит за пределы зоны Флета совсем чуть-чуть...
Я обдумывал такой вариант...
extern int smoothDegree = 1;
//---- внутри функции start() при изменении буферов
double result = ExtMapBuffer1[i] + ExtMapBuffer2[i] + ExtMapBuffer3[i];
if(result > ExtMapBuffer1[ i+1]){
result = result - 0.0001 * smoothDegree;
}
if(result < ExtMapBuffer1[ i+1]){
result = result + 0.0001 * smoothDegree;
}
ExtMapBuffer4[i] = result;
Такой простой способ сглаживания пришел мне в голову первым, но боюсь при больших значениях степени сглаживания, может возникать Инверсия графика (потому как такое сглаживание не учитывает мощность изменения и просто чуток корректирует значение)
Такой способ давно заездили и выбросили как бесполезную вещь.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
ForsesMomentum:
Author: qwer643