Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
//+------------------------------------------------------------------+ //| My_Momentum.mq4 | //| komposter | //| komposterius@mail.ru | //+------------------------------------------------------------------+ #property copyright "komposter" #property link "komposterius@mail.ru" #property indicator_separate_window #property indicator_buffers 2 #property indicator_color1 DodgerBlue #property indicator_color2 Red extern string _Symbol = "0"; extern int TimeFrame = 0; extern int MomentumPeriod = 7; extern int Applied_Price = PRICE_MEDIAN; double buf1[]; double buf2[]; int init() { if ( _Symbol == "0" ) { _Symbol = Symbol(); } if ( TimeFrame == 0 ) { TimeFrame = Period(); } string TimeFrame_str; switch ( TimeFrame ) { case 1: TimeFrame_str = "M1"; break; case 5: TimeFrame_str = "M5"; break; case 15: TimeFrame_str = "M15"; break; case 30: TimeFrame_str = "M30"; break; case 60: TimeFrame_str = "H1"; break; case 240: TimeFrame_str = "H4"; break; case 1440: TimeFrame_str = "Daily"; break; case 10080: TimeFrame_str = "Weekly"; break; } IndicatorShortName( "My_Momentum (" + MomentumPeriod + ") - " + _Symbol + ", " + TimeFrame_str + " - " ); IndicatorDigits ( MarketInfo( _Symbol, MODE_DIGITS ) ); SetIndexBuffer( 0 , buf1 ); SetIndexStyle ( 0 , DRAW_LINE , STYLE_SOLID , 1 ); SetIndexDrawBegin( 0 , MomentumPeriod ); SetIndexLabel( 0 , "Momentum"); SetIndexBuffer( 1 , buf2 ); SetIndexStyle ( 1 , DRAW_LINE , STYLE_SOLID , 2 ); SetIndexDrawBegin( 1 , MomentumPeriod+13 ); SetIndexLabel( 1 , "MA"); return(0); } int start() { if ( Bars <= MomentumPeriod ) { return(0); } int counted_bars = IndicatorCounted(); if ( counted_bars < 0 ) return(-1); if ( counted_bars > 0 ) counted_bars -- ; int limit = Bars - MomentumPeriod - 1 - 13; if ( counted_bars >= MomentumPeriod ) { limit = Bars - counted_bars - 1 - 13; } double high[], low[], close[], open[]; ArrayCopySeries ( high, MODE_HIGH, _Symbol, TimeFrame ); ArrayCopySeries ( low, MODE_LOW, _Symbol, TimeFrame ); ArrayCopySeries ( close, MODE_CLOSE, _Symbol, TimeFrame ); ArrayCopySeries ( open, MODE_OPEN, _Symbol, TimeFrame ); double _Price1, _Price2; for ( int i = limit; i >= 0; i -- ) { switch ( Applied_Price ) { case 0: _Price1 = close[i]; _Price2 = close[i + MomentumPeriod]; break; case 1: _Price1 = open[i]; _Price2 = open[i + MomentumPeriod]; break; case 2: _Price1 = high[i]; _Price2 = high[i + MomentumPeriod]; break; case 3: _Price1 = low[i]; _Price2 = low[i + MomentumPeriod]; break; case 4: _Price1 = ( high[i] + low[i] )/2; _Price2 = ( high[i + MomentumPeriod] + low[i + MomentumPeriod] )/2; break; case 5: _Price1 = ( high[i] + low[i] + close[i] )/3; _Price2 = ( high[i + MomentumPeriod] + low[i + MomentumPeriod] + close[i + MomentumPeriod] )/3; break; case 6: _Price1 = ( high[i] + low[i] + close[i] + close[i] )/4; _Price2 = ( high[i + MomentumPeriod] + low[i + MomentumPeriod] + close[i + MomentumPeriod] + close[i + MomentumPeriod] )/4; break; } buf1[i] = _Price1 - _Price2; buf2[i] = iMAOnArray ( buf1, Bars - counted_bars, 13, 0, MODE_EMA, i ); } return(0); }строится ЕМА (13) на моментум. Полностью совпадает с настоящей :) т.е. метаквотовской
Как то не могу уложить в голове. Может мне шаблоны мешают...
есстественно, будут жраться ресурсы
зы: посмотрел, оказывается у меня так же =))). Обьявление надо вынести из цикла, оставить только ArrayCopySeries...
Именно об этом и была речь. Значит я прав. Еще раз спасибо!
Перепробавл все пришедшие мне в голову варианты! неработает! будьте добры, исправьте пример! я понимаю что там изменить надо совсем немного, но увы незнаю как и что... информации на эту тему тоже не удалось найти. То описание которое есть, можно сказать что его нет... буду очень признателен, и думаю что не только я...
Тупо скопировал твой индикатор, скомпилировал, но МТ4 отказыватеся его вешать. Он его за эксперта принимает.
Так что , выкладывай полностью, а то неохота самому извращаться, чтобы он заработал. Думал помочь.
Свой вопрос по индикатору я полностью решил с помощью массивов, работает красиво. Всем спасибо.
Для того, чтобы программа считалась пользовательским индикатором необходимо наличие одного из двух дефиниций:
#property indicator_chart_window // индикатор рисуется в главном окне графика
или
#property indicator_separate_window // индикатор рисуется в отдельном окне
Да там вообще много интересного написано )))
"Особенности написания Пользовательских Индикаторов"
#property indicator_chart_window // индикатор рисуется в главном окне графика
или
#property indicator_separate_window // индикатор рисуется в отдельном окне
а вот как сделать что бы эксперт расчитывал тоже самое что и индикатор у меня не выходит!