Originally Posted by
termin
Merhabalar;
iki ayrı şartın birlikte gerçekleşmesi durumunda al ve sat sinyalleri ürettirmeyi başaramadım. Örneğin rsi ağırlıklı 10 günlük basit ortalamasını bir önceki barda keserse al dedirtebiliyorum veya hacim kendi basit ortalamasını 10 günlükte kesiyorsa al dedirtebiliyorum ancak aynı anda bu iki koşulu sağladığında al veya sat sinyalleri üretemedim grafik üzerinde. Bunu nasıl yazabilirim acaba.
istediğinizin benzeri bir sistem ve robot bir arada.
PHP Code:
// ROBOTU ÖNCE SANAL MODDA TEST EDİN !!!
// verileri oku
var Sembol = Sistem.Sembol;
var Periyot = "5";
var Bars = Sistem.GrafikVerileriniOku(Sembol, Periyot);
var Kapanislar = Sistem.GrafikFiyatOku(Bars, "Kapanis");
// indikatör hesapla
var KisaMA = Sistem.MA(Kapanislar, "Simple",5);
var UzunMA = Sistem.MA(Kapanislar, "Simple",22);
var RSI = Sistem.RSI(Kapanislar, 50);
// pozisyon tablosundan pozisyon miktarını al
var Pozisyon = Sistem.PozisyonKontrolOku(Sembol);
// yön bul
var SonBarNo = Bars.Count - 1;
var Islem = "";
var Miktar = 0;
var SonFiyat = Sistem.SonFiyat(Sembol);
if (SonFiyat > 0 && (Sistem.SaatAraligi("09:10", "12:30") || Sistem.SaatAraligi("13:50", "17:45")))
{
var SartAl1 = KisaMA[SonBarNo] < UzunMA[SonBarNo-1] && KisaMA[SonBarNo] >= UzunMA[SonBarNo-1]; // kısa MA uzun MA yı yukarı kestiyse
var SartAl2 = RSI[SonBarNo] < 40; // RSI 40 ın altındaysa
var SartSat1 = KisaMA[SonBarNo] > UzunMA[SonBarNo-1] && KisaMA[SonBarNo] <= UzunMA[SonBarNo-1]; // kısa MA uzun MA yı aşağı kestiyse
var SartSat2 = RSI[SonBarNo] > 60; // RSI 60 ın üstündeyse
if (SartAl1 && SartAl2 && Pozisyon <= 0) // alış
{
Islem = "ALIS";
if (Pozisyon == 0) // pozisyonum yoksa 1 lot al
Miktar = 1;
else if (Pozisyon < 0) // short isem stop and reverse , 2 lot al
Miktar = 2;
}
else if (SartSat1 && SartSat2 && Pozisyon >= 0) // satış
{
Islem = "SATIS";
if (Pozisyon == 0) // pozisyonum yoksa 1 lot sat
Miktar = 1;
else if (Pozisyon > 0) // long isem stop and reverse , 2 lot sat
Miktar = 2;
}
}
// emri gönder
if (Islem != "")
{
if (Islem == "ALIS")
Sistem.PozisyonKontrolGuncelle(Sembol, Pozisyon+Miktar);
else if (Islem == "SATIS")
Sistem.PozisyonKontrolGuncelle(Sembol, Pozisyon-Miktar);
Sistem.EmirSembol = Sembol;
Sistem.EmirIslem = Islem;
Sistem.EmirMiktari = Miktar;
Sistem.EmirSuresi = "GUN"; // GUN, SNS, IKG
Sistem.EmirTipi = "KPY"; // KPY, KIE, GIE, SAR
Sistem.EmirFiyatTipi = "PYS"; // PYS, LMT, EIF, KAP
Sistem.EmirGonder();
}
Yer İmleri