Merhabalar,
İstemiş olduğunuz sistem aşağıda verilmiştir.
Lütfen inceleyiniz.
***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 Movalsat : MatriksAlgo
	{
		[SymbolParameter("FGARAN")]
		public string Symbol;
		[Parameter(SymbolPeriod.Min5)]
		public SymbolPeriod SymbolPeriod;
		[Parameter(5)]
		public decimal BuyOrderQuantity;
		[Parameter(5)]
		public decimal SellOrderQuantity;
		[Parameter(7)]
public int MovPeriod1;
		[Parameter(MovMethod.S)]
public MovMethod MovMovMethod1;
		[Parameter(30)]
public int MovPeriod2;
		[Parameter(MovMethod.S)]
public MovMethod MovMovMethod2;
		[Parameter(6)]
			public decimal StopLevel1;
		MOV mov;
		MOV mov2;
		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			// alış koşulu
			if (CrossAbove(mov, mov2, 0, 0))
			{
				// Gerekli açığa satış
				FX_Alis(Symbol, BuyOrderQuantity);
				StopLoss(Symbol, SyntheticOrderPriceType.Percent, StopLevel1);
				// #Gerekli açığa satış
			}
			// satış koşulu
			if (CrossBelow(mov, mov2, 0, 0))
			{
				// Gerekli açığa satış
				FX_Satis(Symbol, SellOrderQuantity);
				StopLoss(Symbol, SyntheticOrderPriceType.Percent, StopLevel1);
				// #Gerekli açığa satış
			}
		}
		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);
			mov = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, MovPeriod1, MovMovMethod1);
			mov2 = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, MovPeriod2, MovMovMethod2);
			// 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.