[136 dev2] DPO not respecting fixed level set

LongExitSignal = (Detrended Price Oscillator(Main chart,DPOLevelPeriod1)[2] is below 0.01
   and Faster HMA(Subchart1, D1, FasterHMAIsSlwHMAFstPrd1)[1] is below slower HMA(Subchart1, D1, FasterHMAIsSlwHMASlwPrd1)[1]);

ShortExitSignal = (Detrended Price Oscillator(Main chart,DPOLevelPeriod1)[2] is above 0.01
   and Faster HMA(Subchart1, D1, FasterHMAIsSlwHMAFstPrd1)[1] is above Slower HMA(Subchart1, D1, FasterHMAIsSlwHMASlwPrd1)[1]);




Attachments
Screenshot_111.png
(39.31 KiB)
  • Votes +3
  • Project StrategyQuant X
  • Type Bug
  • Status Refused
  • Priority Normal

History

b
#1

bentra

28.07.2022 18:45

Task created

b
#2

bentra

29.07.2022 13:47
Voted for this task.
b
#3

bentra

02.08.2022 19:01
the same problem with bulls power/bears power
E
#4

Emmanuel

06.08.2022 15:33
Voted for this task.
MF
#5

Mark Fric

31.08.2022 10:28

Status changed from New to Waiting for information

can you attach code for this indicator?



b
#6

bentra

31.08.2022 11:08


package SQ.Blocks.Indicators.DPO; import com.strategyquant.lib.*; import com.strategyquant.datalib.*; import com.strategyquant.tradinglib.*; import com.strategyquant.datalib.DataInfo; import com.strategyquant.datalib.InstrumentInfo; import SQ.Internal.IndicatorBlock; import SQ.Calculators.AverageCalculator; /**  * Indicator name as it will be displayed in UI, and its return type.  * Possible return types:  * ReturnTypes.Price - indicator is drawn on the price chart, like SMA, Bollinger Bands etc.  * ReturnTypes.Number - indicator is drawn on separate chart, like CCI, RSI, MACD  * ReturnTypes.PriceRange - indicator is price range, like ATR.  */ @BuildingBlock(name="(DPO) Detrended Price Oscillator", display="DPO(@Chart@#Period#)[#Shift#]", returnType = ReturnTypes.Number) @Help("DPO help text") @Indicator(oscillator=true, middleValue=0, min=-0.1, max=0.1, step=0.00001) public class DPO extends IndicatorBlock {     @Parameter     public ChartData Input;     @Parameter(defaultValue="10", isPeriod=true, minValue=2, maxValue=1000, step=1)     public int Period;     @Output     public DataSeries Value;     //------------------------------------------------------------------------     //------------------------------------------------------------------------     //------------------------------------------------------------------------     @Override     protected void OnBarUpdate() throws TradingException {         if (CurrentBar < Period) {             Value.set(0, 0);                      } else {             int n = (int)(Period / 2) + 1;             double sum = 0;             int count = 0;             for(int i = n;i<(n+Period);i++){                 sum = sum +Input.Close.get(i);                 count++;             }             double avg = sum/Period;             double dpo = Input.Close.get(0)- avg;             Value.set(0, dpo);         }     } }


b
#7

bentra

31.08.2022 11:11


package SQ.Blocks.Indicators.DPO; import SQ.Internal.ConditionBlock; import com.strategyquant.lib.*; import com.strategyquant.datalib.*; import com.strategyquant.tradinglib.*; @BuildingBlock(name="(DPOAL) DPO is above Level", display=" DPO(@Chart@#Period#) is above #Level#", returnType = ReturnTypes.Boolean) @OppositeBlock(value="DPOBelowLevel",oscillator=true, middleValue=0) @ParameterSet(set="Period=10") @ParameterSet(set="Period=20") @ParameterSet(set="Period=40") @ParameterSet(set="Period=80") @ParameterSet(set="Period=100") @ParameterSet(set="Period=12") @ParameterSet(set="Period=24") @ParameterSet(set="Period=48") @ParameterSet(set="Period=96") @ParameterSet(set="Period=120") public class DPOAboveLevel extends ConditionBlock { @Parameter public ChartData Chart; @Parameter(defaultValue="14", minValue=2, maxValue=10000, step=1) public int Period; @Parameter(defaultValue="0", minValue=-0.01, maxValue=0.01, step=0.00001) public double Level; @Parameter public int Shift; //------------------------------------------------------------------------ //------------------------------------------------------------------------ //------------------------------------------------------------------------ @Override public boolean OnBlockEvaluate() throws TradingException { DPO indicator = Strategy.Indicators.DPO(Chart, Period); double value= indicator.Value.getRounded(Shift,5); return (value > Level); } }


MF
#8

Mark Fric

31.08.2022 12:12

Status changed from Waiting for information to Refused

Attachment image-0.png added

image-0.png
(126.61 KiB)
ok, this is maybe unintuitive, but see the screenshot. The problem is again in the defined Parameter sets - they don't use the value from Parameter values tab.


CG
#9

Chris G

23.10.2022 14:51
Voted for this task.

Votes: +3

Drop files to upload

or

choose files

Max size: 5MB

Not allowed: exe, msi, application, reg, php, js, htaccess, htpasswd, gitignore

...
Wait please