1 beğenilme 0 beğenilmeme
208 kez görüntülendi

Aşağıdaki stratejiyi hazırladım fakat grafikteki al-sat noktalarını yakalayamıyorum ?

 

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.AI;
using Matriks.Data.Symbol;
using Matriks.Engines;
using Matriks.Indicators;
using Matriks.Symbols;
using Matriks.AlgoTrader;
using Matriks.Trader.Core;
using Matriks.Trader.Core.Fields;
using Matriks.Trader.Core.TraderModels;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Lean.Algotrader.Trading;

namespace Matriks.Lean.Algotrader
{
	public class OTTFIBO : 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("GARAN")]
		public string Symbol;
		[Parameter(SymbolPeriod.Min5)]
		public SymbolPeriod SymbolPeriod;
		
		[Parameter(15)]
		public int vmaPeriyot;
		
		[Parameter(2)]
		public int i1;
		[Parameter(15)]
		public int i2;
		
		[Parameter(0.1d)]
		public decimal d1;
		[Parameter(0.077d)]
		public decimal d2;

		[Parameter(MovMethod.Variable)]
		public MovMethod TottMovMethod;

		[Parameter(5)]
		public decimal Quantity;

		int baslangıc = 0;
		int ottbibo = 0;
		int alıs = 0;
		int kontrol=0;

		// indikator tanımları.
		OttFibChn ottFibChn;
		VMA vma;
		/// <summary>
		/// Strateji ilk çalıştırıldığında bu fonksiyon tetiklenir. Tüm sembole kayit işlemleri,
		/// indikator ekleme, haberlere kayıt olma işlemleri burada yapılır. 
		/// </summary>
		public override void OnInit()
		{
			
			vma = VMAIndicator(Symbol, SymbolPeriod, OHLCType.Close, vmaPeriyot);
			
			ottFibChn = OttFibChnIndicator(Symbol, SymbolPeriod, OHLCType.Close, i1, i2, d1, d2, MovMethod.VAR);
			
			AddSymbol(Symbol, SymbolPeriod);
			
			SendOrderSequential(true);
		}

		/// <summary>
		/// Eklenen sembollerin bardata'ları ve indikatorler güncellendikçe bu fonksiyon tetiklenir. 
		/// </summary>
		/// <param name="barData">Bardata ve hesaplanan gerçekleşen işleme ait detaylar</param>
		public override void OnDataUpdate(BarDataEventArgs barData)
		{			
			if 		((CrossAbove(vma, ottFibChn.OttFibChnUp3))	&& (baslangıc==0 || kontrol==1))	{ ottbibo=0; kontrol=11;}
			else if ((CrossAbove(vma, ottFibChn.OttFibChnUp2))	&& (baslangıc==0 || kontrol==2))	{ ottbibo=0; kontrol=12;}
			else if ((CrossAbove(vma, ottFibChn.OttFibChnUp1))	&& (baslangıc==0 || kontrol==3))	{ ottbibo=0; kontrol=13;}
			else if ((CrossAbove(vma, ottFibChn.OTT))			&& (baslangıc==0 || kontrol==4))	{ ottbibo=0; kontrol=14;}
			else if ((CrossAbove(vma, ottFibChn.OttFibChnDwn1))	&& (baslangıc==0 || kontrol==5))	{ ottbibo=0; kontrol=15;}
			else if ((CrossAbove(vma, ottFibChn.OttFibChnDwn2))	&& (baslangıc==0 || kontrol==6))	{ ottbibo=0; kontrol=16;}
			
			
			if 		((CrossBelow(vma, ottFibChn.OttFibChnUp2))	&& (kontrol==11))	{ ottbibo=1; kontrol=1;}
			else if ((CrossBelow(vma, ottFibChn.OttFibChnUp1))	&& (kontrol==12))	{ ottbibo=1; kontrol=2;}
			else if ((CrossBelow(vma, ottFibChn.OTT))			&& (kontrol==13))	{ ottbibo=1; kontrol=3;}
			else if ((CrossBelow(vma, ottFibChn.OttFibChnDwn1))	&& (kontrol==14))	{ ottbibo=1; kontrol=4;}
			else if ((CrossBelow(vma, ottFibChn.OttFibChnDwn2))	&& (kontrol==15))	{ ottbibo=1; kontrol=5;}
			else if ((CrossBelow(vma, ottFibChn.OttFibChnDwn3))	&& (kontrol==16))	{ ottbibo=1; kontrol=6;}
			
			if (ottbibo==0 && alıs==0)
			{
				SendMarketOrder(Symbol, Quantity, OrderSide.Buy);
				Debug("Alış Emri Gönderildi");
				alıs=1;
			if(baslangıc==0);
				baslangıc=1;
			}

			if (ottbibo==1 && alıs==1)
			{
				SendMarketOrder(Symbol, Quantity, OrderSide.Sell);
				Debug("Satış Emri Gönderildi");
				alıs=0;
			}
		}
	}
}

 

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

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

7,591 soru
7,598 cevap
4,441 yorum
10,441 kullanıcı