MatriksIQ 4.0.5 versiyonu yayınlanmıştır!
- Soruldu
- Kategori
- Diğer
- Görüntülenme
- 1.627 görüntülenme
- Durum
- Kapalı
Bu soru kapatıldı (7 Ara 2020 03:02)
Neden: DUYURU
Yeniliklere buradan ulaşabilirsiniz.
https://matriksiq.matriksdata.com/iqy/iq/73507
Seçkin Durgay
Yorumlar (4)
- ▲0
- ▲0Teşekkür ederiz :) Her zaman bildirebilirsiniz.
- ▲0
- ▲1
Merhabalar, portföyden pozisyonların çekilmesi için alttaki kodu inceleyebilirsiniz. Detaylı anlatım içeriğinde bulunmaktadır.
Not yeni açtığınız stratejinin GetPortfolio adıyla aynı olmasına dikkat ediniz.
İyi çalışmalar
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 GetPortfolio : MatriksAlgo { // Strateji çalıştırılırken kullanacağımız parametreler. Eğer sembolle ilgili bir parametre ise, // "SymbolParameter" ile, değilse "Parameter" ile tanımlama yaparız. Parantez içindeki değerler default değerleridir. [SymbolParameter("BTC_USDT_BIN")] public string Symbol; [Parameter(SymbolPeriod.Min)] public SymbolPeriod SymbolPeriod; [Parameter(true)] public bool Kripto; /// <summary> /// Strateji ilk çalıştırıldığında bu fonksiyon tetiklenir. Tüm sembole kayit işlemleri, /// indikator ekleme, haberlere kayıt olma işlemleri burada yapılır. /// </summary> public override void OnInit() { AddSymbol(Symbol, SymbolPeriod); WorkWithPermanentSignal(true); //Eger backtestte emri bir al bir sat seklinde gonderilmesi isteniyor bu true set edilir. //Alttaki satırı silerek veya false geçerek emirlerin sirayla gönderilmesini engelleyebilirsiniz. //SendOrderSequential(true); } string sembol; bool Kripto_kontrol = false; /// <summary> /// Eklenen sembollerin bardata'ları ve indikatorler güncellendikçe bu fonksiyon tetiklenir. /// </summary> /// <param name="barData">Bardata ve hesaplanan gerçekleşen işleme ait detaylar</param> public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues) { //Debug(PositionReceiveComplated); //PositionReceiveComplated : Portföyden pozisyonların okunmasını beklemek için gereken kontrol //2. olarak eklenen Kripto kontrolü; Kripto hesapların pozisyonlarının okunmasını beklemek için gereken kontrol. if (PositionReceiveComplated || Kripto_kontrol) { //GetRealPositions(): Portföydeki hisselere ait detayları kullanmak için kullanılır. var position = GetRealPositions(); //QtyAvailable Belirtilen sembole ait kullanılabilir adedi portföyden döndürür. var quantity = position[sembol].QtyAvailable; Debug($"{Symbol} sembolünden {quantity} adet stoğunuzda bulunmaktadır."); } } /// <summary> /// Strateji çalıştığında ve portföyde değişiklik olduğunda tetikelenir. /// </summary> /// <param name="position">Portföydeki hisselere ait değerleri bulundurur</param> public override void OnRealPositionUpdate(AlgoTraderPosition position) { sembol = Symbol; //Binance portföylerinde sembol isimleri BTC - ETH gibi olduğu için aşağıdaki kontrolü yapmalıyız. if (Kripto && Symbol.Split('_')[2].Contains("BIN")) sembol = Symbol.Split('_')[0]; //Portföyde istenilen sembolün olup olmadığını kontrolü sağlanıyor. if (position.Symbol.Equals(sembol)) { if (Kripto) Kripto_kontrol = true; var P = position; //Alttaki string formatları portföyden alabileceğiniz verileri kapsamaktadır. string Portfoy = String.Format("|{0,-10}|{1,-13}|{2,-10}|{3,-10}|{4,-10}|{5,-10}|{6,-10}|{7,-10}|{8,-10}|{9,-13}|", "Hesap", "Sembol", "Birim", "Adet T", "Adet T1", "Adet T2", "Adet T3", "Tutar", "Sat. Adet", "Ort. Maliyet"); string FormatPortfoy = String.Format("|{0,-10}|{1,-13}|{2,-10}|{3,-10}|{4,-10}|{5,-10}|{6,-10}|{7,-10}|{8,-10}|{9,-13}|\n", P.AccountId, P.Symbol, P.Currency, P.QtyT, P.QtyT1, P.QtyT2, P.QtyT3, P.Amount, P.QtyAvailable, P.AvgCost); Debug(Portfoy); Debug(FormatPortfoy); } } } }

