0 beğenilme 0 beğenilmeme
432 kez görüntülendi
Merhabalar; Kolay gelsin

Benim Matriks Prime'da bu şekilde vadeli stratejim vardı. Matriks IQ ya geçince bunu bir türlü beceremedim. Lütfen yardımcı olabilirmisiniz. Açığa satış tercihi de olacak

AL

cross(KAI(c,opt3),opt4)  or Cross(c,MOST(c,OPT1,OPT6)) or (KAI(c,opt3)<opt7  and c>MOST(c,OPT1,OPT6))
 

SAT

cross(opt5,KAI(c,opt3)) or Cross(MOST(c,OPT1,OPT6),c) or (KAI(c,opt3)>opt8  and c<MOST(c,OPT1,OPT6))

AÇIĞA SAT

cross(opt5,KAI(c,opt3)) or Cross(MOST(c,OPT1,OPT6),c) or (KAI(c,opt3)>opt8  and c<MOST(c,OPT1,OPT6))

AÇIK POZİSYONU KAPAT

cross(KAI(c,opt3),opt4)  or Cross(c,MOST(c,OPT1,OPT6)) or (KAI(c,opt3)<opt7  and c>MOST(c,OPT1,OPT6))
Algoritmik Trading kategorisinde (37 puan) tarafından | 432 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme
En İyi Cevap

Merhabalar,

İstemiş olduğunuz sistem aşağıda mevcuttur.

Açığa satış tercihi de vardır, eğer isterseniz kullanabilirsiniz. 

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 centilmenstop : MatriksAlgo
	{
		[SymbolParameter("FGARAN")]
		public string Symbol;

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

		[Parameter(5)]
		public decimal BuyOrderQuantity;

		[Parameter(5)]
		public decimal SellOrderQuantity;

		[Parameter(14)]
			public int KairiPeriod1;

		[Parameter(3)]
			public int MostPeriod1;

		[Parameter(2)]
			public decimal MostPercentage1;

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

		[Parameter(2)]
			public decimal opt4;

		[Parameter(2)]
			public decimal opt7;

		[Parameter(2)]
			public decimal opt5;

		[Parameter(2)]
			public decimal opt8;


		[Parameter(3)]
		public int KaldiracOrani;


		KAIRI kairi;
		MOST most;

		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			var barData1 = GetBarData(Symbol, SymbolPeriod);
			var ohlcData1 = GetSelectedValueFromBarData(barData1, OHLCType.Close);
			
			if (CrossAbove(kairi, opt4, 0) || CrossBelow(most, barData1, OHLCType.Close, 0) || kairi.Value[0][kairi.CurrentIndex] < opt7 && most.Value[0][most.CurrentIndex] < ohlcData1)
			{
				FX_Alis();
			}

			if (CrossBelow(kairi, opt5, 0) || CrossAbove(most, barData1, OHLCType.Close, 0) || kairi.Value[0][kairi.CurrentIndex] > opt8 && most.Value[0][most.CurrentIndex] > ohlcData1)
			{
				FX_Satis();
			}
		}

		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);
			kairi = KAIRIIndicator(Symbol, SymbolPeriod, OHLCType.Close, KairiPeriod1);
			most = MOSTIndicator(Symbol, SymbolPeriod, OHLCType.Close, MostPeriod1, MostPercentage1, MostMovMethod1);

			// Gerekli			
			WorkWithPermanentSignal(true);

			if (AcigaSatisYapilsin)
			{
				SendOrderSequential(true, Side.Buy);
				SendOrderSequentialForShort(true, Side.All);
			}else
			{
				SendOrderSequential(true, Side.Buy);
			}
			// #Gerekli

			// kaldıraç oranı
			SetLeverage(Symbol, KaldiracOrani);
			// kaldıraç tipi – true isolated, false cross
			SetLeverageType(Symbol, false);
			// Gerekli

		}

		[Parameter(false)]
		public bool AcigaSatisYapilsin;

		[Parameter(false)]
		public bool AksamSeansiniDahilEt;

		List<string> orderIDList = new List<string>();

		public void FX_Alis()
		{
			string _orderID = string.Empty; ;
			decimal _quantity = 0;

			if (LastOrderSide.Obj != Side.Buy)
			{
				if (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin)
				{
					_orderID = SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);
					_quantity = BuyOrderQuantity;
				}else
				{
					if (LastOrderSideForShort.Obj == Side.All)
					{
						_orderID = SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);
						_quantity = BuyOrderQuantity;
					}else
					{
						_orderID = SendMarketOrder(Symbol, BuyOrderQuantity * 2, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);
						_quantity = BuyOrderQuantity * 2;
					}
				}

				if (_orderID != string.Empty && _quantity != 0)
				{
					orderIDList.Add(_orderID);
					Debug("Alış emri gönderildi.[ " + _quantity + " adet ]");
					LastOrderSide.Obj = Side.Buy;
					LastOrderSideForShort.Obj = Side.Buy;
				}
			}
		}

		public void FX_Satis()
		{
			string _orderID = string.Empty; ;
			decimal _quantity = 0;

			if (LastOrderSide.Obj != Side.Sell)
			{
				if (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin)
				{
					_orderID = SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);
					_quantity = SellOrderQuantity;
				}else
				{
					if (LastOrderSideForShort.Obj == Side.All)
					{
						_orderID = SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);
						_quantity = SellOrderQuantity;

					}else
					{
						_orderID = SendMarketOrder(Symbol, SellOrderQuantity * 2, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);
						_quantity = SellOrderQuantity * 2;
					}
				}


				if (_orderID != string.Empty && _quantity != 0)
				{
					orderIDList.Add(_orderID);
					Debug("Satış emri gönderildi.[ " + _quantity + " adet ]");
					LastOrderSide.Obj = Side.Sell;
					LastOrderSideForShort.Obj = Side.Sell;
				}
			}
		}

		public override void OnOrderUpdate(IOrder order)
		{
			if (order.OrdStatus.Obj == OrdStatus.Filled)
			{
				// Senntetik emirler tanımlanıyor
				//				StopLoss(Symbol, SyntheticOrderPriceType.Percent, 1);
				//				TakeProfit(Symbol, SyntheticOrderPriceType.Percent, 1);
				if (!orderIDList.Contains(order.CliOrdID) && AcigaSatisYapilsin)
				{
					LastOrderSideForShort.Obj = Side.All;
					Debug("Sentetik emir tetiklendi");
				}
			}
		}
		// #Gerekli
	}
}

İyi çalışmalar.

(11,069 puan) tarafından
tarafından seçilmiş
Hoş geldiniz, Matriks Destek Platformu sizlere sorularınızın hızlıca cevaplanması için bir ortam sağlar. Sorduğunuz ve cevapladığınız soruların ve yorumlarınızın aldığı oylar üzerinden puan kazanırsınız. Puan sistemine bağlı kampanyamızla ücretsiz kullanım avantajlarından faydalanabilirsiniz.



7,591 soru
7,598 cevap
4,441 yorum
10,459 kullanıcı