(Acceleration bands) Hızlanma bantları göstergesinin değerini hesaplamak için kullanılır.
Bollinger bantları gibi (genelde son 20 bar kullanır) basit averaj etrafında üst ve alt bant çizer.
Enstrüman fiyatı bantların üstüne kırdığında, alım yapılarak yukarı doğru hızlanması, altına kırdığında da satış yapılarak aşağı doğru hızlanması beklenmektedir. Enstrüman fiyatı, tekrar bantların içine geldiğinde pozisyondan çıkılır.
using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.AlgoTrader;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Trader.Core.TraderModels;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;
namespace Matriks.Lean.Algotrader
{
public class ACCBandsStratejisi : MatriksAlgo
{
[SymbolParameter("GARAN")]
public string Symbol;
[Parameter(SymbolPeriod.Min60)]
public SymbolPeriod SymbolPeriod;
[Parameter(1)]
public decimal OrderQuantity;
[Parameter(false)]
public bool AcigaSatis;
[Parameter(10)]
public int accBandPeriod;
[Parameter(0.0005)]
public decimal accBandFactor;
ACCBands accBands;
public override void OnInit()
{
accBands = ACCBandsIndicator(Symbol, SymbolPeriod, OHLCType.Close, accBandPeriod, accBandFactor);
AddSymbol(Symbol, SymbolPeriod);
WorkWithPermanentSignal(true);
SendOrderSequential(true);
}
public override void OnDataUpdate(BarDataEventArgs barData)
{
var barDataModel = GetBarData();
var close = barDataModel.Close[barData.BarDataIndex];
if (CrossAbove(barDataModel, accBands.Upper, OHLCType.Close))
{
SendMarketOrder(Symbol, OrderQuantity, (OrderSide.Buy));
Debug("Alış emri verildi.");
}
if (CrossBelow(barDataModel, accBands.Upper, OHLCType.Close))
{
SendMarketOrder(Symbol, OrderQuantity, (OrderSide.Sell));
Debug("Satış emri verildi.");
}
}
}
}