Derinlik Kademelerinin Kullanımı #
Sembolün fiyat kademelerinde bekleyen alış/satış emir sayıları, toplam emir adedi ve fiyat bilgileri MatriksIQ stratejileri içerisinde kullanılabilir.
Stratejide bu verilerin kullanılabilmesi ve canlı olarak takip edilebilmesi için AddSymbolMarketDepth fonksiyonu kullanılarak, verilere kaydolunması gerekir. Sonrasında verileri çekmek için GetMarketDepth fonksiyonu kullanılarak veriler çekilip kullanılabilir.
Ek Notlar #
Derinlik fiyat kademelerine kayıt olma fonksiyonu(AddSymbolMarketDepth) çalıştırılmadan, bu verileri çekmek için kullanılan fonksiyonu(GetMarketDepth) kullanılmamalıdır.
Tarihsel fiyat kademeleri tutulmadığı için bu fonksiyonların eklendiği stratejide backtest ve optimizasyon yapılması engellenmiştir.
AddSymbolMarketDepth(string) #
Sembole ait bekleyen emir kademelerinin stratejiye eklenmesini sağlar.
public void AddSymbol(string Symbol)
Parametreler #
Symbol string
Sembol parametresidir. Derinlik kademesi çekilmek istenen sembol ismi yazılmalıdır. Örn. “GARAN”
Örnek #
public override void OnInit() { //Sembol verisine kayıt işlemi AddSymbol (Symbol , SymbolPeriod.Day); //Fiyat kademesine kayıt işlemi AddSymbolMarketDepth(Symbol); }
GetMaketDepth(string) #
Sembole ait kaydolunan derinlik fiyat kademe verilerinin stratejiye çekilmesini sağlar.
public MarketDepth GetMaketDepth(string Symbol)
Parametreler #
Symbol string
Sembol parametresidir. Stratejide derinlik fiyat kademelerine kaydolunan sembol kullanılmalıdır. Örn. “GARAN”
Dönütler #
MarketDepth
Alış ve satış kademelerini list biçiminde içerisinde bulundurur. Bu listelerin içerisinde her kademeye ait fiyat, adet ve miktar gibi bilgiler bulunmaktadır. Bknz. MarketDepth
Örnek #
public override void OnDataUpdate(BarDataEventArgs barData) { var depths = GetMarketDepth(Symbol); var BO_size = depths.AskRows[0].Size; var BO = depths.AskRows[0].Price; var BO1 = depths.AskRows[1].Price; var BB_size = depths.BidRows[0].Size; var BB = depths.BidRows[0].Price; var BB1 = depths.BidRows[1].Price; Debug("best offer " + BO + " size = " + BO_size); Debug("best bid " + BB + " size = " + BB_size); Debug("Current Ratio(BB/BO size) = " + Math.Round(BB_size / BO_size, 2)); if (BO_size > çarpan * BB_size) { SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell); Debug("Satış Emri Gönderildi"); } if (BB_size > çarpan * BO_size) { SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy); Debug("Alış Emri Gönderildi"); } }