MatriksIQ Destek
Matriks Destek
Matriks Web Destek
Matriks Mobile Destek
0 beğenilme 0 beğenilmeme
87 kez görüntülendi
Bir stratejinin içerisinde ELİS indikatörü koyuldu ve kaldıracı otomatik ayarlıyor ama başlangıç bakiyesi kaldıraç oranına göre vadeli piyasada değiştiği için bu işin içinden çıkamadım.Bu durumu çözebilen var mı ? varsa nasıl başardığını anlatabilir mi ?
Algoritmik Trading kategorisinde (35 puan) tarafından | 87 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhabalar,

Dilerseniz aşağıdaki örneği inceleyebilirsiniz.

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 ElisOrnek : MatriksAlgo
	{
		// Strateji çalıştırılırken kullanacağımız parametreler. Eğer sembolle ilgili bir parametre ise,
		// "SymbolParameter" ile, değilse "Parameter" ile tanımlama yaparız. Parantez içindeki değerler default değerleridir.

		[SymbolParameter("BTC_USDT_FBIN")]
		public string Symbol;

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

		[Parameter(0.005)]
		public decimal BuyOrderQuantity;

		[Parameter(0.005)]
		public decimal SellOrderQuantity;

		[Parameter(5)]
		public int MovPeriod;

		[Parameter(22)]
		public int MovPeriod2;

		// indikator tanımları.
		MOV mov;
		MOV mov2;

		// Gerekli Elis
		MatriksIndicator ELIS_IQ;

		[Parameter(Gears.Standard)]
		public Gears Gear;

		public enum Gears
		{
			Conservative = 1, Standard = 2, Average = 3, Risky = 4, Agressive = 5
		}

		[Output]
		public int KaldiracOrani = 3;
		// #Gerekli Elis

		public override void OnInit()
		{
			ELIS_IQ = new ELIS_IQ();
			ELIS_IQ.SetIndicatorParameters("Gear", Gear);
			ELIS_IQ.SetIndicatorParameters("Period", 50);

			RegisterUserIndicator(ELIS_IQ, Symbol, SymbolPeriod.Min60, OHLCType.Close, 5);

			AddSymbol(Symbol, SymbolPeriod);
			mov = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, MovPeriod, MovMethod.Exponential);
			mov2 = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, MovPeriod2, MovMethod.Exponential);

			SendOrderSequential(true);
			WorkWithPermanentSignal(true);

			// kaldıraç tipi - true isolated, false cross
			SetLeverageType(Symbol, true);
		}

		public void FX_KaldiracAyarla()
		{
			if (KaldiracOrani != ELIS_IQ.CurrentValue)
			{
				KaldiracOrani = (int) ELIS_IQ.CurrentValue;
				SetLeverage(Symbol, KaldiracOrani);
				Debug("Kaldıraç oranı düzenlendi. " + KaldiracOrani);
			}
		}

		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			if (barData.PeriodInfo == SymbolPeriod.ToPeriodInfo())
			{
				if (CrossAbove(mov, mov2) && LastOrderSide.Obj != Side.Buy)
				{
					FX_KaldiracAyarla();
					SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy);
					Debug("Alış Emri Gönderildi");
				}

				if (CrossBelow(mov, mov2) && LastOrderSide.Obj != Side.Sell)
				{
					FX_KaldiracAyarla();
					SendMarketOrder(Symbol, SellOrderQuantity, OrderSide.Sell);
					Debug("Satış Emri Gönderildi");
				}
			}
		}
	}
}

İyi çalışmalar.

(3,794 puan) tarafından
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.



4,285 soru
4,259 cevap
2,939 yorum
3,177 kullanıcı