Originally Posted by
atakanözbaki
if (Sistem.Saat.CompareTo("09:30:00") <= 0 || Sistem.Saat.CompareTo("18:14:59") >= 0) // seans yok işlem yapma
Arkadaşlar robotun gün sonunda sistemin yönü ne olursa olsun pozisyonunu kapatmasını istiyorum. Sabah seans açılınca sistem hangi yönde ise o yönde pozisyon açsın istiyorum. Üsteki saatte nasıl bir değişiklik yapmam gerek.
Matrikste şöyle yapardık sistem ile saati ve ile bağlardık. İdealdede öyle yapsak aynı mantıkla olurma acaba
Sistem & if (Sistem.Saat.CompareTo("09:30:00") <= 0 || Sistem.Saat.CompareTo("17:50:00") >= 0)
for (............)
if ( Sistem al )
if (Sistem.Saat.CompareTo("09:30:00") <= 0 || Sistem.Saat.CompareTo("17:50:00") >= 0) şeklinde iç içe if tarzında yazmam gerekiyor sanırım.
Bear Bull hocamin verdigi bicim robotu ozellistirebilirsiniz. Aksam Flat yaklasimi robot yerine sistemin icine de uygulanabilir. Bu sekilde tek satir robotu kullanmaya devam edebilir ve yaklasiminizin gecmiste ne kazandirip ne kaybettirdigini de olcebilirsiniz.
Ayni yaklasimi bir sistemim uzerinde sadece 2019 yili verileri uzerinde test etmistim. Ulastigim bazi bulgular:
- Getiride ~%20 azalma
- MaxDD de ~%6 civari bir iyilesme
- Islem sayisinda ~%10 civari artis
AksamFlat yaklasimini devreye almandan sisteminize etkilerini iyice olcup tartmanizi oneririm. Ister robota ister sisteme uygulayin devre almadan bir sure sanal modda test ediniz. Yaklasiminizi robot tarafina uygularaniz, kesisim kullanan sistemlerde aksam flat sonrasi ertesi sabah onceki sinyal yonunde pozisyon girisi yapilmayip bir sonraki sinyale kadar flat kalma durumu olusabilir.
Aksam flat sabah sinyal yonunde flata gir icin kullandigim kod ornegi:
PHP Code:
//...sadece 09h30 acilis 18h15 kapanis olan tarihlerde duzgun calisir!
var FlatOncesiYon="";
var Sinyal="";
//...
for (int i = 20; i < V.Count; i++)
{
var Flat1815 = V[i].Date.Hour == 18 && V[i].Date.Minute >= 14;
//garip bir bicimde 2019 yilinda bazi gunlerde 18:15 barlari var o nedenle ">=14" kullanildi
var Ac0930 = V[i].Date.Hour == 09 && (V[i].Date.Minute <= 30);
//garip bir bicimde 2019 yilinda bazi gunlerde 09:29 barlari var o nedenle "<=30" kullanildi
//....
if (Flat1815==false && Ac0930==false)
{
//Sisteminizin SonYon ve Sistem.Yon kodlarini iceren ardisik iki satir bu parantez icine alinmali.
//"Sinyal" ise bu parantezi hemen onunde deger olarak sistemin urettigi asil yon atanmali
}
//asagidaki bolum aksam ve sabah filtrelenmis barlarda flat ve onceki sinyal yonunde tekrar pozisyona girisi saglar.
if (Flat1815)
{
if (SonYon != "F")
{
FlatOncesiYon=SonYon;
SonYon = "F";
Sistem.Yon[i] = "F";
}
}
if (Ac0930)
{
if (FlatOncesiYon != "F" && FlatOncesiYon != "" && FlatOncesiYon != Sinyal && SonYon !="F")
{
SonYon = Sinyal;
Sistem.Yon[i] = Sinyal;
FlatOncesiYon="";
}
else if (FlatOncesiYon != "F" && FlatOncesiYon != "" && FlatOncesiYon == Sinyal && SonYon !="F")
{
SonYon = FlatOncesiYon;
Sistem.Yon[i] = FlatOncesiYon;
FlatOncesiYon="";
}
}
Yer İmleri