SAYIN YİĞİT KAYNAK TARAFINDAN OLUŞTURULAN SİSTEMİN AÇIKLAMASI AŞAĞIDADIR
Kullanılması:
PVT1 ve PVT2 çizgileri, önce ki değerleri dikkate alarak her sabah, o güne ait ve sabit kalmak üzere oluşur.
Oluşan bu 2 çizgi, yapısı gereği tüm gün sabit kalır. Dolayısı ile bize H ve L olmak üzere gün içinde bir trade aralığı sunar.
PVT1 çizgisi diğer çizginin mutlaka üstünde veya altında kalmak, olmak zorunda değildir. Bu, PVT2 içinde geçerlidir.
Sonuç itibarıyla, oluşan bu çizgilerden yukarıda olanın üzerinde gerçekleşecek ilk kapanış barı, geçerli AL sinyali
ve aşağıda oluşan çizginin altında oluşacak ilk kapanış barı ise geçerli SAT sinyali olarak incelenebilir.
İdeal kullanım periyodu 1H grafikler gibi görünse de,
farklı yatırım araçlarında o aracın hareket tarzından dolayı daha farklı Time Frame ler güzel sonuç veriyor olabilir.
Yani doğru periyodu kendiniz tespit etmeniz, sizi daha anlamlı sonuçlara ulaştırabilir.
PVT1 ve PVT2 dışında daha aşağı ve yukarılarında farklı çizgiler göreceksiniz. Bunlar tamamen sizin tercihinize kalan yapılar.
Onları istemez iseniz, indikatör parametrelerinden R1 S1 R2 S2 olarak gördüklerinize grafik arka plan rengini atarsınız daha görünmez olurlar.
Saygılarımla
Yiğit KAYNAK
@YgtKyn
using System;
using System.Collections.Generic;
using System.Linq;
using System.ComponentModel;
using Matriks.Data.Identifiers;
using Matriks.Data.Symbol;
using Matriks.Engines;
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;
/*
YIGIT:=dayofmonth()><ref(dayofmonth(),-1) ;
ADAM:=valuewhen(1,YIGIT,ref(c,-1)) ;
TX:=valuewhen(1,YIGIT,ref(highestsince(1,YIGIT,h),-1));
RX:=valuewhen(1,YIGIT,ref(lowestsince(1,YIGIT,l),-1));
PVT1:=(ADAM+RX+TX)/3 ;
r1:=2*PVT1-RX ;
s1:=2*PVT1-TX ;
PVT2:=ADAM ;
r2:=PVT2+(TX-RX)/2 ;
s2:=PVT2-(TX-RX)/2 ;
r1;PVT1;s1;
r2;PVT2;s2
*/
namespace Matriks.Lean.Algotrader
{
//Ilk parametre indikatörün adı, sınıfın adıyla aynı olmalıdır.
//Ikinci parametre indikatörün Dataserisinin üzerine mi yeni pencereye mi ekleneceğini belirtir. Yeni pencere için ->IndicatorDrawingArea.NewWindow , Data Serisi için IndicatorDrawingArea.OnDataSeries
[IndicatorInformationAttribute("YIGITBOXPHL2Kripex", IndicatorDrawingArea.OnDataSeries)]
//Indikatörün çizgilerinin isimleri
[IndicatorLineInformationAttribute(new []
{
"R1", "PVT1", "S1", "R2", "PVT2", "S2"
})]
public class YIGITBOXPHL2Kripex : MatriksIndicator
{
//Indicator opsiyon panelinde değerleri değiştirebildiğimiz parametreler. Int, Bool, Decimal ve Enum değerleri alabilir.Tüm değişken tiplerini DefaultValue ile tanımlarız.
[DefaultValue(1)]
public int SmaPeriod
{
get; set;
}
public sealed override void OnInit()
{
AddSymbol(Symbol, SymbolPeriod.Day);
}
public override void OnDataUpdate(int currentBar, decimal inputValue, DateTime barDateTime)
{
var prevDayHigh = currentBar>0? GetSelectedValueFromBarData(GetBarData(Symbol, SymbolPeriod.Day), OHLCType.High, 1) :0;
var prevDayLow = currentBar>0? GetSelectedValueFromBarData(GetBarData(Symbol, SymbolPeriod.Day), OHLCType.Low, 1) :0;
var prevDayClose = currentBar>0? GetSelectedValueFromBarData(GetBarData(Symbol, SymbolPeriod.Day), OHLCType.Close, 1) :0;
/*
PVT1:=(ADAM+RX+TX)/3 ;
r1:=2*PVT1-RX ;
s1:=2*PVT1-TX ;
PVT2:=ADAM ;
r2:=PVT2+(TX-RX)/2 ;
s2:=PVT2-(TX-RX)/2 ;
*/
var PVT1 = (prevDayClose + prevDayHigh + prevDayLow) / 3;
var R1 = 2 * PVT1 - prevDayLow;
var S1 = 2 * PVT1 - prevDayHigh;
var PVT2 = prevDayClose;
var R2 = PVT2 + (prevDayHigh - prevDayLow) / 2;
var S2 = PVT2 - (prevDayHigh - prevDayLow) / 2;
/*
r1;PVT1;s1;
r2;PVT2;s2
*/
SetLine(0, currentBar, R1);
SetLine(1, currentBar, PVT1);
SetLine(2, currentBar, S1);
SetLine(3, currentBar, R2);
SetLine(4, currentBar, PVT2);
SetLine(5, currentBar, S2);
}
}
}