Originally Posted by
Santi78
Selam arkadaşlar,
Sırf öğrenme amaçlı aşağıdaki gibi yazıp denemek istedim ama robot çalışıyor gibi ama ne alım nede satım yapıyor nede bir hata veriyor?
Nerde hata yapıyorum?
var SistemAdi = "ROBOYKTOMA10adx";
var MySistem = Sistem.SistemGetir("SistemAdi", Sembol , "1");
if (MySistem == null)
{
Sistem.Mesaj(Sistem.Name + "Hatalı Çalışıyor !");
}
else
{
var Veriler = Sistem.GrafikVerileriniOku(Sembol , "1");
var ADX = Sistem.ADX(Veriler, 10);
var Kapanıslar1 = Sistem.GrafikFiyatOku(Sembol, "1", "Kapanıs") ;
var Kapanıslar2 = Sistem.GrafikFiyatOku(Sembol, "1", "Kapanıs") ;
var Kapanıslar3 = Sistem.GrafikFiyatOku(Sembol, "1", "Kapanıs") ;
// hareketli ortalamaları hesapla
var MA1 = Sistem.MA(Kapanislar1, "Exp", 3);
var MA2 = Sistem.MA(Kapanislar2, "Exp", 10);
var MA3 = Sistem.MA(Kapanislar3, "Exp", 10);
var SonYon = "";
// pozisyon tablosundan pozisyon miktarını al
var Pozisyon = Sistem.PozisyonKontrolOku(Sembol);
// strateji
for (int i = 1; i<Sistem.BarSayisi; i++)
{
if (MA1[i-1] < MA3[i-1] && MA1[i] > MA3[i] && SonYon != "A" && ADX[i] > 20) // 1.ortalama 2.ortalamanın üstüne çıkarsa
Sistem.Yon[i] = SonYon = "A"; // alış
{
if (Pozisyon == 0)
{
var Miktar = 1;
Sistem.PozisyonKontrolGuncelle(Sembol, Miktar);
Sistem.EmirSembol = Sembol;
Sistem.EmirIslem = "Alış";
Sistem.EmirMiktari = Miktar;
Sistem.EmirFiyati = "Aktif";
Sistem.EmirSuresi = "SEANS"; // SEANS, GUN
Sistem.EmirTipi = "NORMAL"; // NORMAL, KIE, KPY, AFE/KAFE
Sistem.EmirGonder();
}
}
// satış
if (MA1[i-1] > MA2[i-1] && MA1[i] < MA2[i] && SonYon != "S") // 1.ortalama 2.ortalamanın altına inerse
Sistem.Yon[i] = SonYon = "S"; // satış
{
if (Pozisyon > 0)
{
var Miktar = Pozisyon;
Sistem.PozisyonKontrolGuncelle(Sembol, 0);
Sistem.EmirSembol = Sembol;
Sistem.EmirIslem = "Satış";
Sistem.EmirMiktari = Miktar;
Sistem.EmirFiyati = "Aktif";
Sistem.EmirSuresi = "SEANS"; // SEANS, GUN
Sistem.EmirTipi = "NORMAL"; // NORMAL, KIE, KPY, AFE/KAFE
Sistem.EmirSatisTipi = "NORMAL"; // imkb (NORMAL, ACIGA, VIRMANDAN)
Sistem.EmirGonder();
}
}
}
}
Sistem.Cizgiler[0].Deger = MA1;
Sistem.Cizgiler[1].Deger = MA2;
Sistem.Cizgiler[2].Deger = MA3;
Merhaba,
Sanirim Robot sabolunu uzerine sisteminizi ekleyerek tek kod icerisinde sistem+robot olusturmak istemissiniz. Sistem ve Robotu tek kod icerisinde olmasi tavsiye edilmiyor. Dongu icersinde emir gonderim kodlari kullanmak gecmis her bir sinyal icin emir iletimine neden olabilecegi icin kullanilmamali.
Sistem dedigimiz, grafik uzerinde gorsel al sat oklarinin gosterilmesini, barlarin yesil/kirmizi renklendirilmesi ve getiri egrisini hesaplamimizi saglayan koddur. Robot ise bu sistemi kullanarak sadece son kapanis barindaki Yone gore emir gonderen koddur diyebiliriz.
Siz once sistemi olusturmaya/optimize etmeye yogunlasin. Sistemi robota baglamak "tek satirlik robot kodu" ile cok kolay yapilabilir.
Gereksiz bolumleri silinmis ve hatalari duzeltilmis kodunuzu asagi kopyaladim. ilk kod sadece sembol olarak atanan grafik uzerinde calisir. Ikincisi ise grafigi acilan herhangi baska bir enstruman uzerinde de calisacaktir. Bu kodu sistem olarak "deneme" olarak kaydebilirsiniz. En altta robot kodunu da deneme_robot olarak kaydederseniz, sisteminiz 1 dk lik VIOP yakin vade uzerinde robot olarak kullanima hazir olacaktir.
Sadece "F_XU0300819" grafigi uzerinde calisan sistem kodu:
PHP Code:
var Sembol = "VIP'F_XU0300819";
var Veriler = Sistem.GrafikVerileriniOku(Sembol , "1");
var Kapanislar = Sistem.GrafikFiyatOku(Sembol, "1", "Kapanis");
var ADX = Sistem.ADX(Veriler, 10);
// hareketli ortalamaları hesapla
var MA1 = Sistem.MA(Kapanislar, "Exp", 3);
var MA2 = Sistem.MA(Kapanislar, "Exp", 10);
var MA3 = Sistem.MA(Kapanislar, "Exp", 10);
var SonYon = "";
// strateji
for (int i = 1; i<Sistem.BarSayisi; i++)
{
if (MA1[i-1] < MA3[i-1] && MA1[i] > MA3[i] && SonYon != "A" && ADX[i] > 20) // 1.ortalama 2.ortalamanın üstüne çıkarsa
Sistem.Yon[i] = "A";
SonYon = "A"; // alış
// satış
if (MA1[i-1] > MA2[i-1] && MA1[i] < MA2[i] && SonYon != "S") // 1.ortalama 2.ortalamanın altına inerse
Sistem.Yon[i] = "S";
SonYon = "S"; // satış
}
Sistem.Cizgiler[0].Deger = MA1;
Sistem.Cizgiler[1].Deger = MA2;
Sistem.Cizgiler[2].Deger = MA3;
Tum enstrumanlar uzerinde calisabilen sistem kodu, "deneme" adiyla kaydediniz:
PHP Code:
var Veriler = Sistem.GrafikVerileri ;
var Kapanislar = Sistem.GrafikFiyatOku(Veriler, "Kapanis");
var ADX = Sistem.ADX(10);
// hareketli ortalamaları hesapla
var MA1 = Sistem.MA(Kapanislar, "Exp", 3);
var MA2 = Sistem.MA(Kapanislar, "Exp", 10);
var MA3 = Sistem.MA(Kapanislar, "Exp", 10);
var SonYon = "";
// strateji
for (int i = 1; i<Sistem.BarSayisi; i++)
{
if (MA1[i-1] < MA3[i-1] && MA1[i] > MA3[i] && SonYon != "A" && ADX[i] > 20) // 1.ortalama 2.ortalamanın üstüne çıkarsa
Sistem.Yon[i] = "A";
SonYon = "A"; // alış
// satış
if (MA1[i-1] > MA2[i-1] && MA1[i] < MA2[i] && SonYon != "S") // 1.ortalama 2.ortalamanın altına inerse
Sistem.Yon[i] = "S";
SonYon = "S"; // satış
}
Sistem.Cizgiler[0].Deger = MA1;
Sistem.Cizgiler[1].Deger = MA2;
Sistem.Cizgiler[2].Deger = MA3;
"deneme_robot" olarak kaydedilip, ROBOT bolumu altinda sanal modda calistirilabilir:
PHP Code:
var Islem =Sistem.RobotViopAktif("deneme", "VIP'VIP-X030", Sistem.AktifViopKontrat,"1", 1);
Yer İmleri