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

Merhaba fiyat sma(30)yi kırdığında Ve aynı zamanda macd macd trigeri kırmış olmuş şartı ile algoritma kurmaya çalışıyorum ama bunu beceremedim.iki indikator birleştirmede bardate model bulunamadı hatası veriyor yukarda tanımlamama rağmen 

 

 

Algoritmik Trading kategorisinde (20 puan) tarafından | 649 kez görüntülendi

1 cevap

2 beğenilme 0 beğenilmeme

Merhaba,

Aşağıda bir örnek bulabilirsiniz. Al sat koşullarını boş bıraktım. Örnek olarak inceleyebilirsiniz. Takıldığınız yer olursa tekrar yazabilirsiniz.

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using System.Windows.Media;
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;

namespace Matriks.Lean.Algotrader
{
	public class SmaMacd : 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(SymbolPeriod.Min5)]
		public SymbolPeriod SymbolPeriod;

		[Parameter(5)]
		public decimal BuyOrderQuantity;

		[Parameter(5)]
		public decimal SellOrderQuantity;

		[Parameter(30)]
		public int SmaPeriod;

		[Parameter(26)]
		public int LongPeriod;

		[Parameter(12)]
		public int ShortPeriod;

		[Parameter(12)]
		public int TriggerPeriod;
		
		SMA sma;

		MACD macd;

		// indikator tanımları.


		/// <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()
		{
			macd = MACDIndicator(Symbol, SymbolPeriod, OHLCType.Close, LongPeriod, ShortPeriod, TriggerPeriod);

			sma = SMAIndicator(Symbol, SymbolPeriod, OHLCType.Close, SmaPeriod);

			AddSymbol(Symbol, SymbolPeriod);


			// Algoritmanın kalıcı veya geçici sinyal ile çalışıp çalışmayacağını belirleyen fonksiyondur.
			// true geçerseniz algoritma sadece yeni bar açılışlarında çalışır, bu fonksiyonu çağırmazsanız veya false geçerseniz her işlem olduğunda algoritma tetiklenir.
			WorkWithPermanentSignal(true);

			//Eger 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);
			//Alttaki fonksiyon açıldıktan sonra parametre olarak verilen saniyede bir OnTimer fonksiyonu tetiklenir.
			//SetTimerInterval(3);

			//Alttaki fonksiyon ile tanımlanan sembol ile ilgili haber geldiğinde OnNewsReceived fonksiyonu tetiklenir.
			//AddNewsSymbol(Symbol);

			//Alttaki fonksiyon ile tanımlanan anahtar kelime ile ilgili haber geldiğinde OnNewsReceived fonksiyonu tetiklenir.
			//AddNewsKeyword("KAP");
		}


		/// <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)
		{
			var barData = GetBarData();
			if (CrossAbove(barData, sma, OHLCType.Close) && CrossAbove(macd, macd.MacdTrigger))
			{
				//istenilen kosul
			}
		}

		/// <summary>
		/// Gönderilen emirlerin son durumu değiştikçe bu fonksiyon tetiklenir.
		/// </summary>
		/// <param name="barData">Emrin son durumu</param>
		public override void OnOrderUpdate(IOrder order)
		{
			if (order.OrdStatus.Obj == OrdStatus.Filled)
			{

			}
		}
	}
}

 


Seçkin Durgay
(4,631 puan) tarafından
0 0
Teşekkür ederim elinize sağlık
8,636 soru
8,590 cevap
4,821 yorum
19,786 kullanıcı