0 beğenilme 0 beğenilmeme
580 kez görüntülendi
M IQ da explorer özelliği ile basit indikatör taraması yapmak istiyorum. Sistem beni kurulumla masaüstüne inen dosyalara yönlendiriyor. Ancak bu dosyalar arasında aradığım indikatörü bir türlü bulamıyorum. (IQ ana ekranında da olmasına rağmen) Örnek: Bist 100 içinde default olarak x indikatörün, x seviyesindeki değerini sağlayanları bana filtrele gibi basit tarama. Kolay gelsin.
Algoritmik Trading kategorisinde (34 puan) tarafından | 580 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

Merhaba, bahsettiginiz indikatoru kod icerisinde eklemeniz gerekmekte. IQ Algo menusu altinda, Hazir Explorer listesi sekmesinde ornek explorer kod'larini Scripti goster diyerek gorebilirsiniz. Kod icerisine istediginiz indikatoru ekledikten sonra, filtrenenen sonuclarin uzerinde olmasini istediginiz seviyeyi canli fiyat ya da manuel olarak belirleyebilirsiniz.

Fiyati 200 gunluk hareketli ortalamanin uzerinde olan hisseleri filtreleyen bir kod ornegi:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Matriks.Data.Symbol;
using Matriks.Engines;
using Matriks.Lean.Algotrader.AlgoBase;
using Matriks.Lean.Algotrader.Models;
using Matriks.Indicators;

//==========================================ACIKLAMA====================================================//
//200 Günlük basit ortalamasının üstünde ve altında olan enstrümanları bulur. 200 Günlük basit 			//
//ortalamasının üstünde olanlar: Sonuçlar, altında olanlar: Filtrelenenler sekmesinde listelenmektedir	//

namespace Matriks.Lean.Algotrader
{
	public class Bullish200SMA : Explorer
	{
		[Parameter(200)]
		public int MovPeriod1;

		MOV mov;

		public override void OnInit()
		{
			AddColumns(2);
			SetColumnText(0, "Mov1");
			mov = MOVIndicator(Symbol, SymbolPeriod, OHLCType.Close, MovPeriod1, MovMethod.Simple);
		}

		public override bool OnExplorer(List<BarDataEventArgs> bardatas)
		{
			var barData = bardatas.FirstOrDefault();
			var close = barData.BarData.Close;

			SetColumn(0, Math.Round(mov.CurrentValue, 4));

			if (mov.CurrentValue < close)
				return true;
			return false;
		}
	}
}

 

(8,035 puan) tarafından
7,509 soru
7,511 cevap
4,405 yorum
8,750 kullanıcı