0 beğenilme 0 beğenilmeme
453 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 | 453 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,422 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,511 soru
7,515 cevap
4,405 yorum
8,751 kullanıcı