0 beğenilme 0 beğenilmeme
451 kez görüntülendi
Merhaba, bir indikatöre bağlı fiyat seviyesine göre emirler oluşturmak istiyorum. Örneğin fiyat sma indikatörünün üstündeyken aşağı doğru kestiğinde sma çizgisinin %1.2 altına düştüğünde alım emri göndersin yada bandın altındayken bandı yukarı kestiğinde ve %1.2 üzerinde olduğunda satış emri göndersin. Bu kod için python üzerinde aşağıda yazdığım kodu buldum fakat matriks iq dili olan C sharp da bulamadım, bunu nasıl yapabilirim?

 

ax.plot(x_axis, new_df['SMA'], color='blue', lw=3, label = 'Moving Average')
ax.scatter(x_axis, new_df['Buy'] , color='green', lw=3, label = 'Buy',marker = '^', alpha = 1.2)
ax.scatter(x_axis, new_df['Sell'] , color='red', lw=3, label = 'Sell',marker = 'v', alpha = 1.2)

buradaki alpha kodundan bahsediyorum.
Algoritmik Trading kategorisinde (54 puan) tarafından | 451 kez görüntülendi

1 cevap

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

Merhaba,

Aşağıdaki stratejiyi 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;
using Matriks.AI;
using Matriks.AI.AiParameters;
using Matriks.AI.Data;
using Matriks.Trader.Core.TraderModels;

namespace Matriks.Lean.Algotrader
{
	public class smaa : MatriksAlgo
	{
		[SymbolParameter("GARAN")]
		public string Symbol1;

		[Parameter(SymbolPeriod.Day)]
		public SymbolPeriod SymbolPeriod1;

		[Parameter(5)]
		public int SmaPeriod1;

		[Parameter(1)]
		public decimal OrderQuantity1;

		SMA sma;

		public override void OnInit()
		{
			sma = SMAIndicator(Symbol1, SymbolPeriod1, OHLCType.Close, SmaPeriod1);

			SendOrderSequential(true, Side.Buy);
			WorkWithPermanentSignal(true);
		}
	
		bool ?AlisMI=null;
		
		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			var barData1 = GetBarData(Symbol1, SymbolPeriod1);
			var close=barData.BarData.Close;
			
			if (CrossBelow(barData1,sma, OHLCType.Close, 0))
			{
				AlisMI=true;
			}
			
			if(close*1.12m<=sma.CurrentValue && AlisMI==true){
				SendMarketOrder(Symbol1, OrderQuantity1, OrderSide.Buy, includeAfterSession:false);
				Debug("Alış emri gönderildi.");
				AlisMI=null;
			}
			
			if (CrossAbove(barData1,sma, OHLCType.Close, 0))
			{
				AlisMI=false;
			}
			
			if(sma.CurrentValue*1.12m<=close && AlisMI==false){
				SendMarketOrder(Symbol1, OrderQuantity1, OrderSide.Sell, includeAfterSession:false);
				Debug("Satış emri gönderildi.");
				AlisMI=null;
			}
			
		}		
	}
}

 

(15,402 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,503 soru
7,507 cevap
4,403 yorum
8,665 kullanıcı