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

MAtrixIQ'yu yeni kullanmaya başlıyorum. Belki basit bir sorum olacak ama çalışma mantığını anlamam için önem arz ediyor.

Sormak istediğim soru şu; örneğin fiyat 1 günlük Bollinger ortalama değerini kestiğinde kuralını tanımlamak için ne yapmalıyım ?
Çünkü bollinger bilgisini günlük veriden alacak, fiyatı ise anlık alacak(en düşük olarak 1 dk var sanırım). Özetle 2 farklı periyot olacak.

Bu nasıl çalıştırılabiliyor ?ÖRnekle de yardımcı olursanız çok sevinirim.
Teşekkürler.
Algoritmik Trading kategorisinde (64 puan) tarafından | 1,090 kez görüntülendi

1 cevap

1 beğenilme 0 beğenilmeme
En İyi Cevap

Merhaba,

Eklediğiniz indikatörün SymbolPeriod değerini strateji periodundan farklı kullanmalısınız..

Aşağıdaki örneği inceleyebilirsiniz.

***STRATEJİLERİ TEST/DENEME ORTAMINDA SINAMADAN VE SİZİN İSTEDİĞİNİZ ŞEKİLDE ÇALIŞTIĞINA EMİN OLMADAN GERÇEK ORTAMDA HİÇBİR ZAMAN ÇALIŞTIRMAYINIZ ***

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 Test : 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.Min)]
		public SymbolPeriod SymbolPeriod;

		BOLLINGER bollinger;

		public override void OnInit()
		{
			AddSymbol(Symbol, SymbolPeriod);

			bollinger = BollingerIndicator(Symbol, SymbolPeriod.Day, OHLCType.Close, 20, 2, MovMethod.Simple);
			
			//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);
			WorkWithPermanentSignal(false);
		}

		public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
		{
			var bardata=GetBarData();
			
			if(CrossAbove(bardata,bollinger.BollingerMid,OHLCType.Close)){
				Debug("Şartınız şağlandı");
			}
		}
	}
}

 

(15,892 puan) tarafından
tarafından seçilmiş
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,636 soru
8,590 cevap
4,821 yorum
19,790 kullanıcı