0 beğenilme 0 beğenilmeme
396 kez görüntülendi
Merhabalar,

Matriks IQ üzerinden kendi belirlediğim stratejimi çalıştırmak istiyorum. Ancak Tradinview den buraya geçince kod anlamında sıfırdan başlamış gibi oldum.

Stratejim içeriği:

Manuel Kaldıraç seçeneği

LONG: TD Sequential Yeşil 2 + Macd Al + Stoch RSI Al

SHORT : TD Sequential Kırmızı 2 + Macd Sat + Stoch RSI Sat

Bunu kod olarak gönderebilir misiniz?
Explorer kategorisinde (14 puan) tarafından | 396 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhabalar,

İstediğiniz strateji aşağıda verilmiştir.

Lütfen inceleyiniz.

Ayrıca rahatlıkla kod oluşturabileceğiniz Algoritma Sihirbazı seçeneği mevcuttur.

Dilerseniz aşağıdaki linkleri inceleyebilirsiniz.

Algoritma sihirbazı:

https://destek.matriksdata.com/?qa=4438/iq-algoritma-sihirbaz%C4%B1n%C4%B1-nas%C4%B1l-kullan%C4%B1r%C4%B1z

https://destek.matriksdata.com/?qa=4448/algoritma-sihirbaz%C4%B1-kullan%C4%B1m%C4%B1-%C3%B6rnekler-%C3%A7oklu-ko%C5%9Ful-olu%C5%9Fturma

***STRATEJİLERİ TEST/DENEME ORTAMINDA SINAMADAN VE SİZİN İSTEDİĞİNİZ ŞEKİLDE ÇALIŞTIĞINA EMİN OLMADAN GERÇEK ORTAMDA HİÇBİR ZAMAN ÇALIŞTIRMAYINIZ ***

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

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

		[Parameter(5)]
		public decimal BuyOrderQuantity;

		[Parameter(5)]
		public decimal SellOrderQuantity;

		[Parameter(9)]
			public int TdsequentialSetup1;

		[Parameter(4)]
			public int TdsequentialCountdown1;

		[Parameter(26)]
			public int MacdLongPeriod1;

		[Parameter(12)]
			public int MacdShortPeriod1;

		[Parameter(9)]
			public int MacdTriggerPeriod1;

		[Parameter(14)]
			public int StochasticrsiRsiPeriod1;

		[Parameter(14)]
			public int StochasticrsiStochasticPeriod1;

		[Parameter(3)]
			public int StochasticrsiKPeriod1;

		[Parameter(3)]
			public int StochasticrsiDPeriod1;

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

		TdSequential tdSequential;
		MACD macd;
		StochasticRSI stochasticRSI;

		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			// alış koşulu
		if (stochasticRSI.Value[0][stochasticRSI.CurrentIndex] > stochasticRSI.Value[1][stochasticRSI.CurrentIndex] && macd.Value[0][macd.CurrentIndex] > macd.Value[1][macd.CurrentIndex] && tdSequential.Value[0][tdSequential.CurrentIndex] == 2m)
			{
				// Gerekli açığa satış
				FX_Alis(Symbol, BuyOrderQuantity);
				// #Gerekli açığa satış
			}

			// satış koşulu
			if (tdSequential.Value[0][tdSequential.CurrentIndex] == -2m && macd.Value[0][macd.CurrentIndex] < macd.Value[1][macd.CurrentIndex] && stochasticRSI.Value[0][stochasticRSI.CurrentIndex] < stochasticRSI.Value[1][stochasticRSI.CurrentIndex])
			{
				// Gerekli açığa satış
				FX_Satis(Symbol, SellOrderQuantity);
				// #Gerekli açığa satış
			}
		}

		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);
			tdSequential = TdSequentialIndicator(Symbol, SymbolPeriod, TdsequentialSetup1, TdsequentialCountdown1);
			macd = MACDIndicator(Symbol, SymbolPeriod, OHLCType.Close, MacdLongPeriod1, MacdShortPeriod1, MacdTriggerPeriod1);
			stochasticRSI = StochasticRSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, StochasticrsiRsiPeriod1, StochasticrsiStochasticPeriod1, StochasticrsiKPeriod1, StochasticrsiDPeriod1, StochasticrsiSmoothMethod1);


			// Gerekli açığa satış
			WorkWithPermanentSignal(true);

			if (HangiIslemleBaslasin == yon.Alis)
			{
				SendOrderSequential(true, Side.Buy);
			}else if (HangiIslemleBaslasin == yon.Satis)
			{
				SendOrderSequential(true, Side.Sell);
			}else
			{
				SendOrderSequential(true, Side.All);
			}

			SendOrderSequentialForShort(true, Side.All);
			// #Gerekli açığa satış
		}

		// Gerekli açığa satış
		[Parameter(true)]
		public bool AcigaSatisYapilsin;

		[Parameter(false)]
		public bool AksamSeansiniDahilEt;

		[Parameter(yon.Farketmez)]
		public yon HangiIslemleBaslasin;

		public enum yon
		{
			Alis, Satis, Farketmez
		}

		public void FX_Alis(string sembol, decimal quantity)
		{
			decimal _quantity = 0;

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

				Debug("Alış emri gönderildi.[ " + _quantity + " adet ]");
				LastOrderSide.Obj = Side.Buy;
				LastOrderSideForShort.Obj = Side.Buy;
			}
		}

		public void FX_Satis(string sembol, decimal quantity)
		{
			decimal _quantity = 0;

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

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

				Debug("Satış emri gönderildi.[ " + _quantity + " adet ]");
				LastOrderSide.Obj = Side.Sell;
				LastOrderSideForShort.Obj = Side.Sell;
			}
		}

		public override void OnSyntheticOrderTriggered(SyntheticAlgoOrder sOrder)
		{
			if (sOrder.EnableOrderSending)
			{
				LastOrderSide.Obj = Side.All;
				Debug("Sentetik emir tetiklendi");
			}
		}
		// #Gerekli açığa satış
	}
}

İyi çalışmalar.

(11,069 puan) tarafından
0 0
Yardımınız için teşekkürler. İyi çalışmalar
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,586 soru
7,592 cevap
4,435 yorum
10,412 kullanıcı