Merhabalar,
İstediğiniz strateji aşağıda verilmiştir.
Lütfen inceleyiniz.
Ayrıca rahatlıkla kod oluşturabileceğiniz Algoritma Sihirbazı seçeneği mevcuttur.
Dilerseniz aşağıdaki linkleri inceleyebilirsiniz.
Algoritma sihirbazı: 
https://destek.matriksdata.com/?qa=4438/iq-algoritma-sihirbaz%C4%B1n%C4%B1-nas%C4%B1l-kullan%C4%B1r%C4%B1z 
https://destek.matriksdata.com/?qa=4448/algoritma-sihirbaz%C4%B1-kullan%C4%B1m%C4%B1-%C3%B6rnekler-%C3%A7oklu-ko%C5%9Ful-olu%C5%9Fturma 
VIDEO 
***STRATEJİLERİ TEST/DENEME ORTAMINDA SINAMADAN VE SİZİN İSTEDİĞİNİZ ŞEKİLDE ÇALIŞTIĞINA EMİN OLMADAN GERÇEK ORTAMDA HİÇBİR ZAMAN ÇALIŞTIRMAYINIZ *** 
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 mnturandesteks : MatriksAlgo
	{
		[SymbolParameter("FGARAN")]
		public string Symbol;
		[Parameter(SymbolPeriod.Min5)]
		public SymbolPeriod SymbolPeriod;
		[Parameter(5)]
		public decimal BuyOrderQuantity;
		[Parameter(5)]
		public decimal SellOrderQuantity;
		[Parameter(9)]
			public int TdsequentialSetup1;
		[Parameter(4)]
			public int TdsequentialCountdown1;
		[Parameter(26)]
			public int MacdLongPeriod1;
		[Parameter(12)]
			public int MacdShortPeriod1;
		[Parameter(9)]
			public int MacdTriggerPeriod1;
		[Parameter(14)]
			public int StochasticrsiRsiPeriod1;
		[Parameter(14)]
			public int StochasticrsiStochasticPeriod1;
		[Parameter(3)]
			public int StochasticrsiKPeriod1;
		[Parameter(3)]
			public int StochasticrsiDPeriod1;
		[Parameter(MovMethod.E)]
			public MovMethod StochasticrsiSmoothMethod1;
		TdSequential tdSequential;
		MACD macd;
		StochasticRSI stochasticRSI;
		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			// alış koşulu
		if (stochasticRSI.Value[0][stochasticRSI.CurrentIndex] > stochasticRSI.Value[1][stochasticRSI.CurrentIndex] && macd.Value[0][macd.CurrentIndex] > macd.Value[1][macd.CurrentIndex] && tdSequential.Value[0][tdSequential.CurrentIndex] == 2m)
			{
				// Gerekli açığa satış
				FX_Alis(Symbol, BuyOrderQuantity);
				// #Gerekli açığa satış
			}
			// satış koşulu
			if (tdSequential.Value[0][tdSequential.CurrentIndex] == -2m && macd.Value[0][macd.CurrentIndex] < macd.Value[1][macd.CurrentIndex] && stochasticRSI.Value[0][stochasticRSI.CurrentIndex] < stochasticRSI.Value[1][stochasticRSI.CurrentIndex])
			{
				// Gerekli açığa satış
				FX_Satis(Symbol, SellOrderQuantity);
				// #Gerekli açığa satış
			}
		}
		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);
			tdSequential = TdSequentialIndicator(Symbol, SymbolPeriod, TdsequentialSetup1, TdsequentialCountdown1);
			macd = MACDIndicator(Symbol, SymbolPeriod, OHLCType.Close, MacdLongPeriod1, MacdShortPeriod1, MacdTriggerPeriod1);
			stochasticRSI = StochasticRSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, StochasticrsiRsiPeriod1, StochasticrsiStochasticPeriod1, StochasticrsiKPeriod1, StochasticrsiDPeriod1, StochasticrsiSmoothMethod1);
			// Gerekli açığa satış
			WorkWithPermanentSignal(true);
			if (HangiIslemleBaslasin == yon.Alis)
			{
				SendOrderSequential(true, Side.Buy);
			}else if (HangiIslemleBaslasin == yon.Satis)
			{
				SendOrderSequential(true, Side.Sell);
			}else
			{
				SendOrderSequential(true, Side.All);
			}
			SendOrderSequentialForShort(true, Side.All);
			// #Gerekli açığa satış
		}
		// Gerekli açığa satış
		[Parameter(true)]
		public bool AcigaSatisYapilsin;
		[Parameter(false)]
		public bool AksamSeansiniDahilEt;
		[Parameter(yon.Farketmez)]
		public yon HangiIslemleBaslasin;
		public enum yon
		{
			Alis, Satis, Farketmez
		}
		public void FX_Alis(string sembol, decimal quantity)
		{
			decimal _quantity = 0;
			if (LastOrderSide.Obj != Side.Buy)
			{
				if (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin)
				{
					SendMarketOrder(Symbol, quantity, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);
					_quantity = quantity;
				}else
				{
					if (LastOrderSideForShort.Obj == Side.All)
					{
						SendMarketOrder(Symbol, quantity, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);
						_quantity = quantity;
					}else
					{
						SendMarketOrder(Symbol, quantity * 2, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);
						_quantity = quantity * 2;
					}
				}
				Debug("Alış emri gönderildi.[ " + _quantity + " adet ]");
				LastOrderSide.Obj = Side.Buy;
				LastOrderSideForShort.Obj = Side.Buy;
			}
		}
		public void FX_Satis(string sembol, decimal quantity)
		{
			decimal _quantity = 0;
			if (LastOrderSide.Obj != Side.Sell)
			{
				if (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin)
				{
					SendMarketOrder(Symbol, quantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);
					_quantity = quantity;
				}else
				{
					if (LastOrderSideForShort.Obj == Side.All)
					{
						SendMarketOrder(Symbol, quantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);
						_quantity = quantity;
					}else
					{
						SendMarketOrder(Symbol, quantity * 2, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);
						_quantity = quantity * 2;
					}
				}
				Debug("Satış emri gönderildi.[ " + _quantity + " adet ]");
				LastOrderSide.Obj = Side.Sell;
				LastOrderSideForShort.Obj = Side.Sell;
			}
		}
		public override void OnSyntheticOrderTriggered(SyntheticAlgoOrder sOrder)
		{
			if (sOrder.EnableOrderSending)
			{
				LastOrderSide.Obj = Side.All;
				Debug("Sentetik emir tetiklendi");
			}
		}
		// #Gerekli açığa satış
	}
}
 
İyi çalışmalar.