Matriks Destek ve Yardım Platformu

Matriks Ürünleri ile ilgili tüm sorularınız için bizlere buradan ulaşabilirsiniz. Daha önce sorulan soruları ve verilen cevapları ilgili sekmelerden ve arama üzerinden inceleyebilirsiniz. Sağ taraftaki kategoriler üzerinden İlgilendiğiniz özelliklerle ilgili soruları filtreleyebilirsiniz. Soru ve cevapları sosyal medyada paylaşabilirsiniz. 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.

3 Cevap

1

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.

Unblocked Games offering a wide range of experiences: action, puzzle, platform, racing, clicker mechanics, strategy, sports, even horror.
https://unblocked1games.github.io
BağlantıBayrakladüzenlendi · KripexKripexMatriks Destek16.499
3

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

BağlantıBayraklaOrçunMatriks Destek4.555

Yorumlar (1)

Cevabınız

Cevap yazmak için giriş yapın.Giriş yapKayıt ol