MatriksIQ Destek
Matriks Destek
Matriks Web Destek
Matriks Mobile Destek
0 beğenilme 0 beğenilmeme
242 kez görüntülendi
Merhaba ;

Ott Line üzerindeki kapanışlarda alım emri  verirken SSlowK > SSlowD ise gerçekleştiren , Ott line altındaki kapanışlarda satım Emri verirkne SSlowD > Slow K mı diye kontrol eden ,aksi halde ikiside true gelene kadar işleme girmeyen bir strateji oluşturmak istiyorum . Support line kesişimi işleme konu olmayacak .Bu sayede Ottline üzerinde onay gelmeden yapılan gereksiz al satlardan kurtulmak istiyorum . Ayrıca işlemler sıralı gitmesi gerekecek ottline altında kapanış olduğu haldeSSlowK > SlowD olduğundan satış yapmadı ancak ottline fiyat ottline üzerine çıktı diye üst üste alım yapmamalı isteğim.

Ekipten Ercan bey sağolsun aşağıdaki kodu yolladı ancak öncesini yazamadığım için çalıştıramadım . Değerli desteğinizi rica ederim.

Sağolun varolun şimdiden

 

//Ott için al sinyali oluştuğunda  K>D ise

if (CrossAbove(ott.ottSupportLine,ott.ottLine) && stochasticSlow.StochasticSlowK.CurrentValue>stochasticSlow.StochasticSlowD.CurrentValue)

{

SendMarketOrder(Symbol, 1, OrderSide.Buy);

}

 

//Ott için sat sinyali oluştuğunda D>K ise

if (CrossBelow(ott.ottSupportLine,ott.ottLine) && stochasticSlow.StochasticSlowK.CurrentValue<stochasticSlow.StochasticSlowD.CurrentValue)

{

            SendMarketOrder(Symbol, 1, OrderSide.Sell);

}
Algoritmik Trading kategorisinde (10 puan) tarafından | 242 kez görüntülendi

1 cevap

1 beğenilme 0 beğenilmeme

Merhaba,

Aşağıdaki stratejiyi inceleyip deneyebilirsiniz.

Strateji adının OttStochOhlc olmasına dikkat ediniz.

***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 System.Windows.Media;
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 OttStochOhlc : 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(5)]
		public decimal Quantity;

		[Parameter(2)]
		public int OTTPeriod;

		[Parameter(1.4)]
		public decimal Opt;

		[Parameter(5)]
		public int StochK;

		[Parameter(3)]
		public int StochD;

		[Parameter(5)]
		public int StochYavasK;

		OTT ott;

		StochasticSlow stochasticSlow;

		/// <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()
		{
			stochasticSlow = StochasticSlowIndicator(Symbol, SymbolPeriod, OHLCType.Close, StochK, StochD, StochYavasK, MovMethod.Exponential);

			ott = OTTIndicator(Symbol, SymbolPeriod, OHLCType.Close, OTTPeriod, Opt, MovMethod.VAR, true);

			AddSymbol(Symbol, SymbolPeriod);

			//Eger backtestte emri bir al bir sat seklinde gonderilmesi isteniyor bu true set edilir. 
			//Alttaki satırı silerek veya false geçerek emirlerin sirayla gönderilmesini engelleyebilirsiniz. 
			SendOrderSequential(true);
			
			WorkWithPermanentSignal(true);
		}

		/// <summary>
		/// Init islemleri tamamlaninca, bardatalar kullanmaya hazir hale gelince bu fonksiyon tetiklenir. Data uzerinde bir defa yapilacak islemler icin kullanilir
		/// </summary>
		public override void OnInitComplated()
		{

		}

		/// <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(BarDataCurrentValues barDataCurrentValues)
		{

			// Alış şartı
			if (barDataCurrentValues.LastUpdate.Close>ott.ottLine.CurrentValue && stochasticSlow.StochasticSlowK.CurrentValue>stochasticSlow.StochasticSlowD.CurrentValue)
			{
				SendMarketOrder(Symbol, Quantity, OrderSide.Buy);
				Debug("Alış emri gönderildi.");
			}

			// satış şartı
			if (ott.ottLine.CurrentValue>barDataCurrentValues.LastUpdate.Close && stochasticSlow.StochasticSlowD.CurrentValue>stochasticSlow.StochasticSlowK.CurrentValue)
			{
				SendMarketOrder(Symbol, Quantity, OrderSide.Sell);
				Debug("Satış emri gönderildi.");
			}

		}

		/// <summary>
		/// Gönderilen emirlerin son durumu değiştikçe bu fonksiyon tetiklenir.
		/// </summary>
		/// <param name="barData">Emrin son durumu</param>
		public override void OnOrderUpdate(IOrder order)
		{
			if (order.OrdStatus.Obj == OrdStatus.Filled)
			{

			}
		}
	}
}

 

(4,597 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.



1,400 soru
1,393 cevap
1,508 yorum
877 kullanıcı