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.

1

Yeni bir sistem talebi hk.

Soruldu
Görüntülenme
1.184 görüntülenme
Durum
Çözüldü

Selamlar, 

Yeni bir sistem düşünüyorum ismi RsiOtt

RSİ 'ın üzerine OTT atabilirmiyiz? yani RSİ grafiğin kapanış verileri üzerinden beslenicek ama OTT  , RSİ dan beslenicek. matriksiq da normalde yapılabiliyor. örn. aşağıdaki gibi

 

Bu sistemi yazabilirmisiniz? ek olarak birde stoploss ekleyebilirmisiniz?

 

Teşekkürler

 

Paylaş

Yorumlar (1)

1 Cevap

2

Kabul edilen cevap

Merhaba,

Ott indikatörünü başka indikatörden referans alarak oluştururken SupportLine çizgisinin eklenemediğini gördük. Bu sorun için iş açtık. En kısa zamanda çözülecektir. 

Altta paylaştığım kodda ise örnek olması açısından Most indikatörünü, Rsi indikatöründen referans alarak oluşturduk. Genel olarak başka indikatörden referans ile oluşturulan indikatörler kodda paylaştığım şekilde oluşturulur. 

Ott indikatöründeki sorunu giderdikten sonra aşağıdaki gibi kolayca oluşturabilirsiniz.

//Hata giderildikten sonra bu şekilde kullanılabilir.
rsi = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, 14);
ott = OTTIndicator(rsi, 2, 1.4m, MovMethod.VAR, true);

İyi çalışmalar

Başka indikatörden referans alarak oluşturulan indikatör için örnek strateji. Kodu kopyaladığınız strateji ile paylaştığım stratejinin adlarının aynı olmasına dikkat ediniz.

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 RsiMost : 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.Day)]
		public SymbolPeriod SymbolPeriod;

		[Parameter(3)]
		public int Period;

		[Parameter(2)]
		public decimal Percentage;

		[Parameter(MovMethod.E)]
		public MovMethod Method;

		RSI rsi;

		MOST most;


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

			rsi = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, 14);

			most = MOSTIndicator(rsi, Period, Percentage, Method);

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

		/// <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)
		{
			Debug("Most line : " + Ref(most, 0));
			Debug("ExMov line : " + Ref(most.ExMOV, 0));

		}
	}
}

 

BağlantıBayrakladüzenlendi · onurarliOrçunMatriks Destek4.555

Yorumlar (4)

  • ▲0
    selamlar, kodu Ott ile düzenlemeye çalıştım fakat bir çok hata alıyorum kodu derlerken. sizinde belirttiğiniz şekilde düzenlememe rağmen. düzenleyebildiğim kod aşağıdaki gibidir;

    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 RsiOtt : 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.Day)]

    public SymbolPeriod SymbolPeriod;

     

    [Parameter(3)]

    public int Period;

     

    [Parameter(2)]

    public decimal Percentage;

     

    [Parameter(MovMethod.E)]

    public MovMethod Method;

     

    RSI rsi;

     

    OTTott;

     

     

    /// <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()

    {

     

    rsi = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, 14);

    ott = OTTIndicator(rsi, 2, 1.4m, 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);

    }

     

    /// <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)

    {

    Debug("Most line : " + Ref(most, 0));

    Debug("ExMov line : " + Ref(most.ExMOV, 0));

     

    }

    }

    }

     

    koda bi bakabilirmisiniz nerelerde hata var?
  • ▲0

    Merhaba, 

    Ott indikatörünü başka indikatörden referans alarak oluştururken SupportLine çizgisinin eklenemediğini gördük. Bu sorun için iş açtık. En kısa zamanda çözülecektir. 

    Yukarıda yazdıklarımı tam incelemediniz sanırım. Ott indikatörünü başka indikatörden referans almada şuanda bir sorun var.

    Ott ile ilgi paylaştığım kod parçasını hata giderildikten sonra kullanmanız için paylaştım.

    İyi çalışmalar

    OrçunMatriks DestekBayrakla
  • ▲0
    ben yukarıda yazdıklarınızı iyi okudum. şuan bu kodun çalışmayacağının farkındayım. sadece yazıp içerde dursun istiyorum. yazdıklarınızdan fazlasının değiştirilmesi gerekiyor sanırım kodun içinde. şimdiden kodu düzenliyim aradan çıksın bu iş sonrasında sorun giderilince backtestlerimi zaten yaparım
  • ▲0
    Anladım ama şuanda ott kodu eksik olduğu için hata alacaksınız. Doğru olup olmadığına emin olamazsınız.

    Koda baktığımda OnDataUpdate içersindeki debugları değiştirmeniz lazım. Bu hatalar strateji editöründe bulunan error listte de görünür. Ordaki hataya çift tıkladığınızda hatanın olduğu satıra gider.
    OrçunMatriks DestekBayrakla

Cevabınız

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