0 beğenilme 0 beğenilmeme
698 kez görüntülendi

Merhaba,

Daha önce buradan aldığım aşağıdaki Trend kesişim stratejisinde, grafikten kopyaladığım trendi "MyTrend(Symbol, SymbolPeriod, new DateTime(2021, 2, 24, 13, 45, 0), 65.7366871165644m, new DateTime(2021, 3, 1, 10, 0, 0), 56.8471165644172m)" şeklinde parametre olarak girmek istiyorum. Hata veriyor. Yardımcı olabilir misiniz?

using System; using System.Collections.Generic; using System.Linq; using Matriks.Data.Symbol; using Matriks.Engines; 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; using System.Windows.Media; // namespace Matriks.Lean.Algotrader { public class TrendKır : 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; [Parameter(1)] public int Quantity; [Parameter(SymbolPeriod.Min5)] public SymbolPeriod SymbolPeriod; [Parameter()] public ITrend trend; ITrend drawthis; //Cizdirecegimiz trend objesini burada tanimliyoruz public override void OnInit() { AddSymbol(Symbol, SymbolPeriod); drawthis = trend; // drawthis = MyTrend(Symbol, SymbolPeriod, new DateTime(2021, 2, 3, 11, 30, 0), 9.83834273412271m, new DateTime(2021, 2, 4, 12, 35, 0), 10.0987517761033m); //MyTrend fonksiyonunu kullanarak trend cizdirip bunu drawthis objesine atiyoruz DrawTrend(drawthis, Colors.Gold); //Olusturdugumuz trend objesini cizdirmek icin DrawTrend fonksiyonunu kullaniyoruz, bu satirsa renklendirme ornegi de goruluyor //DrawTrend(drawthis, Color.FromRgb(255, 0, 255)); //Renk atamasini RGB olarak belirlemek istersek bu satiri acarak ederek deneyebiliriz SendOrderSequential(true); WorkWithPermanentSignal(true); } /// /// Init islemleri tamamlaninca, bardatalar kullanmaya hazir hale gelince bu fonksiyon tetiklenir. Data uzerinde bir defa yapilacak islemler icin kullanilir /// public override void OnInitComplated() { } /// /// Eklenen sembollerin bardata'ları ve indikatorler güncellendikçe bu fonksiyon tetiklenir. /// /// Bardata ve hesaplanan gerçekleşen işleme ait detaylar public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues) { var barDataModel = GetBarData(); var index = barDataCurrentValues.LastUpdate.BarDataIndex; var CurrentClose = barDataModel.Close[index]; var prevClose = barDataModel.Close[index -1]; var CurrentTrend = drawthis.CurrentValue; var prevTrend = drawthis.ValueAtRef(1); if (prevClose CurrentTrend) { SendMarketOrder(Symbol, Quantity, OrderSide.Buy); Debug("Alış emri gönderildi"); } if (prevClose>prevTrend && CurrentClose < CurrentTrend) { SendMarketOrder(Symbol, Quantity, OrderSide.Sell); Debug("Satis emri gonderildi"); } } /// /// Gönderilen emirlerin son durumu değiştikçe bu fonksiyon tetiklenir. /// /// Emrin son durumu public override void OnOrderUpdate(IOrder order) { if (order.OrdStatus.Obj == OrdStatus.Filled) { } } } }
Algoritmik Trading kategorisinde (18 puan) tarafından
tarafından düzenlendi | 698 kez görüntülendi

3 Cevaplar

1 beğenilme 0 beğenilmeme
Grafik üzerinden kopyaladığınız trendi parametre olarak girebileceğinizi zannetmiyorum. Strateji içine yapıştırmanız gerekir.
(725 puan) tarafından
1 beğenilme 0 beğenilmeme
Merhaba,

Trend içindeki değerleri parametre olarak tanımlayabilirsiniz. Kastınız başka birşey ise detaylı açıklarsanız yardımcı olmaya çalışırız.

Kolay gelsin,

Seçkin Durgay
(4,631 puan) tarafından
0 beğenilme 0 beğenilmeme

Merhaba evet grafikten kopyaladiginiz trend kodunu, stratejiye yapistirabilirsiniz. Asagida yazdiginiz trend'in stratejinize eklenmis halini bulabilirsiniz. Strateji kopyalarken, forum'da cevap yazim kutucugunun, uzerinde cikan butonlardan en sagda bulunan "insert code snippet" ozelligini kullanarak kodu buraya yapistirabilirseniz, okunabilmesi ve uzerinde calisilmasi daha kolay olacaktir.

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
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;
using System.Windows.Media;
namespace Matriks.Lean.Algotrader
{
	public class TrendKır : MatriksAlgo
	{
		[SymbolParameter("GARAN")] public string Symbol;
		[Parameter(1)] public int Quantity;
		[Parameter(SymbolPeriod.Min5)] public SymbolPeriod SymbolPeriod;
		[Parameter()] public ITrend trend;
		ITrend drawthis;
		//Cizdirecegimiz trend objesini burada tanimliyoruz 
		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);
			//drawthis = trend;
			drawthis = MyTrend(Symbol, SymbolPeriod, new DateTime(2021, 2, 24, 13, 45, 0), 65.7366871165644m, new DateTime(2021, 3, 1, 10, 0, 0), 56.8471165644172m);
			//MyTrend fonksiyonunu kullanarak trend cizdirip bunu drawthis objesine atiyoruz DrawTrend(drawthis, Colors.Gold);
			//Olusturdugumuz trend objesini cizdirmek icin DrawTrend fonksiyonunu kullaniyoruz, bu satirsa renklendirme ornegi de goruluyor
			//DrawTrend(drawthis, Color.FromRgb(255, 0, 255));
			//Renk atamasini RGB olarak belirlemek istersek bu satiri acarak ederek deneyebiliriz
			SendOrderSequential(true);
			WorkWithPermanentSignal(true);
		}
		public override void OnInitComplated()
		{
		}
		public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
		{
			var barDataModel = GetBarData();
			var index = barDataCurrentValues.LastUpdate.BarDataIndex;
			var CurrentClose = barDataModel.Close[index];
			var prevClose = barDataModel.Close[index -1];
			var CurrentTrend = drawthis.CurrentValue;
			var prevTrend = drawthis.ValueAtRef(1);
			if (prevClose>CurrentTrend)
			{
				SendMarketOrder(Symbol, Quantity, OrderSide.Buy);
				Debug("Alış emri gönderildi");
			} 
			if (prevClose>prevTrend && CurrentClose < CurrentTrend)
			{
				SendMarketOrder(Symbol, Quantity, OrderSide.Sell);
				Debug("Satis emri gonderildi");
			}
		}
		public override void OnOrderUpdate(IOrder order)
		{
			if (order.OrdStatus.Obj == OrdStatus.Filled)
			{
			}
		}
	}
}

 

(8,035 puan) tarafından
7,632 soru
7,636 cevap
4,448 yorum
10,799 kullanıcı