Matriks Destek ve Yardım Platformu

Matriks Ürünleri ile ilgili tüm sorularınız için bizlere buradan ulaşabilirsiniz. Daha önce sorulan soruları ve verilen cevapları ilgili sekmelerden ve arama üzerinden inceleyebilirsiniz. Sağ taraftaki kategoriler üzerinden İlgilendiğiniz özelliklerle ilgili soruları filtreleyebilirsiniz. Soru ve cevapları sosyal medyada paylaşabilirsiniz. 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.

0

Rsi 8 ve Rsi 34 kesişim botu bazı emirleri kaçırıyor.

Soruldu
Görüntülenme
719 görüntülenme
Durum
Çözüldü

Merhaba, Matriks IQ strateji editörü üzerinden rsi 8 - rsi 34 kesişim botunun backtestini yaparken bazı emirleri atladığını fark ettim. Son 500 barda test ettiğimde 23 Haziran saat 03.00'te verilen alış emrinin satış emri geç veriliyor. Bunun gibi alım emirlerinin kayma ve satış emirlerinin gerçekleşmeme durumlar da oluşuyor. Bu sorunu nasıl çözebilirim? Kod:

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using System.Windows.Media;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.AlgoTrader;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Trader.Core.TraderModels;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;

namespace Matriks.Lean.Algotrader
{
	public class RSI_34_8_Cross : MatriksAlgo
	{
		[SymbolParameter("BTC_USDT_BIN")]
		public string Symbol;

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

		[Parameter(0.005)]
		public decimal BuyOrderQuantity;

		[Parameter(0.005)]
		public decimal SellOrderQuantity;
		
		[Parameter(1.04)]
		public decimal TakeProfitPercentage;

		[Parameter(0.98)]
		public decimal StopLossPercentage;

		[Parameter(8)]
		public int RSIPeriodS;

		[Parameter(34)]
		public int RSIPeriodL;

		RSI rsil;
		RSI rsis;
		
		decimal orderclose = 0;
		decimal stoploss = 0;
		decimal takeprofit = 0;
		
		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);
			
			rsil = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, RSIPeriodL);
			rsis = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, RSIPeriodS);
			
			WorkWithPermanentSignal(true);
			
			SendOrderSequential(true);
			
		}

		public override void OnInitCompleted()
		{

		}

		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			var close = barData.BarData.Close;
			
			if (CrossAbove(rsis,rsil))
			{
				SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy);
				orderclose = close;
				takeprofit = orderclose*TakeProfitPercentage;
				stoploss = orderclose*StopLossPercentage;
				Debug(orderclose);
				Debug(takeprofit);
			}
			
			if (close > takeprofit)
			{
				SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell);
			}
			
			if (close < stoploss)
			{
				SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell);
			}
				
				
			
		}

		public override void OnOrderUpdate(IOrder order)
		{
			if (order.OrdStatus.Obj == OrdStatus.Filled)
			{

			}
		}

		public override void OnStopped()
		{
		}
	}
}

 

Paylaş

1 Cevap

0

Kabul edilen cevap

Merhabalar,

Algoritma Sihirbazında kripto para seçimi yapıp sistem oluşturduğunuzda Kar Al ve Zarar Durdur emir tipleri görünmez.

Bizlerde bunun yerine herhangi bir BIST sembolü seçip bütün sistemi buna göre hazırlamanızı tavsiye ediyoruz. 

Çünkü sonrasında (backtest yaparken ya da sistemi çalıştırırken) sembol ismini değiştirebiliyorsunuz.

Size Kar Al ve Zarar Durdur ekleyebileceğiniz yeri ve kodunuzun bu iki fonksiyon ile yazılmış halini aşağıya bırakıyorum, inceleyebilirsiniz.

Sisteminizde herhangi bir değişiklik yapmadım.

Yalnızca alış koşulunun altına Kar Al ve Zarar Durdur satırlarını ekledim.

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using Matriks.Engines;
using System.Windows.Media;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.AlgoTrader;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Trader.Core.TraderModels;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;

namespace Matriks.Lean.Algotrader
{
	public class RSI_34_8 : MatriksAlgo
	{
		[SymbolParameter("BTC_USDT_BIN")]
		public string Symbol;

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

		[Parameter(0.005)]
		public decimal BuyOrderQuantity;

		[Parameter(0.005)]
		public decimal SellOrderQuantity;

		[Parameter(1.04)]
		public decimal TakeProfitPercentage;

		[Parameter(0.98)]
		public decimal StopLossPercentage;

		[Parameter(8)]
		public int RSIPeriodS;

		[Parameter(34)]
		public int RSIPeriodL;

		RSI rsil;
		RSI rsis;



		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);

			rsil = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, RSIPeriodL);
			rsis = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, RSIPeriodS);

			WorkWithPermanentSignal(true);

			SendOrderSequential(true);

		}

		public override void OnInitCompleted()
		{

		}

		public override void OnDataUpdate(BarDataEventArgs barData)
		{


			if (CrossAbove(rsis, rsil) && LastOrderSide.Obj != Side.Buy)
			{
				SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy);
				TakeProfit(Symbol, SyntheticOrderPriceType.Percent, TakeProfitPercentage);
				StopLoss(Symbol, SyntheticOrderPriceType.Percent, StopLossPercentage);

			}
		}

		public override void OnOrderUpdate(IOrder order)
		{
			if (order.OrdStatus.Obj == OrdStatus.Filled)
			{

			}
		}

		public override void OnStopped()
		{
		}
	}
}

Birde bunlara ek olarak sentetik emir fonksiyonlarının doğru çalışabilmesi için alış koşulunuz içerisine yön kontrolü ekledim.

Bunun detayı içinse aşağıdaki linki lütfen inceleyiniz.

https://destek.matriksdata.com/?qa=12386/matriks-iq-kar-al-y%C3%BCzdelik

İyi çalışmalar.

 

BağlantıBayrakladüzenlendi · ertugumsurasiyangMatriks Destek11.113

Cevabınız

Cevap yazmak için giriş yapın.Giriş yapKayıt ol