0 beğenilme 0 beğenilmeme
1,887 kez görüntülendi
Merhaba trailing stoploss Ve matriks prime da olan %5 yükselişin %50 düştüğünde Stop olması icin örnek paylasabilirmisiniz
Algoritmik Trading kategorisinde (20 puan) tarafından | 1,887 kez görüntülendi
0 0
Merhaba, bu konu benim içinde önemli arz ediyor. Lütfen destek olur musunuz?

3 Cevaplar

3 beğenilme 0 beğenilmeme

Merhabalar,

Örnek olması açısından Trailing Stoploss için aşağıdaki örneği hazırladık.

using System;
using System.Collections.Generic;
using System.Linq;
using Matriks.Data.Symbol;
using System.Windows.Media;
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 TrailingStopLoss : 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("XU100")]
		public string Symbol;

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

		[Parameter(5)]
		public int SMAPeriod;

		[Parameter(5)]
		public decimal OrderQuantity;

		[Parameter(5)]
		public decimal Percent;

		[Parameter(0.01)]
		public decimal PricePoint;

		[Parameter(true)]//true set edilirse kademeli, false set edilirse yüzdeli hareketli stoploss olarak çalışır
		public bool PricePoint_or_Percent;

		SMA sma;

		/// <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()
		{
			sma = SMAIndicator(Symbol, SymbolPeriod, OHLCType.Close, SMAPeriod);

			AddSymbol(Symbol, SymbolPeriod);

			// Algoritmanın kalıcı veya geçici sinyal ile çalışıp çalışmayacağını belirleyen fonksiyondur.
			// true geçerseniz algoritma sadece yeni bar açılışlarında çalışır, bu fonksiyonu çağırmazsanız veya false geçerseniz her işlem olduğunda algoritma tetiklenir.
			WorkWithPermanentSignal(true);

			//Eger 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);
		}

		SyntheticOrderPriceType type;
		decimal stopLevel;
		ISyntheticOrderPrices trailingstop = null;

		/// <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)
		{
			var barDataModel = GetBarData();
			var close = barDataModel.Close[barData.BarDataIndex];

			if (PricePoint_or_Percent)
			//PricePoint_or_Percent true set edilmiş işe kademeli stoploss aktif olur
			{
				stopLevel = PricePoint;
				type = SyntheticOrderPriceType.PricePoint;
			}
			if (!PricePoint_or_Percent)
			//PricePoint_or_Percent false set edilmiş işe yüzdeli stoploss aktif olur
			{
				stopLevel = Percent;
				type = SyntheticOrderPriceType.Percent;
			}

			if (CrossAbove(barDataModel, sma, OHLCType.Close))
			//Kayıt olunan sembolün kapanış değeri sma indikatörünü üzerine kırarsa al koşulu oluşturur
			//Ve İz Süren Stop kurulur.
			{
				SendMarketOrder(Symbol, OrderQuantity, (OrderSide.Buy));
				Debug("Alış Emri Gönderildi");
				Debug("Close : " + close);
				Debug("Sma : " + sma.CurrentValue);

				trailingstop = TrailingStopLoss(barDataModel.SymbolName, type, stopLevel);
				Debug("TrailingStopLoss => " + trailingstop);
				Debug("*****************************************************");
			}

			if (CrossBelow(barDataModel, sma, OHLCType.Close))
			//Kayıt olunan sembolün kapanış değeri sma indikatörünü altına kırarsa sat koşulu oluşturur
			//Ve İz Süren Stop kurulur.
			{
				SendMarketOrder(Symbol, OrderQuantity, (OrderSide.Sell));
				Debug("Satış Emri Gönderildi");
				Debug("Close : " + close);
				Debug("Sma : " + sma.CurrentValue);

				trailingstop = TrailingStopLoss(barDataModel.SymbolName, type, stopLevel);
				Debug("TrailingStopLoss => " + trailingstop);
				Debug("*****************************************************");
			}
		}
	}
}

İyi çalışmalar

(4,555 puan) tarafından
0 0
Teşekkür ederim  çok isime yarayacak
1 beğenilme 0 beğenilmeme

Merhaba,

Strateji yazılana kadar istediğinizi formüllü fiyat penceresinde zincir alarm olarak tanımlayıp kullanabilirsiniz.

Herhangi bir hücreye ilgili sembolün son fiyatını çağırınız.

=GARAN.SON

Maliyetinizi 7 TL olarak düşünürseniz. Sembolün son fiyatını aldığınız hücreye 2 tane alarm kurmalısınız.

Birinci alarmda %5 yükseliş fiyat >= 7.35 olmalı

İkinci alarmda %5 yükselişin %50 düşüşü  fiyat <=7.17 olmalı

Daha sonra bu iki alarmı zincir alarm ile birleştirip emir bağlayabilirsiniz.

(15,892 puan) tarafından
tarafından düzenlendi
0 beğenilme 0 beğenilmeme

Seçkin Durgay
(4,631 puan) tarafından
1 0
Teşekkürler buraya bakmıştım yalnız burda stoploss var trailing stop loss yok
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,636 soru
8,590 cevap
4,821 yorum
19,799 kullanıcı