0 beğenilme 0 beğenilmeme
1,148 kez görüntülendi

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 

Algoritmik Trading kategorisinde (18 puan) tarafından | 1,148 kez görüntülendi
0 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 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 beğenilme 0 beğenilmeme
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
(13,600 puan) tarafından
0 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 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);
		}
	}
}

 

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

 

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,639 soru
8,593 cevap
4,826 yorum
19,857 kullanıcı