Skip to content

Commit

Permalink
Fixes compatibility with classes v3.001-dev
Browse files Browse the repository at this point in the history
  • Loading branch information
kenorb committed Oct 11, 2024
1 parent 58f2f24 commit 79323c9
Showing 1 changed file with 27 additions and 51 deletions.
78 changes: 27 additions & 51 deletions Stg_Oscillator_Range.mqh
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ class Stg_Oscillator_Range : public Strategy {
/**
* Validate soscillator_shifts's entry.
*/
bool IsValidEntry(IndicatorBase *_indi, int _shift = 0) {
bool IsValidEntry(IndicatorData *_indi, int _shift = 0) {
bool _result = true;
switch (Oscillator_Range_Type) {
/*
Expand Down Expand Up @@ -354,71 +354,63 @@ class Stg_Oscillator_Range : public Strategy {
case STG_OSCILLATOR_RANGE_TYPE_AC: // AC
{
IndiACParams _indi_params(::Oscillator_Range_Indi_AC_Shift);
_indi_params.SetDataSourceType(Oscillator_Range_Indi_AC_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_AC(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_AC(_indi_params, ::Oscillator_Range_Indi_AC_SourceType), ::Oscillator_Range_Type);
break;
}
case STG_OSCILLATOR_RANGE_TYPE_AD: // AD
{
IndiADParams _indi_params(::Oscillator_Range_Indi_AD_Shift);
_indi_params.SetDataSourceType(Oscillator_Range_Indi_AD_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_AD(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_AD(_indi_params, ::Oscillator_Range_Indi_AD_SourceType), ::Oscillator_Range_Type);
break;
}
case STG_OSCILLATOR_RANGE_TYPE_AO: // AO
{
IndiAOParams _indi_params(::Oscillator_Range_Indi_Awesome_Shift);
_indi_params.SetDataSourceType(Oscillator_Range_Indi_Awesome_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_AO(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_AO(_indi_params, ::Oscillator_Range_Indi_Awesome_SourceType), ::Oscillator_Range_Type);
break;
}
case STG_OSCILLATOR_RANGE_TYPE_ATR: // ATR
{
IndiATRParams _indi_params(::Oscillator_Range_Indi_ATR_Period, ::Oscillator_Range_Indi_ATR_Shift);
_indi_params.SetDataSourceType(Oscillator_Range_Indi_ATR_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_ATR(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_ATR(_indi_params, ::Oscillator_Range_Indi_ATR_SourceType), ::Oscillator_Range_Type);
break;
}
case STG_OSCILLATOR_RANGE_TYPE_BEARS: // Bears
{
IndiBearsPowerParams _indi_params(::Oscillator_Range_Indi_BearsPower_Period,
::Oscillator_Range_Indi_BearsPower_Applied_Price,
::Oscillator_Range_Indi_BearsPower_Shift);
_indi_params.SetDataSourceType(Oscillator_Range_Indi_BearsPower_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_BearsPower(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_BearsPower(_indi_params, ::Oscillator_Range_Indi_BearsPower_SourceType), ::Oscillator_Range_Type);
break;
}
case STG_OSCILLATOR_RANGE_TYPE_BULLS: // Bulls
{
IndiBullsPowerParams _indi_params(::Oscillator_Range_Indi_BullsPower_Period,
::Oscillator_Range_Indi_BullsPower_Applied_Price,
::Oscillator_Range_Indi_BullsPower_Shift);
_indi_params.SetDataSourceType(Oscillator_Range_Indi_BullsPower_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_BullsPower(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_BullsPower(_indi_params, ::Oscillator_Range_Indi_BullsPower_SourceType), ::Oscillator_Range_Type);
break;
}
case STG_OSCILLATOR_RANGE_TYPE_BWMFI: // BWMFI
{
IndiBWIndiMFIParams _indi_params(::Oscillator_Range_Indi_BWMFI_Shift);
_indi_params.SetDataSourceType(Oscillator_Range_Indi_BWMFI_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_BWMFI(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_BWMFI(_indi_params, ::Oscillator_Range_Indi_BWMFI_SourceType), ::Oscillator_Range_Type);
break;
}
*/
case STG_OSCILLATOR_RANGE_TYPE_CCI: // CCI
{
IndiCCIParams _indi_params(::Oscillator_Range_Indi_CCI_Period, ::Oscillator_Range_Indi_CCI_Applied_Price,
::Oscillator_Range_Indi_CCI_Shift);
_indi_params.SetDataSourceType(Oscillator_Range_Indi_CCI_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_CCI(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_CCI(_indi_params, ::Oscillator_Range_Indi_CCI_SourceType), ::Oscillator_Range_Type);
break;
}
/*
Expand All @@ -427,84 +419,75 @@ class Stg_Oscillator_Range : public Strategy {
IndiCHOParams _indi_params(::Oscillator_Range_Indi_CHO_InpFastMA, ::Oscillator_Range_Indi_CHO_InpSlowMA,
::Oscillator_Range_Indi_CHO_InpSmoothMethod,
::Oscillator_Range_Indi_CHO_InpVolumeType, ::Oscillator_Range_Indi_CHO_Shift);
_indi_params.SetDataSourceType(::Oscillator_Range_Indi_CHO_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_CHO(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_CHO(_indi_params, ::Oscillator_Range_Indi_CHO_SourceType), ::Oscillator_Range_Type);
break;
}
case STG_OSCILLATOR_RANGE_TYPE_CHV: // Chaikin Volatility (CHV)
{
IndiCHVParams _indi_params(::Oscillator_Range_Indi_CHV_Smooth_Period, ::Oscillator_Range_Indi_CHV_Period,
::Oscillator_Range_Indi_CHV_Smooth_Method, ::Oscillator_Range_Indi_CHV_Shift);
_indi_params.SetDataSourceType(::Oscillator_Range_Indi_CHV_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_CHV(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_CHV(_indi_params, ::Oscillator_Range_Indi_CHV_SourceType), ::Oscillator_Range_Type);
break;
}
case STG_OSCILLATOR_RANGE_TYPE_DEMARKER: // DeMarker
{
IndiDeMarkerParams _indi_params(::Oscillator_Range_Indi_DeMarker_Period,
::Oscillator_Range_Indi_DeMarker_Shift);
_indi_params.SetDataSourceType(Oscillator_Range_Indi_DeMarker_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_DeMarker(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_DeMarker(_indi_params, ::Oscillator_Range_Indi_DeMarker_SourceType), ::Oscillator_Range_Type);
break;
}
case STG_OSCILLATOR_RANGE_TYPE_MFI: // MFI
{
IndiMFIParams _indi_params(::Oscillator_Range_Indi_MFI_MA_Period, ::Oscillator_Range_Indi_MFI_Applied_Volume,
::Oscillator_Range_Indi_MFI_Shift);
_indi_params.SetDataSourceType(::Oscillator_Range_Indi_MFI_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_MFI(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_MFI(_indi_params, ::Oscillator_Range_Indi_MFI_SourceType), ::Oscillator_Range_Type);
break;
}
case STG_OSCILLATOR_RANGE_TYPE_MOM: // MOM
{
IndiMomentumParams _indi_params(::Oscillator_Range_Indi_Momentum_Period,
::Oscillator_Range_Indi_Momentum_Applied_Price,
::Oscillator_Range_Indi_Momentum_Shift);
_indi_params.SetDataSourceType(::Oscillator_Range_Indi_Momentum_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_Momentum(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_Momentum(_indi_params, ::Oscillator_Range_Indi_Momentum_SourceType), ::Oscillator_Range_Type);
break;
}
case STG_OSCILLATOR_RANGE_TYPE_OBV: // OBV
{
IndiOBVParams _indi_params(::Oscillator_Range_Indi_OBV_Applied_Price, ::Oscillator_Range_Indi_OBV_Shift);
_indi_params.SetDataSourceType(::Oscillator_Range_Indi_OBV_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_OBV(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_OBV(_indi_params, ::Oscillator_Range_Indi_OBV_SourceType), ::Oscillator_Range_Type);
break;
}
case STG_OSCILLATOR_RANGE_TYPE_PVT: // PVT
{
IndiPriceVolumeTrendParams _indi_params(::Oscillator_Range_Indi_PVT_InpVolumeType,
::Oscillator_Range_Indi_PVT_Shift);
_indi_params.SetDataSourceType(::Oscillator_Range_Indi_PVT_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_PriceVolumeTrend(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_PriceVolumeTrend(_indi_params, ::Oscillator_Range_Indi_PVT_SourceType), ::Oscillator_Range_Type);
break;
}
case STG_OSCILLATOR_RANGE_TYPE_ROC: // ROC
{
IndiRateOfChangeParams _indi_params(::Oscillator_Range_Indi_ROC_Period,
::Oscillator_Range_Indi_ROC_Applied_Price,
::Oscillator_Range_Indi_ROC_Shift);
_indi_params.SetDataSourceType(::Oscillator_Range_Indi_ROC_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_RateOfChange(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_RateOfChange(_indi_params, ::Oscillator_Range_Indi_ROC_SourceType), ::Oscillator_Range_Type);
break;
}
*/
case STG_OSCILLATOR_RANGE_TYPE_RSI: // RSI
{
IndiRSIParams _indi_params(::Oscillator_Range_Indi_RSI_Period, ::Oscillator_Range_Indi_RSI_Applied_Price,
::Oscillator_Range_Indi_RSI_Shift);
_indi_params.SetDataSourceType(::Oscillator_Range_Indi_RSI_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_RSI(_indi_params), ::Oscillator_Range_Type);
IndicatorBase *_indi = GetIndicator(::Oscillator_Range_Type);
SetIndicator(new Indi_RSI(_indi_params, ::Oscillator_Range_Indi_RSI_SourceType), ::Oscillator_Range_Type);
IndicatorData *_indi = GetIndicator(::Oscillator_Range_Type);
//_indi.mydata = NULL; // @todo
break;
}
Expand All @@ -515,9 +498,8 @@ class Stg_Oscillator_Range : public Strategy {
::Oscillator_Range_Indi_StdDev_MA_Method,
::Oscillator_Range_Indi_StdDev_Applied_Price,
::Oscillator_Range_Indi_StdDev_Shift);
_indi_params.SetDataSourceType(::Oscillator_Range_Indi_StdDev_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_StdDev(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_StdDev(_indi_params, ::Oscillator_Range_Indi_StdDev_SourceType), ::Oscillator_Range_Type);
break;
}
case STG_OSCILLATOR_RANGE_TYPE_STOCH: // Stochastic
Expand All @@ -526,18 +508,16 @@ class Stg_Oscillator_Range : public Strategy {
::Oscillator_Range_Indi_Stochastic_KPeriod, ::Oscillator_Range_Indi_Stochastic_DPeriod,
::Oscillator_Range_Indi_Stochastic_Slowing, ::Oscillator_Range_Indi_Stochastic_MA_Method,
::Oscillator_Range_Indi_Stochastic_Price_Field, ::Oscillator_Range_Indi_Stochastic_Shift);
_indi_params.SetDataSourceType(::Oscillator_Range_Indi_Stochastic_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_Stochastic(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_Stochastic(_indi_params, ::Oscillator_Range_Indi_Stochastic_SourceType), ::Oscillator_Range_Type);
break;
}
case STG_OSCILLATOR_RANGE_TYPE_TRIX: // TRIX
{
IndiTRIXParams _indi_params(::Oscillator_Range_Indi_TRIX_InpPeriodEMA,
::Oscillator_Range_Indi_TRIX_Applied_Price, ::Oscillator_Range_Indi_TRIX_Shift);
_indi_params.SetDataSourceType(::Oscillator_Range_Indi_TRIX_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_TRIX(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_TRIX(_indi_params, ::Oscillator_Range_Indi_TRIX_SourceType), ::Oscillator_Range_Type);
break;
}
case STG_OSCILLATOR_RANGE_TYPE_UO: // UO
Expand All @@ -547,35 +527,31 @@ class Stg_Oscillator_Range : public Strategy {
::Oscillator_Range_Indi_UO_InpSlowPeriod, ::Oscillator_Range_Indi_UO_InpFastK,
::Oscillator_Range_Indi_UO_InpMiddleK, ::Oscillator_Range_Indi_UO_InpSlowK,
::Oscillator_Range_Indi_UO_Shift);
_indi_params.SetDataSourceType(::Oscillator_Range_Indi_UO_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_UltimateOscillator(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_UltimateOscillator(_indi_params, ::Oscillator_Range_Indi_UO_SourceType), ::Oscillator_Range_Type);
break;
}
case STG_OSCILLATOR_RANGE_TYPE_WAD: // Williams' AD
{
IndiWilliamsADParams _indi_params(::Oscillator_Range_Indi_WAD_Shift);
_indi_params.SetDataSourceType(Oscillator_Range_Indi_WAD_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_WilliamsAD(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_WilliamsAD(_indi_params, ::Oscillator_Range_Indi_WAD_SourceType), ::Oscillator_Range_Type);
break;
}
*/
case STG_OSCILLATOR_RANGE_TYPE_WPR: // WPR
{
IndiWPRParams _indi_params(::Oscillator_Range_Indi_WPR_Period, ::Oscillator_Range_Indi_WPR_Shift);
_indi_params.SetDataSourceType(::Oscillator_Range_Indi_WPR_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_WPR(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_WPR(_indi_params, ::Oscillator_Range_Indi_WPR_SourceType), ::Oscillator_Range_Type);
break;
}
/*
case STG_OSCILLATOR_RANGE_TYPE_VOL: // Volumes
{
IndiVolumesParams _indi_params(::Oscillator_Range_Indi_VOL_InpVolumeType, ::Oscillator_Range_Indi_VOL_Shift);
_indi_params.SetDataSourceType(::Oscillator_Range_Indi_VOL_SourceType);
_indi_params.SetTf(Get<ENUM_TIMEFRAMES>(STRAT_PARAM_TF));
SetIndicator(new Indi_Volumes(_indi_params), ::Oscillator_Range_Type);
SetIndicator(new Indi_Volumes(_indi_params, ::Oscillator_Range_Indi_VOL_SourceType), ::Oscillator_Range_Type);
break;
}
*/
Expand All @@ -589,7 +565,7 @@ class Stg_Oscillator_Range : public Strategy {
* Check strategy's opening signal.
*/
bool SignalOpen(ENUM_ORDER_TYPE _cmd, int _method, float _level = 0.0f, int _shift = 0) {
IndicatorBase *_indi = GetIndicator(::Oscillator_Range_Type);
IndicatorData *_indi = GetIndicator(::Oscillator_Range_Type);
// uint _ishift = _indi.GetShift();
bool _result = Oscillator_Range_Type != STG_OSCILLATOR_RANGE_TYPE_0_NONE && IsValidEntry(_indi, _shift);
if (!_result) {
Expand Down

0 comments on commit 79323c9

Please sign in to comment.