Matriks Destek ve Yardım Platformu

Matriks Ürünleri ile ilgili tüm sorularınız için bizlere buradan ulaşabilirsiniz. Daha önce sorulan soruları ve verilen cevapları ilgili sekmelerden ve arama üzerinden inceleyebilirsiniz. Sağ taraftaki kategoriler üzerinden İlgilendiğiniz özelliklerle ilgili soruları filtreleyebilirsiniz. Soru ve cevapları sosyal medyada paylaşabilirsiniz. Sorduğunuz ve cevapladığınız soruların ve yorumlarınızın aldığı oylar üzerinden puan kazanırsınız. Puan sistemine bağlı kampanyamızla ücretsiz kullanım avantajlarından faydalanabilirsiniz.

1

Birden çok sembol ile işlem yaparken onDataUpdate fonksiyonu nasıl çalışıyor ?

Soruldu
Görüntülenme
1.995 görüntülenme
Durum
Cevaplandı

Ben bir çok sembolde kullanabileceğim dinamik bir strateji oluşturmak istiyorum.Her güncellemede onDataUpdate çağırılıyor fakat ben hangi sembolün güncellemesinden dolayı çağırıldığını nereden öğrenebiliyorum ?  barDataCurrentValues objesi neleri barındırıyor ?

 
 

public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
{
foreach (String symbol in symbols)
{
if (CrossAbove(symbol.mov, symbol.mov2))
{
SendMarketOrder(symbol.name, BuyOrderQuantity, OrderSide.Buy);
Debug("Alış Emri Gönderildi");
}
 
if (CrossBelow(symbol.mov, symbol.mov2))
{
SendMarketOrder(symbol.name, SellOrderQuantity, OrderSide.Sell);
Debug("Satış Emri Gönderildi");
}
}
}

 

Paylaş
CevaplaBayrakladüzenlendi · Orçun799052

1 Cevap

4

Merhaba, birçok sembolle işlem yapabilmek için öncelikle sembollere kayıt olmanız gerekmektedir. Daha sonra "GetBarData()" fonksiyonunu kullanarak OnDataUpdate içeresinde erişebilirsiniz. Örnek kod aşağıdadır.

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 Symbol : 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("GARAN")]
		public string Symbol_0;

		[SymbolParameter("ASELS")]
		public string Symbol_1;

		[Parameter(SymbolPeriod.Min5)]
		public SymbolPeriod SymbolPeriod_0;

		[Parameter(SymbolPeriod.Min240)]
		public SymbolPeriod SymbolPeriod_1;

		/// <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_0, SymbolPeriod_0);
			AddSymbol(Symbol_1, SymbolPeriod_1);
			//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);
		}



		/// <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(BarDataEventArgs barDataCurrentValues)
		{
			var barDataModel_0 = GetBarData(Symbol_0, SymbolPeriod_0);
			var barDataModel_1 = GetBarData(Symbol_1, SymbolPeriod_1);
			Debug("Bu sembol : " + barDataModel_0.SymbolName + " BarDataClose : " + barDataModel_0.Close[barDataModel_0.BarDataIndexer.LastBarIndex]);
			Debug("Bu sembol : " + barDataModel_1.SymbolName + " BarDataClose : " + barDataModel_1.Close[barDataModel_1.BarDataIndexer.LastBarIndex]);

		}

	}
}

İyi çalışmalar

BağlantıBayraklaOrçunMatriks Destek4.555

Cevabınız

Cevap yazmak için giriş yapın.Giriş yapKayıt ol