using System;
using System.Collections.Generic;
using System.Linq;
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;
namespace Matriks.Lean.Algotrader
{
	public class TOTTKaldıracStrategy : 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("BTC_USDT_FBIN")]
						public string Symbol;
		[Parameter(SymbolPeriod.Min5)]
						public SymbolPeriod SymbolPeriod;
		[Parameter(5)]
						public decimal BuyOrderQuantity;
		[Parameter(5)]
						public decimal SellOrderQuantity;
		[Parameter(40)]
		public int TOTTPeriod;
		[Parameter(1)]
		public decimal TOTTOpt;
		[Parameter(0.001d)]
		public decimal TwinOttCoef;
		[Parameter(MovMethod.Variable)]
		public MovMethod TottMovMethod;
		[Parameter(3)]
						public int Kaldirac;
		// indikator tanımları.
		TOTT tott;
		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);
			tott = TOTTIndicator(Symbol, SymbolPeriod, OHLCType.Close, TOTTPeriod, TOTTOpt, TwinOttCoef, TottMovMethod);
			SendOrderSequential(true, Side.All);
			WorkWithPermanentSignal(true);
			if (Kaldirac>30)
			{
				// kaldıraç oranı
				SetLeverage(Symbol, 3);
				// kaldıraç tipi - true isolated, false cross
				SetLeverageType(Symbol, true);
			}else
			{
				SetLeverage(Symbol, Kaldirac);
				SetLeverageType(Symbol, 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 barData)
		{
			if (CrossAbove(tott.Mov, tott.OttUp) && LastOrderSide.Obj != Side.Buy)
			{
				if (LastOrderSide.Obj == Side.All)
				{
					SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy);
				}else
				{
					SendMarketOrder(Symbol, BuyOrderQuantity * 2, OrderSide.Buy);
				}
				Debug("Alış Emri Gönderildi");
			}
			if (CrossBelow(tott.Mov, tott.OttDown) && LastOrderSide.Obj != Side.Sell)
			{
				if (LastOrderSide.Obj == Side.All)
				{
					SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell);
				}else
				{
					SendMarketOrder(Symbol, SellOrderQuantity * 2, OrderSide.Sell);
				}
				Debug("Satış Emri Gönderildi");
			}
		}
	}
}
Kolay gelsin. Kusura bakmayın rahatsız ediyorum. Rica etsem koda kar al ekleyebilir misiniz. Teşekkür ederim.