sizden değilmiş demek ki düz metin dışında paylaşım yapamıyorum şu anda.bir süre sonra tekrar deneyeceğim."Deviation Scaled Moving Average with Fisher Transform" ve sizin paylaştığınız "Spectrum" u paylaşırım.
Deviation Scaled Moving Average with Fisher Transform as published in the October 2018 article titled "Probability-Probably A Good Thing To Know" by John F. Ehlers
PHP Code:
//Deviation Scaled Moving Average with Fisher Transform
//Ayarlar
int Period= 300;
//Veriler
var V = Sistem.GrafikVerileri;
var C = Sistem.GrafikFiyatSec("Kapanis");
var H = Sistem.GrafikFiyatSec("YUksek");
var L = Sistem.GrafikFiyatSec("Dusuk");
var O = Sistem.GrafikFiyatSec("Açılış");
double a1, b1, c1, c2, c3;
var Filt= Sistem.Liste(0);
var Zeros= Sistem.Liste(0);
var DSMAPDFISHER= Sistem.Liste(0);
a1 = Math.Exp(-1.414 * 3.14159 / (0.5 * (double)Period));
b1 = 2 * a1 * Math.Cos((1.414 *180 /(0.5 * (double)Period)) * (3.14159 / 180));
c2 = b1; c3 = -a1*a1; c1=1-c2-c3;
for (int j = 300; j < C.Count; j++)
{
double ScaledFilt = 0, RMS = 0, alpha1 = 0, FisherFilt = 0;
Zeros[0] = C[j] - C[j-2];
Filt[j] = (float) (c1 * (Zeros[0] + Zeros[1]) / 2 + c2 * Filt[j-1] + c3 * Filt[j-2]);
for (int i = 0; i <= Period-1; i++) RMS = RMS + Filt[j-i] * Filt[j-i];
RMS = Math.Sqrt(RMS / (double)Period);
ScaledFilt = Filt[j] / RMS;
if (Math.Abs(ScaledFilt) < 2)
FisherFilt = 0.5 * Math.Log((1 + ScaledFilt / 2) / (1 - ScaledFilt / 2));
DSMAPDFISHER[j] = (float) FisherFilt;
for (int i = Period; i > 0; i--) Filt[i] = Filt[i];
Zeros[1] = (float) Zeros[0];
}
Sistem.Cizgiler[0].Deger = DSMAPDFISHER;
https://prnt.sc/ln0ki9
Bugün bende John F. Ehlers'in kitaplarını anlamaya çalışıyordum sizde indikatörleri paylaşmışsınız. Çoğu ... filterlerin ne işe yaradığını anlayabilmiş değilim pratikte hareketli ortalamadan daha iyi sonuç veriyor mu? Ben verdirtemedimFormüllerde baya NASA matematiği
![]()
Kod:var Anahtar = Sistem.Name + "_AYNI BAR KONTROL"; var Saniye = Sistem.ZamanKontrolSaniye(Anahtar); if (Saniye >= 60) { Sistem.ZamanKontrolGuncelle(Anahtar); //Sistem.Mesaj(DateTime.Now.ToString("HH:mm:ss")); //var Islem = Lib.RobotViopAktifSeviye(Sistem, "SYS_1DK", "VIP'VIP-X030", Sistem.AktifViopKontrat, "1", 1); //if (Islem != "") //{ // mail gönder //} Lib.RobotViopAktifSeviye(Sistem, "SYS_1DK", "VIP'VIP-X030", Sistem.AktifViopKontrat, "1", 1); }
orhan hocam,
robot aynı barda birden fazla işlem açmasın diye yukarıdaki şekilde test ediyorum,
ancak sinyal den sonraki barda da işlem açtığı oluyor.
"sinyal barında tek işlem açması için Lib.cs de zaman kontrolu konulabilirmi?"
bir de mail göndermesi için işlem değişkenine atadığımda hata veriyor.
teşekkürler...
Robot aynı barda birden fazla işlem açıyorsa sistem hatalı yazılmış demektir.
Hatalı geliştirme yapmamak için doğru kalıbı kullanmak gerekir.
Seviyeli Sistemler için Doğru Kalıp aşağıdaki gibidir:
PHP Code:
var V = Sistem.GrafikVerileri;
var C = Sistem.GrafikFiyatOku(V, "Kapanis");
var O = Sistem.GrafikFiyatOku(V, "Açılış");
var H = Sistem.GrafikFiyatOku(V, "Yüksek");
var L = Sistem.GrafikFiyatOku(V, "Düşük");
var HH= Sistem.HHV(90,"Yuksek");
var LL = Sistem.LLV(90,"Dusuk");
var VIDYA= Sistem.VIDYA(300,9);
var AS = Sistem.Liste(0); var SS = Sistem.Liste(0);
var SonYon = "";double SonFiyat = 0.0;
for (int i = 200; i < V.Count; i++)
{
AS[i] = new float[] {
O[i]
, VIDYA[i-1]
}.Max();
SS[i] = new float[] {
O[i]
, VIDYA[i-1]
}.Min();
if ( H[i] >= AS[i] && SonYon != "A" )
{
Sistem.Yon[i] = "A";
Sistem.Seviye[i]= AS[i];
SonYon = Sistem.Yon[i];
}
else if ( L[i] <= SS[i] && SonYon != "S" )
{
Sistem.Yon[i] = "S";
Sistem.Seviye[i]= SS[i];
SonYon = Sistem.Yon[i];
}
}
Sistem.Cizgiler[0].Deger = VIDYA;
Yer İmleri