07.12.2022
0
2
401
100

strateji spot piyasada OTTO indikatörüne göre alım ve satım yapmaktadır.

Viop da kullanılabilir.

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks;
using Matriks.Data.Symbol;
using Matriks.Engines;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;
using Matriks.AI;
using Matriks.AI.AiParameters;
using Matriks.AI.Data;
using Matriks.Trader.Core.TraderModels;

namespace Matriks.Lean.Algotrader
{
	public class OTTO : MatriksAlgo
	{
		//strateji spot piyasada OTTO indikatörüne göre alım ve satım yapmaktadır.
		// viop da kullanılabilir.
		

		[SymbolParameter("GARAN")]
			public string Symbol1;


		[Parameter(SymbolPeriod.Day)]
			public SymbolPeriod SymbolPeriod1;



		[Parameter(10)]
			public decimal OttokripexFastHO1;

		[Parameter(25)]
			public decimal OttokripexSlowHO1;

		[Parameter(MovMethod.VAR)]
			public MovMethod OttokripexMovMethod1;

		[Parameter(1000)]
			public decimal OttokripexKatSayi1;

		[Parameter(2)]
			public int OttokripexOttPeriod1;

		[Parameter(0.6)]
			public decimal OttokripexOpt1;

		[Parameter(1)]
			public decimal OrderQuantity;



		MatriksIndicator OTTOKripex;



		public override void OnInit()
		{

			OTTOKripex = new OTTOKripex();

			OTTOKripex.SetIndicatorParameters("FastHO", OttokripexFastHO1);
			OTTOKripex.SetIndicatorParameters("SlowHO", OttokripexSlowHO1);
			OTTOKripex.SetIndicatorParameters("MovMethod", OttokripexMovMethod1);
			OTTOKripex.SetIndicatorParameters("KatSayi", OttokripexKatSayi1);
			OTTOKripex.SetIndicatorParameters("OttPeriod", OttokripexOttPeriod1);
			OTTOKripex.SetIndicatorParameters("Opt", OttokripexOpt1);
			RegisterUserIndicator(OTTOKripex, Symbol1, SymbolPeriod1, OHLCType.Close, OttokripexOttPeriod1);


			SendOrderSequential(true, Side.Buy);
			SendOrderSequentialForShort(true, Side.Sell);
			WorkWithPermanentSignal(true);


			//Alttaki fonksiyon açıldıktan sonra parametre olarak verilen saniyede bir OnTimer fonksiyonu tetiklenir.
			// SetTimerInterval(3600);

			//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>
		/// Init islemleri tamamlaninca, bardatalar kullanmaya hazir hale gelince bu fonksiyon tetiklenir. Data uzerinde bir defa yapilacak islemler icin kullanilir
		/// </summary>
		public override void OnInitCompleted()
		{

		}

		/// <summary>
		/// SetTimerInterval fonksiyonu ile belirtilen sürede bir bu fonksiyon tetiklenir.
		/// </summary>
		public override void OnTimer()
		{

		}

		/// <summary>
		/// AddNewsSymbol ve AddNewsKeyword ile haberlere kayit olunmuşsa bu fonksiyon tetiklenir.
		/// </summary>
		/// <param name="newsId">Gelen haberin id'si</param>
		/// <param name="relatedSymbols">Gelen haberin ilişkili sembolleri</param>
		public override void OnNewsReceived(int newsId, List<string> relatedSymbols)
		{

		}

		/// <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)
		{
			//AL
			if (CrossAbove(OTTOKripex, OTTOKripex, 0, 1))
			{
				SendMarketOrder(Symbol1, OrderQuantity, OrderSide.Buy, includeAfterSession:false);
				Debug($"Alış emri gönderildi. {OrderQuantity}");
			}
			//SAT
			if (CrossBelow(OTTOKripex, OTTOKripex, 0, 1))
			{
				SendMarketOrder(Symbol1, OrderQuantity, OrderSide.Sell, includeAfterSession:false);
				Debug($"Satış emri gönderildi. {OrderQuantity}");

			}
			
		}

		/// <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)
		{
		}

		/// <summary>
		/// Strateji durdurulduğunda bu fonksiyon tetiklenir.
		/// </summary>
		public override void OnStopped()
		{
		}
	}
}

0 Yorum