İzleyen stoploss
- Soruldu
- Kategori
- Algoritmik Trading
- Görüntülenme
- 2.546 görüntülenme
- Durum
- Cevaplandı
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.
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.
Merhaba,
Burayı inceleyebilirsiniz :
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
Sitenin çalışması için gerekli çerezleri kullanıyoruz. Ziyaretleri anlamak için analitik çerezleri yalnızca onayınızla kullanırız. Çerez Politikası