0 beğenilme 0 beğenilmeme
325 kez görüntülendi
kıvanç beyin yayınladıgı supermovingavarage stratejisine al sat açıga sat koşulları barındıran kaldıraçlı halini kullanmak istiyorum bakiye bazlı düzenlenirse sevinirim
Algoritmik Trading kategorisinde (23 puan) tarafından | 325 kez görüntülendi

1 cevap

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

Merhabalar,

Sistem istediğiniz gibi düzenlenmiştir.

Fakat açığa satış yapılan sistemlerde bakiye bazlı işlem yapılmamaktadır.

Lütfen inceleyiniz.

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

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

		[Parameter(5)]
		public decimal BuyOrderQuantity;

		[Parameter(5)]
		public decimal SellOrderQuantity;

		[Parameter(3)]
			public int SupertrendmovingaverageLenght1;

		[Parameter(10)]
			public int SupertrendmovingaveragePeriod1;

		[Parameter(3)]
			public decimal SupertrendmovingaverageCoeff1;

		MatriksIndicator SuperTrendMovingAverage;

		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			// alış koşulu
			var barData1 = GetBarData(Symbol, SymbolPeriod);
			if (CrossBelow(SuperTrendMovingAverage, barData1, OHLCType.Close, 0))
			{
				// Gerekli açığa satış
				FX_Alis(Symbol, BuyOrderQuantity);
				// #Gerekli açığa satış
			}

			// satış koşulu
			if (CrossAbove(SuperTrendMovingAverage, barData1, OHLCType.Close, 0))
			{
				// Gerekli açığa satış
				FX_Satis(Symbol, SellOrderQuantity);
				// #Gerekli açığa satış
			}
		}

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

			SuperTrendMovingAverage.SetIndicatorParameters("Lenght", SupertrendmovingaverageLenght1);
			SuperTrendMovingAverage.SetIndicatorParameters("Period", SupertrendmovingaveragePeriod1);
			SuperTrendMovingAverage.SetIndicatorParameters("Coeff", SupertrendmovingaverageCoeff1); RegisterUserIndicator(SuperTrendMovingAverage, Symbol, SymbolPeriod, OHLCType.Close, 5);


			// 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,059 puan) tarafından
tarafından seçilmiş
0 0
bu sisteme kaldıraç tipi ve oranı ekleyebilirmisiniz
kaldıraç oranını nerden ayarlıyacagım ?
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.



8,637 soru
8,591 cevap
4,821 yorum
19,807 kullanıcı