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

Bu stratejiyi Ema5 Ema13 ü kestiğinde Fisher al vermişse yapabilir miyiz?

 

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;

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

		[Parameter(1)]
		public decimal BuyOrderQuantity;



		[Parameter(3)]
		public int Period;

		[Parameter(2)]
		public decimal Percentage;

		MOST most;

		public override void OnInit()
		{
			most = MOSTIndicator(Symbol, SymbolPeriod, OHLCType.Close, Period, Percentage, MovMethod.Exponential);

			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 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(false, Side.Buy);
		}


		/// <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 barData)
		{
			if (most.Value[1][most.CurrentIndex] > 0)
			{
				SendMarketOrder(Symbol, BuyOrderQuantity, (OrderSide.Buy));
				Debug("Alış emri verildi.");
				Debug("Most.ExMov:" + most.ExMOV.CurrentValue);
				Debug("Most:" + most.CurrentValue);
			}

			if (most.Value[1][most.CurrentIndex] < 0 && Adet != 0)
			{
				SendMarketOrder(Symbol, Adet, (OrderSide.Sell));
				Debug("Satış emri verildi.");
				Debug("Most.ExMov:" + most.ExMOV.CurrentValue);
				Debug("Most:" + most.CurrentValue);
			}
		}


		public decimal Adet;

		public override void OnOrderUpdate(IOrder order)
		{
			if (order.OrdStatus.Obj == OrdStatus.Filled && order.Side.Obj == Side.Buy)
			{
				Adet += order.OrderQty;
			}

			if (order.OrdStatus.Obj == OrdStatus.Filled && order.Side.Obj == Side.Sell)
			{
				Adet = 0;
			}

		}
	}
}
bir cevap ile ilgili: Kademeli al al al tamamını sat
Algoritmik Trading kategorisinde (16 puan) tarafından | 243 kez görüntülendi

Bu soruya cevap vermek için lütfen giriş yapınız veya kayıt olunuz.

7,633 soru
7,639 cevap
4,448 yorum
10,858 kullanıcı