@@ -137,100 +137,92 @@ class Stg_MA_Trend : public Strategy {
137137 IndiAMAParams _indi_params (::MA_Trend_Indi_AMA_InpPeriodAMA , ::MA_Trend_Indi_AMA_InpFastPeriodEMA ,
138138 ::MA_Trend_Indi_AMA_InpSlowPeriodEMA , ::MA_Trend_Indi_AMA_InpShiftAMA , PRICE_TYPICAL ,
139139 ::MA_Trend_Indi_AMA_Shift );
140- _indi_params .SetDataSourceType (::MA_Trend_Indi_AMA_SourceType );
141140 _indi_params .SetTf (Get <ENUM_TIMEFRAMES >(STRAT_PARAM_TF ));
142- SetIndicator (new Indi_AMA (_indi_params ), ::MA_Trend_Type );
141+ SetIndicator (new Indi_AMA (_indi_params , :: MA_Trend_Indi_AMA_SourceType ), ::MA_Trend_Type );
143142 _indi_params .SetTf (PERIOD_D1 );
144- SetIndicator (new Indi_AMA (_indi_params ), ::MA_Trend_Type + 1 );
143+ SetIndicator (new Indi_AMA (_indi_params , :: MA_Trend_Indi_AMA_SourceType ), ::MA_Trend_Type + 1 );
145144 break ;
146145 }
147146 case STG_MA_TREND_TYPE_DEMA : // DEMA
148147 {
149148 IndiDEIndiMAParams _indi_params (::MA_Trend_Indi_DEMA_Period , ::MA_Trend_Indi_DEMA_MA_Shift ,
150149 ::MA_Trend_Indi_DEMA_Applied_Price , ::MA_Trend_Indi_DEMA_Shift );
151- _indi_params .SetDataSourceType (::MA_Trend_Indi_DEMA_SourceType );
152150 _indi_params .SetTf (Get <ENUM_TIMEFRAMES >(STRAT_PARAM_TF ));
153- SetIndicator (new Indi_DEMA (_indi_params ), ::MA_Trend_Type );
151+ SetIndicator (new Indi_DEMA (_indi_params , :: MA_Trend_Indi_DEMA_SourceType ), ::MA_Trend_Type );
154152 _indi_params .SetTf (PERIOD_D1 );
155- SetIndicator (new Indi_DEMA (_indi_params ), ::MA_Trend_Type + 1 );
153+ SetIndicator (new Indi_DEMA (_indi_params , :: MA_Trend_Indi_DEMA_SourceType ), ::MA_Trend_Type + 1 );
156154 break ;
157155 }
158156 case STG_MA_TREND_TYPE_FRAMA : // FrAMA
159157 {
160158 IndiFrAIndiMAParams _indi_params (::MA_Trend_Indi_FrAMA_Period , ::MA_Trend_Indi_FrAMA_MA_Shift ,
161159 ::MA_Trend_Indi_FrAMA_Applied_Price , ::MA_Trend_Indi_FrAMA_Shift );
162- _indi_params .SetDataSourceType (::MA_Trend_Indi_FrAMA_SourceType );
163160 _indi_params .SetTf (Get <ENUM_TIMEFRAMES >(STRAT_PARAM_TF ));
164- SetIndicator (new Indi_FrAMA (_indi_params ), ::MA_Trend_Type );
161+ SetIndicator (new Indi_FrAMA (_indi_params , :: MA_Trend_Indi_FrAMA_SourceType ), ::MA_Trend_Type );
165162 _indi_params .SetTf (PERIOD_D1 );
166- SetIndicator (new Indi_FrAMA (_indi_params ), ::MA_Trend_Type + 1 );
163+ SetIndicator (new Indi_FrAMA (_indi_params , :: MA_Trend_Indi_FrAMA_SourceType ), ::MA_Trend_Type + 1 );
167164 break ;
168165 }
169166 case STG_MA_TREND_TYPE_ICHIMOKU : // Ichimoku
170167 {
171168 IndiIchimokuParams _indi_params (::MA_Trend_Indi_Ichimoku_Period_Tenkan_Sen ,
172169 ::MA_Trend_Indi_Ichimoku_Period_Kijun_Sen ,
173170 ::MA_Trend_Indi_Ichimoku_Period_Senkou_Span_B , ::MA_Trend_Indi_Ichimoku_Shift );
174- _indi_params .SetDataSourceType (::MA_Trend_Indi_Ichimoku_SourceType );
175171 _indi_params .SetTf (Get <ENUM_TIMEFRAMES >(STRAT_PARAM_TF ));
176- SetIndicator (new Indi_Ichimoku (_indi_params ), ::MA_Trend_Type );
172+ SetIndicator (new Indi_Ichimoku (_indi_params , :: MA_Trend_Indi_Ichimoku_SourceType ), ::MA_Trend_Type );
177173 _indi_params .SetTf (PERIOD_D1 );
178- SetIndicator (new Indi_Ichimoku (_indi_params ), ::MA_Trend_Type + 1 );
174+ SetIndicator (new Indi_Ichimoku (_indi_params , :: MA_Trend_Indi_Ichimoku_SourceType ), ::MA_Trend_Type + 1 );
179175 break ;
180176 }
181177 case STG_MA_TREND_TYPE_MA : // MA
182178 {
183179 IndiMAParams _indi_params (::MA_Trend_Indi_MA_Period , ::MA_Trend_Indi_MA_MA_Shift , ::MA_Trend_Indi_MA_Method ,
184180 ::MA_Trend_Indi_MA_Applied_Price , ::MA_Trend_Indi_MA_Shift );
185- _indi_params . SetDataSourceType (:: MA_Trend_Indi_MA_SourceType );
181+
186182 _indi_params .SetTf (Get <ENUM_TIMEFRAMES >(STRAT_PARAM_TF ));
187- SetIndicator (new Indi_MA (_indi_params ), ::MA_Trend_Type );
183+ SetIndicator (new Indi_MA (_indi_params , :: MA_Trend_Indi_MA_SourceType ), ::MA_Trend_Type );
188184 _indi_params .SetTf (PERIOD_D1 );
189- SetIndicator (new Indi_MA (_indi_params ), ::MA_Trend_Type + 1 );
185+ SetIndicator (new Indi_MA (_indi_params , :: MA_Trend_Indi_MA_SourceType ), ::MA_Trend_Type + 1 );
190186 break ;
191187 }
192188 case STG_MA_TREND_TYPE_PRICE_CHANNEL : // Price Channel
193189 {
194190 IndiPriceChannelParams _indi_params (::MA_Trend_Indi_PriceChannel_Period , ::MA_Trend_Indi_PriceChannel_Shift );
195- _indi_params .SetDataSourceType (::MA_Trend_Indi_PriceChannel_SourceType );
196191 _indi_params .SetTf (Get <ENUM_TIMEFRAMES >(STRAT_PARAM_TF ));
197- SetIndicator (new Indi_PriceChannel (_indi_params ), ::MA_Trend_Type );
192+ SetIndicator (new Indi_PriceChannel (_indi_params , :: MA_Trend_Indi_PriceChannel_SourceType ), ::MA_Trend_Type );
198193 _indi_params .SetTf (PERIOD_D1 );
199- SetIndicator (new Indi_PriceChannel (_indi_params ), ::MA_Trend_Type + 1 );
194+ SetIndicator (new Indi_PriceChannel (_indi_params , :: MA_Trend_Indi_PriceChannel_SourceType ), ::MA_Trend_Type + 1 );
200195 break ;
201196 }
202197 case STG_MA_TREND_TYPE_SAR : // SAR
203198 {
204199 IndiSARParams _indi_params (::MA_Trend_Indi_SAR_Step , ::MA_Trend_Indi_SAR_Maximum_Stop ,
205200 ::MA_Trend_Indi_SAR_Shift );
206- _indi_params .SetDataSourceType (::MA_Trend_Indi_SAR_SourceType );
207201 _indi_params .SetTf (Get <ENUM_TIMEFRAMES >(STRAT_PARAM_TF ));
208- SetIndicator (new Indi_SAR (_indi_params ), ::MA_Trend_Type );
202+ SetIndicator (new Indi_SAR (_indi_params , :: MA_Trend_Indi_SAR_SourceType ), ::MA_Trend_Type );
209203 _indi_params .SetTf (PERIOD_D1 );
210- SetIndicator (new Indi_SAR (_indi_params ), ::MA_Trend_Type + 1 );
204+ SetIndicator (new Indi_SAR (_indi_params , :: MA_Trend_Indi_SAR_SourceType ), ::MA_Trend_Type + 1 );
211205 break ;
212206 }
213207 case STG_MA_TREND_TYPE_TEMA : // TEMA
214208 {
215209 IndiTEMAParams _indi_params (::MA_Trend_Indi_TEMA_Period , ::MA_Trend_Indi_TEMA_MA_Shift ,
216210 ::MA_Trend_Indi_TEMA_Applied_Price , ::MA_Trend_Indi_TEMA_Shift );
217- _indi_params .SetDataSourceType (::MA_Trend_Indi_TEMA_SourceType );
218211 _indi_params .SetTf (Get <ENUM_TIMEFRAMES >(STRAT_PARAM_TF ));
219- SetIndicator (new Indi_TEMA (_indi_params ), ::MA_Trend_Type );
212+ SetIndicator (new Indi_TEMA (_indi_params , :: MA_Trend_Indi_TEMA_SourceType ), ::MA_Trend_Type );
220213 _indi_params .SetTf (PERIOD_D1 );
221- SetIndicator (new Indi_TEMA (_indi_params ), ::MA_Trend_Type + 1 );
214+ SetIndicator (new Indi_TEMA (_indi_params , :: MA_Trend_Indi_TEMA_SourceType ), ::MA_Trend_Type + 1 );
222215 break ;
223216 }
224217 case STG_MA_TREND_TYPE_VIDYA : // VIDYA
225218 {
226219 IndiVIDYAParams _indi_params (::MA_Trend_Indi_VIDYA_Period , ::MA_Trend_Indi_VIDYA_MA_Period ,
227220 ::MA_Trend_Indi_VIDYA_MA_Shift , ::MA_Trend_Indi_VIDYA_Applied_Price ,
228221 ::MA_Trend_Indi_VIDYA_Shift );
229- _indi_params .SetDataSourceType (::MA_Trend_Indi_VIDYA_SourceType );
230222 _indi_params .SetTf (Get <ENUM_TIMEFRAMES >(STRAT_PARAM_TF ));
231- SetIndicator (new Indi_VIDYA (_indi_params ), ::MA_Trend_Type );
223+ SetIndicator (new Indi_VIDYA (_indi_params , :: MA_Trend_Indi_VIDYA_SourceType ), ::MA_Trend_Type );
232224 _indi_params .SetTf (PERIOD_D1 );
233- SetIndicator (new Indi_VIDYA (_indi_params ), ::MA_Trend_Type + 1 );
225+ SetIndicator (new Indi_VIDYA (_indi_params , :: MA_Trend_Indi_VIDYA_SourceType ), ::MA_Trend_Type + 1 );
234226 break ;
235227 }
236228 case STG_MA_TREND_TYPE_0_NONE : // (None)
@@ -254,8 +246,8 @@ class Stg_MA_Trend : public Strategy {
254246 int _direction = Order ::OrderDirection (_cmd , _mode );
255247 uint _ishift = 0 ;
256248 Chart *_chart = trade .GetChart ();
257- IndicatorBase *_indi = GetIndicator (::MA_Trend_Type );
258- IndicatorBase *_indi_d1 = GetIndicator (::MA_Trend_Type + 1 );
249+ IndicatorData *_indi = GetIndicator (::MA_Trend_Type );
250+ IndicatorData *_indi_d1 = GetIndicator (::MA_Trend_Type + 1 );
259251 float _level_pips = (float )(_level * _chart .GetPipSize ());
260252 float _ma_diff = (float )fabs (_indi_d1 [_ishift ][0 ] - _indi [_ishift ][0 ]);
261253
@@ -275,8 +267,8 @@ class Stg_MA_Trend : public Strategy {
275267 */
276268 bool SignalOpen (ENUM_ORDER_TYPE _cmd , int _method = 0 , float _level = 0 .0f, int _shift = 0 ) {
277269 Chart *_chart = trade .GetChart ();
278- IndicatorBase *_indi = GetIndicator (::MA_Trend_Type );
279- IndicatorBase *_indi_d1 = GetIndicator (::MA_Trend_Type + 1 );
270+ IndicatorData *_indi = GetIndicator (::MA_Trend_Type );
271+ IndicatorData *_indi_d1 = GetIndicator (::MA_Trend_Type + 1 );
280272 uint _ishift = _shift ; // @todo: _indi.GetShift();
281273 // bool _result = _indi.GetFlag(INDI_ENTRY_FLAG_IS_VALID, _shift); // @fixme
282274 bool _result = true ;
0 commit comments