A variation on Wilder's swing index which plots an accumulation of the swing index value of each candlestick or bar.
Remarks
The accumulative swing index is used to gain a longer-term picture than the Wilder's swing index. When the accumulative swing index is positive, the long-term trend is up. When the accumulative swing index is negative, it signals a downwards long-term trend.
Signature
1
publicabstractinterfaceAccumulativeSwingIndex
Namespace
cAlgo.API.Indicators
Examples
1 2 3 4 5 6 7 8 91011121314151617181920212223
usingcAlgo.API;usingcAlgo.API.Indicators;namespacecAlgo.Indicator{[Indicator]publicclassAccumSwingIndexReferenceExample:Indicator{privateAccumulativeSwingIndex_accumulativeSwingIndex;[Parameter("Limit Move", DefaultValue = 12)]publicintLimitMove{get;set;}[Output("Main")]publicIndicatorDataSeriesResult{get;set;}protectedoverridevoidInitialize(){_accumulativeSwingIndex=Indicators.AccumulativeSwingIndex(LimitMove);}publicoverridevoidCalculate(intindex){// Display Result of IndicatorResult[index]=_accumulativeSwingIndex.Result[index];}}}
usingcAlgo.API;usingcAlgo.API.Indicators;namespacecAlgo.Robots{// This sample cBot shows how to use an Accumulative Swing Index indicator[Robot(TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]publicclassAccumulativeSwingIndexSample:Robot{privatedouble_volumeInUnits;privateAccumulativeSwingIndex_accumulativeSwingIndex;[Parameter("Volume (Lots)", DefaultValue = 0.01)]publicdoubleVolumeInLots{get;set;}[Parameter("Stop Loss (Pips)", DefaultValue = 10)]publicdoubleStopLossInPips{get;set;}[Parameter("Take Profit (Pips)", DefaultValue = 10)]publicdoubleTakeProfitInPips{get;set;}[Parameter("Label", DefaultValue = "Sample")]publicstringLabel{get;set;}publicPosition[]BotPositions{get{returnPositions.FindAll(Label);}}protectedoverridevoidOnStart(){_volumeInUnits=Symbol.QuantityToVolumeInUnits(VolumeInLots);_accumulativeSwingIndex=Indicators.AccumulativeSwingIndex(12);}protectedoverridevoidOnBar(){foreach(varpositioninBotPositions){if((position.TradeType==TradeType.Buy&&_accumulativeSwingIndex.Result.Last(1)<_accumulativeSwingIndex.Result.Last(2))||(position.TradeType==TradeType.Sell&&_accumulativeSwingIndex.Result.Last(1)>_accumulativeSwingIndex.Result.Last(2))){ClosePosition(position);}}if(_accumulativeSwingIndex.Result.Last(1)>0&&_accumulativeSwingIndex.Result.Last(2)<=0){ExecuteMarketOrder(TradeType.Buy,SymbolName,_volumeInUnits,Label,StopLossInPips,TakeProfitInPips);}elseif(_accumulativeSwingIndex.Result.Last(1)<0&&_accumulativeSwingIndex.Result.Last(2)>=0){ExecuteMarketOrder(TradeType.Sell,SymbolName,_volumeInUnits,Label,StopLossInPips,TakeProfitInPips);}}}}
123456789
importclrclr.AddReference("cAlgo.API")fromcAlgo.APIimport*classTest():definitialize(self):# LimitMove is a parameter defined in C# file of indicatorself.accumulativeSwingIndex=Indicators.AccumulativeSwingIndex(api.LimitMove)defcalculate(self,index):api.Result[index]=self.accumulativeSwingIndex.Result[index]
1 2 3 4 5 6 7 8 91011121314151617181920212223
""" VolumeInLots, StopLossInPips, TakeProfitInPips, and Label are parameters defined in C# file of cBot. """importclrclr.AddReference("cAlgo.API")# Import cAlgo API typesfromcAlgo.APIimport*# Import trading wrapper functionsfromrobot_wrapperimport*classAccumulativeSwingIndexSample():defon_start(self):self.volumeInUnits=api.Symbol.QuantityToVolumeInUnits(api.VolumeInLots)self.accumulativeSwingIndex=api.Indicators.AccumulativeSwingIndex(12)defon_bar_closed(self):forpositioninself.get_bot_positions():if(position.TradeType==TradeType.Buyandself.accumulativeSwingIndex.Result.Last(0)<self.accumulativeSwingIndex.Result.Last(1))or(position.TradeType==TradeType.Sellandself.accumulativeSwingIndex.Result.Last(0)>self.accumulativeSwingIndex.Result.Last(1)):api.ClosePosition(position);ifself.accumulativeSwingIndex.Result.Last(0)>0andself.accumulativeSwingIndex.Result.Last(1)<=0:api.ExecuteMarketOrder(TradeType.Buy,api.SymbolName,self.volumeInUnits,api.Label,api.StopLossInPips,api.TakeProfitInPips)elif(self.accumulativeSwingIndex.Result.Last(0)<0andself.accumulativeSwingIndex.Result.Last(1)>=0):api.ExecuteMarketOrder(TradeType.Sell,api.SymbolName,self.volumeInUnits,api.Label,api.StopLossInPips,api.TakeProfitInPips)defget_bot_positions(self):returnapi.Positions.FindAll(api.Label)
Properties
Result
Summary
The time series of AccumulativeSwingIndex.
Signature
1
publicabstractIndicatorDataSeriesResult{get;}
Return Value
IndicatorDataSeries
Examples
1 2 3 4 5 6 7 8 910111213141516
//...privateAccumulativeSwingIndex_accumulativeSwingIndex;//...[Parameter("Limit Move", DefaultValue = 12)]publicintLimitMove{get;set;}//...protectedoverridevoidOnStart(){_accumulativeSwingIndex=Indicators.AccumulativeSwingIndex(LimitMove);}protectedoverridevoidOnBar(){// Print to logPrint("The Current Accumulative Swing Index is: {0}",_accumulativeSwingIndex.Result.LastValue);}//...
1234
defon_start(self):self.accumulativeSwingIndex=api.Indicators.AccumulativeSwingIndex(api.LimitMove)defon_bar_closed(self):print(f"The Current Accumulative Swing Index is: {self.accumulativeSwingIndex.Result.LastValue}")