Düzgün çalışan kod ve panel üzerinden kullanılan parametreler aşağıdaki gibidir...
Formülünüz hazırlanmış "sistem+robot" dosyası ayrıca mail adresinize de gönderilmiştir.
Kod:
// parametreleri al
var Yontem = Sistem.Parametreler[0];
var Periyot1 = Sistem.Parametreler[1];
var Periyot2 = Sistem.Parametreler[2];
// kapanış fiyatlarını oku
var Veriler = Sistem.GrafikFiyatSec("Kapanis");
// hareketli ortalamaları hesapla
var MA1 = Sistem.MA(Veriler, Yontem, Periyot1);
var MA2 = Sistem.MA(Veriler, Yontem, Periyot2);
// hesaplanan verileri çizgilere aktar ve açıklama ekle
Sistem.Cizgiler[0].Deger = MA1;
Sistem.Cizgiler[0].Aciklama = "MA küçük " + Periyot1;
Sistem.Cizgiler[1].Deger = MA2;
Sistem.Cizgiler[1].Aciklama = "MA büyük " + Periyot2;
///////// PERFORMANS GÖSTERİMİ İÇİN STRATEJİ /////////////
Sistem.KesismeTara(MA1,MA2);
///////// ALGO İLE ŞART KONTROL ET /////////////
// algo'ya emir bağlanmadıysa bu bölümü silebilirsiniz
if (Sistem.YukariKestiyse(MA1, MA2)) // alış
Sistem.AlgoIslem = "A";
if (Sistem.AsagiKestiyse(MA1, MA2)) // satış
Sistem.AlgoIslem = "S";
///////// ROBOT İLE İŞLEMLERİ YAPTIR /////////////
// zaman kontrolu ( bu saat aralıklarında emir gönderilebilsin )
if (Sistem.SaatAraligi("09:15", "12:30") || Sistem.SaatAraligi("14:00", "17:45"))
{
// robot'da kullanılacak sembol ve zaman aralığını parametre tablosundan çekiyoruz
var Sembol = Sistem.Parametreler[4];
var zamanAraligi = Sistem.Parametreler[5];
// robot için hareketli ortalamaları tekrar hesaplatıyoruz. çünkü sembol ve zaman aralığı sistem'de kullandığımızdan farklı
var Kapanislar = Sistem.GrafikFiyatOku(Sembol,zamanAraligi , "Kapanis");
var RobotMA1 = Sistem.MA(Kapanislar, Yontem, Periyot1);
var RobotMA2 = Sistem.MA(Kapanislar, Yontem, Periyot2);
// pozisyon tablosundan pozisyon miktarını al
var Pozisyon = Sistem.PozisyonKontrolOku(Sembol);
// alış
if (Sistem.YukariKestiyse(RobotMA1, RobotMA2))
{
if (Pozisyon == 0)
{
var Miktar = 1;
Sistem.PozisyonKontrolGuncelle(Sembol, Pozisyon+Miktar);
Sistem.EmirSembol = Sembol;
Sistem.EmirIslem = "Alış";
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();
}
else if (Pozisyon < 0)
{
var Miktar = -2*Pozisyon;
Sistem.PozisyonKontrolGuncelle(Sembol, Pozisyon+Miktar);
Sistem.EmirSembol = Sembol;
Sistem.EmirIslem = "Alış";
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();
}
}
// satış
if (Sistem.AsagiKestiyse(RobotMA1, RobotMA2))
{
if (Pozisyon == 0)
{
var Miktar = 1;
Sistem.PozisyonKontrolGuncelle(Sembol, Pozisyon-Miktar);
Sistem.EmirSembol = Sembol;
Sistem.EmirIslem = "Satış";
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();
}
else if (Pozisyon > 0)
{
var Miktar = 2*Pozisyon;
Sistem.PozisyonKontrolGuncelle(Sembol, Pozisyon-Miktar);
Sistem.EmirSembol = Sembol;
Sistem.EmirIslem = "Satış";
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();
}
}
}