0 beğenilme 0 beğenilmeme
177 kez görüntülendi
using System;
using System.Collections.Generic;
using System.Linq;
using Matriks;
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 FAKBNK : MatriksAlgo
	{
		[SymbolParameter("AKBNK")]
			public string Symbol1;

		[SymbolParameter("FAKBNK")]
			public string OrderSymbol1;

		[Parameter(SymbolPeriod.Min15)]
			public SymbolPeriod SymbolPeriod1;
		
		[Parameter(17)]
			public int AlphatrendPeriod1;

		[Parameter(1.3)]
			public decimal AlphatrendCoeff1;

		[Parameter(Momentum.MFI)]
			public Momentum AlphatrendMomentum1;

		[Parameter(28)]
		public decimal BuyOrderQuantity;

		[Parameter(28)]
		public decimal SellOrderQuantity;

		AlphaTrend alphaTrend;


		public override void OnInit()
		{
			AddSymbol(OrderSymbol1, SymbolPeriod1);
			AddSymbol(Symbol1, SymbolPeriod1);

			alphaTrend = AlphaTrendIndicator(Symbol1, SymbolPeriod1, OHLCType.Close, AlphatrendPeriod1, AlphatrendCoeff1, AlphatrendMomentum1);


			// Gerekli başla - Açığa satış
			WorkWithPermanentSignal(true);
			SendOrderSequential(true, HangiIslemleBaslasin);
			SendOrderSequentialForShort(true, Side.All);
			// #Gerekli bitti - Açığa satış
		}

		public override void OnDataUpdate(BarDataEventArgs barData)
		{
			if (barData.SymbolId == GetSymbolId(Symbol1))
			{
				if (CrossAbove(alphaTrend, alphaTrend, 1, 0))
				{
					// Gerekli başla - Açığa satış
					FX_Alis(OrderSymbol1, BuyOrderQuantity);
				
					// #Gerekli bitti - Açığa satış
				}
				if (CrossBelow(alphaTrend, alphaTrend, 1, 0))
				{
					// Gerekli başla - Açığa satış
					FX_Satis(OrderSymbol1, SellOrderQuantity);
					
					// #Gerekli bitti - Açığa satış
				}

			}

		}

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

		[Parameter(false)]
		public bool AksamSeansiniDahilEt;

		[Parameter(Side.All)]
		public Side HangiIslemleBaslasin;

		public bool FX_Alis(string sembol, decimal quantity)
		{
			bool sonuc = false;
			if (LastOrderSide.Obj != Side.Buy)
			{
				var _quantity = (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin) ? quantity:(LastOrderSideForShort.Obj == Side.All) ? quantity:quantity * 2;

				SendMarketOrder(sembol, _quantity, OrderSide.Buy, includeAfterSession:AksamSeansiniDahilEt);
				Debug("Alış emri gönderildi.[ " + _quantity + " adet ]");
				LastOrderSideForShort = LastOrderSide;
				sentetikEmirdenMI = false;
				sonuc = true;
			}
			return sonuc;
		}

		public bool FX_Satis(string sembol, decimal quantity)
		{
			bool sonuc = false;
			if (LastOrderSide.Obj != Side.Sell)
			{
				var _quantity = (LastOrderSide.Obj == Side.All || !AcigaSatisYapilsin) ? quantity:(LastOrderSideForShort.Obj == Side.All) ? quantity:quantity * 2;

				SendMarketOrder(sembol, _quantity, OrderSide.Sell, includeAfterSession:AksamSeansiniDahilEt);
				Debug("Satış emri gönderildi.[ " + _quantity + " adet ]");
				LastOrderSideForShort = LastOrderSide;
				sentetikEmirdenMI = false;
				sonuc = true;
			}
			return sonuc;
		}

		bool sentetikEmirdenMI = false;

		public override void OnSyntheticOrderTriggered(SyntheticAlgoOrder sOrder)
		{
			if (sOrder.EnableOrderSending)
			{
				if (AcigaSatisYapilsin)
				{
					LastOrderSide.Obj = Side.All;
					sentetikEmirdenMI = true;
				}

				Debug("Sentetik emir tetiklendi");
			}
		}
		// #Gerekli bitti - Açığa satış
		
	}
}

İlgili kodda terss işleme dönmek için bir hata yer alıyor mu? Mevcut kodda çalıştırdığım bir algoritma, long yönlü işlemdeyken short yönlü sinyal şartları sağlanmış olmasına rağmen algoritma bu sinyali üretmemiş ve ters pozisyona geçmemiştir.

 

 

Algoritmik Trading kategorisinde (16 puan) tarafından | 177 kez görüntülendi

Bu soruya cevap vermek için lütfen giriş yapınız veya kayıt olunuz.

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,635 soru
8,589 cevap
4,821 yorum
19,779 kullanıcı