|
|
Benim attığım kod alış da yapıyor flata de geçiyor
Alıs1 koşulu ile alış yaparsa sadece Flat1 koşulunda flat olsun aksi durumda long devam
Alıs2 koşulu ile alış yaparsa sadece Flat2 koşulunda flat olsun aksi durumda long devam
vs....
gibi birşey mi yapmak istiyorsunuz?
Şöyle bişey yaptım hızlıca, detaylı incelemedim
Not:robot kodu için farklı bi atraksiyon gerekir
Not:Denemedim ama alis koşullarından hangisine öncelik verileceğine göre olay baya değiştirir muhtemelen
HTML Kod:var V = Sistem.GrafikVerileri; var C = Sistem.GrafikFiyatOku(V, "Kapanis"); var MAVW =Sistem.RSI(100); var MA2= Sistem.TOMA(3,2); var M4 = Sistem.Momentum(100); var Fiyat = 0.00; var Sinyal =""; var SonYon = ""; var RSI = Sistem.RSI(14); var SonSinyalNo=0; for (int i = 1; i < Sistem.BarSayisi; i++) { if (SonYon != "A") { var Alis1=MAVW[i] > 60 && MAVW[i-1] <= 60; var Alis2=C[i] > MA2[i]; var Alis3=M4[i] > 98 && M4[i-1] <=98; if (Alis1){ Sinyal = "A"; SonSinyalNo=1; Sistem.DikeyCizgiEkle(i, Color.Aqua, 2, 2);} else if (Alis2){ Sinyal = "A"; SonSinyalNo=2; Sistem.DikeyCizgiEkle(i, Color.Chartreuse, 2, 2);} else if (Alis3){ Sinyal = "A"; SonSinyalNo=3; Sistem.DikeyCizgiEkle(i, Color.DarkCyan, 2, 2);} } if ( SonYon != "F") { var Flat1=MAVW[i] < 70 && MAVW[i-1] >= 70; var Flat2=C[i] < MA2[i]; var Flat3=M4[i] < 102 && M4[i-1] <=102; if (Flat1 && SonSinyalNo == 1 ){ Sinyal = "F"; SonSinyalNo=0; Sistem.DikeyCizgiEkle(i, Color.Red, 2, 2);} else if (Flat2 && SonSinyalNo == 2 ){ Sinyal = "F"; SonSinyalNo=0; Sistem.DikeyCizgiEkle(i, Color.OrangeRed, 2, 2);} else if (Flat3 && SonSinyalNo == 3 ){ Sinyal = "F"; SonSinyalNo=0; Sistem.DikeyCizgiEkle(i, Color.DarkRed, 2, 2);} } if (SonYon != Sinyal && Sinyal != "") { SonYon = Sinyal; Sistem.Yon[i] = SonYon; Fiyat = C[i]; } } Sistem.Cizgiler[0].Deger =MAVW; Sistem.Cizgiler[1].Deger =MA2; Sistem.Cizgiler[2].Deger =M4;
Şöyle bişey yaptım hızlıca, detaylı incelemedim
Not:Flat3 koşulu var Flat3=M4[i] < 102 && M4[i-1] >=102; olması lazım sanırım
Not:robot kodu için farklı bi atraksiyon gerekir
Not:Denemedim ama alis koşullarından hangisine öncelik verileceği olayı baya değiştirir muhtemelen
HTML Kod:var V = Sistem.GrafikVerileri; var C = Sistem.GrafikFiyatOku(V, "Kapanis"); var MAVW =Sistem.RSI(100); var MA2= Sistem.TOMA(3,2); var M4 = Sistem.Momentum(100); var Fiyat = 0.00; var Sinyal =""; var SonYon = ""; var RSI = Sistem.RSI(14); var SonSinyalNo=0; for (int i = 1; i < Sistem.BarSayisi; i++) { if (SonYon != "A") { var Alis1=MAVW[i] > 60 && MAVW[i-1] <= 60; var Alis2=C[i] > MA2[i]; var Alis3=M4[i] > 98 && M4[i-1] <=98; if (Alis1){ Sinyal = "A"; SonSinyalNo=1; Sistem.DikeyCizgiEkle(i, Color.Aqua, 2, 2); Sistem.YaziEkle("1", 1, i, V[i].High+2, Color.Aqua, "Tahoma", 10);} else if (Alis2){ Sinyal = "A"; SonSinyalNo=2; Sistem.DikeyCizgiEkle(i, Color.Chartreuse, 2, 2);Sistem.YaziEkle("2", 1, i, V[i].High+2, Color.Chartreuse, "Tahoma", 10);} else if (Alis3){ Sinyal = "A"; SonSinyalNo=3; Sistem.DikeyCizgiEkle(i, Color.DarkCyan, 2, 2); Sistem.YaziEkle("3", 1, i, V[i].High+2, Color.DarkCyan, "Tahoma", 10);} } if ( SonYon != "F") { var Flat1=MAVW[i] < 70 && MAVW[i-1] >= 70; var Flat2=C[i] < MA2[i]; var Flat3=M4[i] < 102 && M4[i-1] >=102; if (Flat1 && SonSinyalNo == 1 ){ Sinyal = "F"; SonSinyalNo=0; Sistem.DikeyCizgiEkle(i, Color.Red, 2, 2);Sistem.YaziEkle("1", 1, i, V[i].Low-2, Color.Red, "Tahoma", 10);} else if (Flat2 && SonSinyalNo == 2 ){ Sinyal = "F"; SonSinyalNo=0; Sistem.DikeyCizgiEkle(i, Color.OrangeRed, 2, 2);Sistem.YaziEkle("2", 1, i, V[i].Low-2, Color.OrangeRed, "Tahoma", 10);} else if (Flat3 && SonSinyalNo == 3 ){ Sinyal = "F"; SonSinyalNo=0; Sistem.DikeyCizgiEkle(i, Color.DarkRed, 2, 2);Sistem.YaziEkle("3", 1, i, V[i].Low-2, Color.DarkRed, "Tahoma", 10);} } if (SonYon != Sinyal && Sinyal != "") { SonYon = Sinyal; Sistem.Yon[i] = SonYon; Fiyat = C[i]; } } Sistem.Cizgiler[0].Deger =MAVW; Sistem.Cizgiler[1].Deger =MA2; Sistem.Cizgiler[2].Deger =M4;
[QUOTE=yuji;6484055]Şöyle bişey yaptım hızlıca, detaylı incelemedim
Not:Flat3 koşulu var Flat3=M4[i] < 102 && M4[i-1] >=102; olması lazım sanırım
Not:robot kodu için farklı bi atraksiyon gerekir
Not:Denemedim ama alis koşullarından hangisine öncelik verileceği olayı baya değiştirir muhtemelen
var V = Sistem.GrafikVerileri;
var C = Sistem.GrafikFiyatOku(V, "Kapanis");
var h = Sistem.GrafikFiyatOku(V, "Yuksek");
var l = Sistem.GrafikFiyatOku(V, "Dusuk");
var o = Sistem.GrafikFiyatOku(V, "Acilis");
var MAVW =Sistem.RSI(14);
var MA2= Sistem.TOMA(1,1);
var M4 = Sistem.Momentum(2000);
var Fiyat = 0.00;
var Sinyal ="";
var sonfiyat = 0.00f;
int flatbar=0;
var alış1 = "";
var alış2 = "";
var alış3 = "";
var SonYon = "";
for (int i = 1; i < Sistem.BarSayisi; i++)
{
if( MAVW[i] > 60 && MAVW[i-1] <= 60 )
Sistem.DikeyCizgiEkle(i, Color.Cyan, 2, 4);
if(MAVW[i] <63 && MAVW[i-1] >= 63 )
Sistem.DikeyCizgiEkle(i, Color.Cyan, 2, 2);
if( M4[i] > 2000 && M4[i-1] <= 2000 )
Sistem.DikeyCizgiEkle(i, Color.Red, 2, 4);
if(M4[i] < 2300 && M4[i-1] >= 2300 )
Sistem.DikeyCizgiEkle(i, Color.Red, 2, 2);
}
for (int i = 1; i < Sistem.BarSayisi; i++)
{
{
if ( SonYon != "A" && MAVW[i] > 60 && MAVW[i-1] <= 60 ) { alış1 = "1"; Sinyal = "A"; }
// if ( SonYon != "A" && C[i] > MA2[i] && C[i-1] < MA2[i-1] ) { alış2 = "2"; Sinyal = "A"; }
if ( SonYon != "A" && M4[i] > 2100 && M4[i-1] <=2100 ) { alış3 = "3"; Sinyal = "A"; }
if ( SonYon == "A" && alış1 == "1" && MAVW[i] < 63 && MAVW[i-1] >= 63 ) {Sinyal = "F"; }
// if ( SonYon == "A" && alış2 == "2" && C[i] < MA2[i] && C[i-1] > MA2[i-1] ) {Sinyal = "F"; }
if ( SonYon == "A" && alış3 == "3" && M4[i] < 2300 && M4[i-1] >=2300 ) {Sinyal = "F"; }
}
if (SonYon != Sinyal && Sinyal != "")
{
SonYon = Sinyal;
Sistem.Yon[i] = SonYon;
Fiyat = C[i];
}
}
Sistem.Cizgiler[0].Deger =MAVW;
Sistem.Cizgiler[1].Deger =MA2;
Sistem.Cizgiler[2].Deger =M4;
Abi çok teşekkür ederim. Sizin ailenizin ayağına taş değmesin.
Twitterdan bir kişi yardımcı oldu çok sağolsun. Onuda aşağı bıraktım sizin kod yapısından farklı geldi bana.
Başkaları için örnek olur düşüncesiyle.
Bu arada bugun birisi telegram botu sordu. Ona yardımcı oldum. Güzeldi ya.
Sinyal çakışması olmaz hocam sistem al-flat olmadığı zamanlarda düşüş trendinde al yapacak.
Çok sağolun. Bir sorum olacak. Siz buraya yazmışınız. ben 2 gün önce tiberius un sayfasında sormuştum. Sizin vasıtanızla buradan herkese sormuş olayım.
Abi sizin vasıtanızla foruma sorayım.
Hocam düşüncem şuydu. Açığa satış olsa bunu düşünmeyecektim büyük ihtimalle. Açığa satış olmayınca sistemin getirisi nasıl artar diye düşündüm.
Bir trend takip sistemi: trend olmadığı yerlerde(alışta olmadığı yer)
burada aynı indikatörün 2 farklı değerleri ile al yapacağım. Ancak bu sistemlerden biri oyakc hissesinde 2 ayda %100 kazandırsada %20 gibi düşüşlerdeki alışlardan ek kazancı olacak gibi. %50 kazandıran sitemde daha faklı. Ama her %kazanç başımın üstüne diye düşünüyorum.
Bu halloldu.
2.sebep ; Abcd yapısını bulabiliyorum. Bunun üstüne ekleme yapmak istedim. Para.daki sistem gibi. Üyeyim ama hiç kullanmaya fırsatım olmadı. Kullanmaycağım büyük ihtimalle. Duruyor kenarda.
Değişik paternler oluşurarak bir sistem oluşturmak. burada benim sizin sayenizde farkettiğim problem çıktı. Bu siyaller aynı barda sinyal gellirse
Bu yapmak istediğim diğer sistemdi.
Sorum 1 :
Örnek verdiğimiz sistemden gidersek :
Paternerden bir sistem yaptım diyelim. Bu paternerden 3.ü aynı anda al verirse;
vememesi için bu sistemi nasıl düzenleriz. Öncelik sıralaması alış1-alış2-alış3 sırasıyla.
Diğer bir sorum:
3 farklı sistemim var. Dolayısıyla 3 farklı robot çalıştırıyorum. 1 ana ayrılan bütçe 2 ve 3 sistemler krediye giriyor.
Alış1 =100 lot
Alış2 = 50 lot
Alış3 = 40 lot
3 sistem yerine tek sistem kullanmak istiyorum. Bazen bu oran diğer sistemlerin flat olma koşulunda ½ mislinde oluyor. Tek bir sistemde birleştirmek istiyorum.
sizinde örnek verdiğiniz gibi 3 sistem aynı barda al verebilir. Fakat flat olma koşulları(alış1-flata/alış2-flat2/alış3-flat3) flat olma koşulları farklı olduğundan problem yok.
Panel 2.de alış1 sisteminin getiri eğrisini
Panel 3.de alış2 sisteminin getiri eğrisi
Panel 4.de alış3 sisteminin getiri eğrisi
Panel 5. De kümülatif getiri eğrisi şeklinde nasıl gösteririz.
BU sistem için nasıl bir robot kodu kullanmamız lazım.
Sistemin zor olduğunu düşünürsek insanların buna vakit ayırmamak istememeside çok normal olsada Güzel ve zor soru olduğunu düşünüyorum. Cevabıda bir çok kişiye örnek cevap olacaktır bence.
Bir ekleme yapmak istedim.
Çok sinyal üreten bir sistemim var. bu yön alış iken resimde görüleceği üzere; 6 kere daha sinyal üretiyor.
o yüzden yukarıdaki (sistem farklıda olsa) sorum 1 kısmında 100lot/50lot/40 lot olan sisteme sayac ekleme yapmak mümkünmüdür. sayaca göre misal 3 kere veya 4 kere daha alış yapacak. Sanırsam 3 senelik forum kotamı doldurdum. Hayırlı akşamlar dilerim.
|
|
Herkese selam, alış yaparken 24 parçada alış yapan bir kod var elimde bunun sat tarafını da aynı şekilde aldıklarını 24 parçada satabilecek bir kod nasıl yazabilirim? Al-sat emri geldikten sonra her 10 saniyede bir emir gitsin şeklinde.PHP Code:
var bakiye = 1000; // 1000 TL tutar kadar her alışta al
var SistemAdi = "Sistemim_1"; //sistemizin adı
var GrafikPeriyodu = "1"; //grafiğin priyodu
var ToplamPozisyon = 24; //Kaç defa alım yapılacak
var Sozluk = new List<string>();
Sozluk.Add("IMKBH'PETKM");
Sozluk.Add("IMKBH'KRDMD");
Sozluk.Add("IMKBH'KCHOL");
Sozluk.Add("IMKBH'AKBNK");
Sozluk.Add("IMKBH'EREGL");
Sozluk.Add("IMKBH'EKGYO");
for (var No = 0; No < Sozluk.Count; No++)
{
var Sembol = Sozluk[No]; //sistemin sinyal ürettiği grafik sembolü
var SonFiyat = (decimal)Sistem.SonFiyat(Sembol);
var SonYon = Sistem.SonYonGetir(SistemAdi, Sembol, GrafikPeriyodu);
var Anahtar = Sistem.Name + ", " + Sembol + ", " + GrafikPeriyodu;
var Anahtar2 = Sistem.Name + "::" + Sembol + "::" + GrafikPeriyodu;
double IslemFiyat = 0;
DateTime IslemTarih;
var Islem = "";
var Pozisyon = Sistem.PozisyonKontrolOku(Anahtar, out IslemFiyat, out IslemTarih);
var EmirTekrari = Sistem.PozisyonKontrolOku(Anahtar2);
var LotSize = (double)Math.Round(Sistem.SayiTablosunuOku(Anahtar2), 0);
var Basla = Sistem.SayiTablosunuOku(Anahtar);
if (Basla == 0)
{
Sistem.SayiTablosunuGuncelle(Anahtar, 1);
LotSize = (double)Math.Round((bakiye / SonFiyat), 0);
Sistem.SayiTablosunuGuncelle(Anahtar2, LotSize);
}
if (SonYon == "A" && Pozisyon == 0) // Al
Islem = "ALIS";
if (SonYon == "A" && Sistem.ZamanKontrolSaniye(Anahtar2) >= 10 && EmirTekrari <= ToplamPozisyon)
{
Sistem.ZamanKontrolGuncelle(Anahtar2);
Islem = "ALIS";
}
if (SonYon == "F" && Pozisyon > 0) // Sat
Islem = "SATIS";
if (Islem != "" && EmirTekrari <= ToplamPozisyon)
{
if (Islem == "ALIS")
{
EmirTekrari++;
Sistem.PozisyonKontrolGuncelle(Anahtar2, EmirTekrari);
Sistem.PozisyonKontrolGuncelle(Anahtar, Pozisyon + LotSize, (double)SonFiyat);
}
else if (Islem == "SATIS")
{
Sistem.PozisyonKontrolGuncelle(Anahtar2, 0);
Sistem.PozisyonKontrolGuncelle(Anahtar, 0, (double)SonFiyat);
}
Sistem.EmirSembol = Sembol;
Sistem.EmirIslem = Islem;
Sistem.EmirSuresi = "GUN";
Sistem.EmirTipi = "Piyasa";
Sistem.EmirMiktari = (double)Math.Abs(LotSize);
Sistem.EmirGonder();
}
}
Yer İmleri