Iyi aksamlar, hata bir sayidan indikator cikartmaya calistiginiz icin olusmaktadir. 2 farkli turde oge birbirinden cikartilamamakta. IQ'da indikatorler seri halinde gecmis datalari ile birlikte bulunmaktadir. Volatilityshort,CurrentValue seklinde yazarsak, indikator'un son degerini decimal cinsinden alabiliriz. Boylelikle baska bir decimal ogesi ile islem yapilabilir hale gelecektir.
Sanirim yapmak istedikleriniz bunlardan biri (OnDataUpdate fonksiyonu icerisine bakiniz):
using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using System.Windows.Media;
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 Hvol_forum : MatriksAlgo
{
[SymbolParameter("GARAN")]
public string Symbol;
[Parameter(SymbolPeriod.Min5)]
public SymbolPeriod SymbolPeriod;
[Parameter(100)]
public int LongPeriod;
[Parameter(10)]
public int ShortPeriod;
H_Volatility hVolatility_long, hVolatility_short;
public override void OnInit()
{
hVolatility_long = HVolatilityIndicator(Symbol, SymbolPeriod, OHLCType.Close, LongPeriod);
hVolatility_short = HVolatilityIndicator(Symbol, SymbolPeriod, OHLCType.Close, ShortPeriod);
AddSymbol(Symbol, SymbolPeriod);
SendOrderSequential(true);
WorkWithPermanentSignal(false);
}
public override void OnInitComplated()
{
}
public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
{
var Volatilityfark = hVolatility_long.CurrentValue - hVolatility_short.CurrentValue;
var VolPrevFark_Long = hVolatility_long.CurrentValue - Ref(hVolatility_long,1);
}
public override void OnOrderUpdate(IOrder order)
{
if (order.OrdStatus.Obj == OrdStatus.Filled)
{
}
}
}
}