Merhabalar,
Rsi için pozitif ve negatif uyumsuzluk tarama kodları aşağıdadır.
İyi çalışmalar
Rsi Pozitif Uyumsuzluk:
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
{
public class RsiPU : Explorer
{
[Parameter(14)]
public int RsiPeriod;
[Parameter(21)]
public int BarSayısı;
RSI rsi;
public override void OnInit()
{
rsi = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, RsiPeriod);
AddColumns(5);
SetColumnText(0, "Bar Count");
SetColumnText(1, "Ref Low");
SetColumnText(2, "Close");
SetColumnText(3, "LLV(Rsi)");
SetColumnText(4, "Rsi");
}
public override bool OnExplorer(List<BarDataEventArgs> bardatas)
{
var bardata = GetBarData();
var BarDataIndex = bardatas.FirstOrDefault().BarDataIndex;
var LLV = LowestLow(rsi, BarSayısı);
if (LLV < rsi.CurrentValue)
{
for (int i = 1; i <= BarSayısı; i++)
{
int index = Ref(rsi, i) == LLV? i:0;
if (index>1)
{
var refLow = bardata.Low[BarDataIndex - index];
var close = bardata.Close[BarDataIndex];
if (refLow >close)
{
SetColumn(0, index);
SetColumn(1, refLow);
SetColumn(2, close);
SetColumn(3, Math.Round(LLV, 2));
SetColumn(4, Math.Round(rsi.CurrentValue, 2));
return true;
}
}
}
}
return false;
}
}
}
Rsi Negatif Uyumsuzluk:
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
{
public class RsiNU : Explorer
{
[Parameter(14)]
public int RsiPeriod;
[Parameter(21)]
public int BarSayısı;
RSI rsi;
public override void OnInit()
{
rsi = RSIIndicator(Symbol, SymbolPeriod, OHLCType.Close, RsiPeriod);
AddColumns(5);
SetColumnText(0, "Bar Count");
SetColumnText(1, "Ref High");
SetColumnText(2, "Close");
SetColumnText(3, "HHV(Rsi)");
SetColumnText(4, "Rsi");
}
public override bool OnExplorer(List<BarDataEventArgs> bardatas)
{
var bardata = GetBarData();
var BarDataIndex = bardatas.FirstOrDefault().BarDataIndex;
var HHV = HighestHigh(rsi, BarSayısı);
if (HHV > rsi.CurrentValue)
{
for (int i = 1; i <= BarSayısı; i++)
{
int index = Ref(rsi, i) == HHV? i:0;
if (index>1)
{
var refHigh = bardata.High[BarDataIndex - index];
var close = bardata.Close[BarDataIndex];
if (refHigh <close)
{
SetColumn(0, index);
SetColumn(1, refHigh);
SetColumn(2, close);
SetColumn(3, Math.Round(HHV, 2));
SetColumn(4, Math.Round(rsi.CurrentValue, 2));
return true;
}
}
}
}
return false;
}
}
}