3 beğenilme 0 beğenilmeme
893 kez görüntülendi
MatriksIQ versiyon 4.0.5.1 yayınlanmıştır.

Yeniliklere buradan ulaşabilirsiniz.

https://matriksiq.matriksdata.com/iqy/iq/73507

Seçkin Durgay
notu ile kapatıldı: DUYURU
Diğer kategorisinde (4,631 puan) tarafından
tarafından kapalı | 893 kez görüntülendi
0 0
Yoğun mesai harcadınız emeğinize sağlık teşekkür ederiz. Çözüme kavuşmamış sorunlar var hala ama şimdilik dinlenin bir süre böyle devam edelim daha sonra yine yorarız sizi :) Tekrar teşekkürler
0 0
Teşekkür ederiz :) Her zaman bildirebilirsiniz.
0 0

​Ellerinize sağlık .

  • Algoda portföye ilişkin pozsiyon bilgilerinin kullanılabilmesi sağlandı.

Bunu bir algo içerisinde kullanabilirmisiniz. Binance deki bir sembol ile .   (Binance Vadeli işlemleri halen bekliyoruz.)

1 0

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);
			}
		}
	}
}

 

7,519 soru
7,522 cevap
4,408 yorum
8,779 kullanıcı