28.01.2022
0
4
0
100

Kıvanç Özbilgiç'in düşeni kıranlar explorer stratejisinin IQ versiyonudur. Fiyatın trend'i yukarı kırmış olması, trend çizgisinin baslangiç ve bitiş noktası arasındakı bar sayısının MinTrendLength'den büyük ya da eşit olması ve trend çizgisinin başlangiç noktasından itibaren son bara kadar olan bar sayısının MinTrendStartDistance değerine eşit ya da fazla olması koşulu aranır. Bu koşulları gercekleştiren semboller ekrana basılacaktır.

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;

namespace Matriks.Lean.Algotrader
{
    //===================================================================ACIKLAMA=======================================================================//
    //Kivanc Ozbilgic'in duseni kiranlar explorer stratejisinin IQ versiyonudur. Fiyatin trend'i yukari kirmis olmasi, trend cizgisinin baslangic ve //
    //bitis noktasi arasindaki bar sayisinin MinTrendLength'den buyuk ya da esit olmasi ve trend cizgisinin baslangic noktasindan itibaren son bara kadar//
    //olan bar sayisinin MinTrendStartDistance degerine esit ya da fazla olmasi kosulu aranir. Bu kosullari gerceklestiren semboller ekrana basilacaktir//

    //===================================================================DESCRIPTION=======================================================================//
    //IQ version of Kivanc Ozbilgic's "Duseni kiranlar" explorer(scanner) strategy. The scanner seeks to find symbols that have broken above a falling //
    //auto trendline. If the following 3 conditions are satisfied the explorer will return the symbols in the scanned list: price is above trendline, //
    //the trendline has a minimum bar distance of MinTrendLength and MinTrendStartDistance amount of bars have passed since the starting point of the //
    //trendline until current bar.

    public class Duseni_Kiranlar : Explorer
    {
        // Trendin aranacagi bar sayisi
        [Parameter(200)]
        public int TrendBarCount;

        // Trendin yuksegi yakaladigi noktalar arasindaki min bar sayisi
        [Parameter(10)]
        public int MinTrendLength;
		
        // Trendin yuksegi yakaladigi ilk noktanin son bara olan minimum mesafesi
        [Parameter(50)]
        public int MinTrendStartDistance;
		
        public ITrend Trend;

        public override void OnInit()
        {
            AddColumns(2);
            SetColumnText(0, "Trend");
            SetColumnText(1, "Kapanis");

            Trend = MyTrend(TrendBarCount, 1, TrendType.Decreasing);
        }

        public override bool OnExplorer(List<BarDataEventArgs> bardatas)
        {
            // trending degeri null ise dusen trendin bulunamadigi anlamina geliyor.
            if (Trend.CurrentValue == null)
                return false;
			
            var lastBarData = bardatas.Last();
            var close = lastBarData.BarData.Close;
			
            // trendi yukari kirmis mi
            var crossCondition = close > Trend.CurrentValue;
            // Trendin yuksege degdigi uclar arasinda yeterince bar var mi
            var lengthCondition = (Trend.SnapX2 - Trend.SnapX1) >= MinTrendLength;
            // Trendin baslangici yeterince eski bir barda mi
            var distanceCondition = (lastBarData.BarDataIndex - Trend.SnapX1) >= MinTrendStartDistance;
			
            // Kesisim, uzunluk ve baslangic bari kosullarinin tamami saglanmali
            var result = crossCondition && lengthCondition && distanceCondition;

            SetColumn(0, Math.Round(Trend.CurrentValue.Value, 4));
            SetColumn(1, Math.Round(close, 4));

            return result;
        }
    }
}

0 Yorum