22.07.2022
0
0
162
0

IQ'da bir sembolde sinyal oluştuğunda başka bir sembole emir göndermek için bu stratejideki yapı kullanılabilir.


Burada şuna dikkat etmek gerekir IQ'da sentetik emirler eldeki pozisyonlara uygulandığından eklenen sentetik emirler sinyal üretilen sembole göre fiyat takibi yapmayacaktır.

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;
using Matriks.AI;
using Matriks.AI.AiParameters;
using Matriks.AI.Data;
using Matriks.Trader.Core.TraderModels;

namespace Matriks.Lean.Algotrader
{
	public class CokluSembol : MatriksAlgo
	{
		[SymbolParameter("BIMAS")]
			public string SinyalOlusturanSembol;

		[SymbolParameter("FBIMAS")]
			public string IslemYapilacakSembol;

		[Parameter(SymbolPeriod.Min5)]
			public SymbolPeriod SymbolPeriod;

		[Parameter(5)]
			public decimal BuyOrderQuantity;

		[Parameter(5)]
			public decimal SellOrderQuantity;

		[Parameter(3)]
			public int MostPeriod;

		[Parameter(2)]
			public decimal MostPercentage;

		[Parameter(MovMethod.E)]
			public MovMethod MostMovMethod;

		MOST most;

		public override void OnInit()
		{
			AddSymbol(IslemYapilacakSembol, SymbolPeriod);
			AddSymbol(SinyalOlusturanSembol, SymbolPeriod);

			most = MOSTIndicator(SinyalOlusturanSembol, SymbolPeriod, OHLCType.Close, MostPeriod, MostPercentage, MostMovMethod);

			SendOrderSequential(true, Side.Buy);
			WorkWithPermanentSignal(true);
		}

		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			if (barData.SymbolId == GetSymbolId(SinyalOlusturanSembol))
			{
				if (CrossAbove(most, most, 1, 0))
				{
					SendMarketOrder(IslemYapilacakSembol, BuyOrderQuantity, OrderSide.Buy, includeAfterSession:false);
					Debug("Alış emri gönderildi.");
				}
				if (CrossBelow(most, most, 1, 0))
				{
					SendMarketOrder(IslemYapilacakSembol, SellOrderQuantity, OrderSide.Sell, includeAfterSession:false);
					Debug("Satış emri gönderildi.");
				}
			}
		}
	}
}

0 Yorum