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.

0

MatriksIQ BarData objesiyle degisken yaratmak mumkun mu?

Soruldu
Görüntülenme
1.898 görüntülenme
Durum
Cevaplandı

Merhabalar, 

MatriksIQ'daki barData objesinden data serisi/arrayi yaratmak mumkun mu acaba? 

Yapmak istedigim GetBarData ile Bar Data'yi komple almak, daha sonra bu bar datayi perioduma gore, mesela 50 olsun, her 50 birime bakip, bunlarin icindeki en yuksek High fiyatli veya en dusuk Low fiyatli barlari, bir data serisi olarak, bardata objesinin elemanlarini koruyarak kaydetmek. 

DataSeries HighSeries = Highest.Series(High, Period);

DataSeries LowSeries = Lowest.Series(Low, Period);

Boyle bir calisma mumkun mu acaba? Indikator objesinden degisken yaratabiliyor ama BarData'dan yaratamadim acikcasi. 

Tesekkurler,

Eray 

Paylaş

Yorumlar (2)

  • ▲0
    Öncelikle yapmak istediğiniz işlem eğer 50 günlük data üzerindeki en yüksek değeri bulmanız gerekiyor ise örnek verilen cevaptaki gibi en yüksek değeri veya küçük değeri bulan fonksiyon kullanmanız gerekecektir, ama yapmak istediğiniz 50 günlük datada görülen En yüksek 3 veya X adet değeri görüntülemek istiyorsanız o zaman ufak bir kod yazmanız gerekebilir hazır fonksiyon olmayabilir.  Size o konu ile ilgili ufak kod paylaşabilirim iyi çalışmalar.
  • ▲0
    Merhabalar, kod paylasabilirseniz tabii ki cok memnun olurum. Benim merak ettigim, tabii ki en yuksek en dusuk degerleri "HighestHigh" ve "LowestLow" ile bulabiliyorum ancak bunlar sadece degeri integer olarak donuyorlar.. Ben acikcasi BarData objesinde donus yapmasini istiyorum, periodum icindeki en yuksek "High"a sahip bar'i butun bardata detaylariyla bir listeye/seriye/arraye koymak istiyorum.

1 Cevap

0
Merhaba,

Sanırız şu ifadeler, örnek olarak istediğinizi karşılayacaktır.

decimal enyuksek = HighestHigh(OHLCType.High, 64);

decimal endusuk = LowestLow(OHLCType.Low, 64);

 

İyi çalışmalar
BağlantıBayraklailhan69Matriks Destek14.380

Yorumlar (4)

  • ▲0
    Merhabalar, cevap icin tesekkurler. Tabii ki en yuksek en dusuk degerleri "HighestHigh" ve "LowestLow" ile bulabiliyorum ancak bunlar sadece degeri integer olarak donuyorlar.. Ben acikcasi BarData objesinde donus yapmasini istiyorum, periodum icindeki en yuksek "High"a sahip bar'i butun bardata detaylariyla bir listeye/seriye/arraye koymak istiyorum.
  • ▲0

    Merhaba,

    Highesthigh ve lowestlow indikatörlerini kullanarak istediğiniz işlemi gerçekleştirebilirsiniz. Aşağıda örnek kod paylaştım. Bu iki indikatör sayesinde istediğiniz bardaki en büyük ve en küçük değerleri bulabilirsiniz.

    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 HighAndLow : 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(10)]
    		public int HighPeriod;
    		[Parameter(10)]
    		public int LowPeriod;
    		
    		HighestHigh highest;
    		LowestLow lowest;
    		/// <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()
    		{
    			AddSymbol(Symbol, SymbolPeriod);
    			highest = HighestHighIndicator(Symbol, SymbolPeriod, HighPeriod);
    			lowest = LowestLowIndicator(Symbol, SymbolPeriod, LowPeriod);
    			//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("Highesthigh : " + highest.CurrentValue);
    			Debug("LowestLow : " + lowest.CurrentValue);
    		}
    	}
    }

     

    OrçunMatriks DestekBayrakla
  • ▲0
    Orcun bey cok tesekkurler, tanimladigimiz "highest" indikator serisinin gecmis datalarini nasil cagirabilirim acaba? Mevcut dokumantasyonda ve sizin verdiginiz ornekte sadece ".currentValue" ile son dataya ulasabiliyorum gozukuyor. Oysa bu bir data series ve index sayisi oldukca yuksek, dolayisiyla gecmis degerleri de cagirabilmek istiyorum, ornegin currentvalues'un bir onceki degerlerini.

    highest[x] yaptigim zaman ne yazik ki hata veriyor.
  • ▲0

    Selamlar, normal indikatörler gibi Ref fonksiyonuyla geçmiş datalarına erişebilirsiniz.

    //İndikatörün 1 bar önceki değerini döner.
    var prevHigh = Ref(highest,1);

     

    OrçunMatriks DestekBayrakla

Cevabınız

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