Alıntı:
Originally Posted by
ozbek78
Merhaba Sezai bey,
1. sorum çok güzel çalıştı volume işin içine alındığında hatalı sinyal azaltmak için kullandığımda işe yarayacak gibi duruyor. 5 dk'lık 1000 barda vol'süz %16,62 getiri bu vol ile %18,24'e çıktı.
2. soruma yazdığınız yukarıdaki hiç sinyal üretmedi. galiba ben tam anlatamadım sorumu. Tam anlayamıyorum kodlardan ama tam demek istediğim
if (Mov1[i] > Mov2[i] && MovVol[i] > VolGun[i] && SonYon != "A") galiba sizin yazdığınız "VolGun[i]" günlük hacim toplamı mı anlayamadım. sinyal üretmedi maalesef
if (Mov1[i] > Mov2[i] && son5barın ortalama hacim[i] > [I]OrtalamaHacim && SonYon != "A") tam olarak yapmak istediğim.
Bu arada yardımınız için teşekkür ederim.
Bu sinyallere İdeal Sistem kütüphanesinden bakarak mail gönder özelliği ekledim. ama sinyal geldiğinde 5 dk boyunca sinyalle ilgili 35-40 adet mail atıyor. bunu tek maile nasıl düşürebilirim?
yazdığım koşulu ;
// alış
if (Sistem.YukariKestiyse(MA1, MA2)) // Al sinyali mail
{
var Periyot = "5" ;
var Veri = Sistem.GrafikVerileriniOku(Sembol, Periyot);
var SonBarNo = Veri.Count-1;
//Mailin içine yazılacak mesaja bu verileri ekle
var Mesaj = Veri[SonBarNo].Date.ToString("HH:mm:ss")
+ "\r\n" +" Open="+Veri[SonBarNo].Open.ToString()
+ "\r\n" +" High="+Veri[SonBarNo].High.ToString()
+ "\r\n" +" Low="+Veri[SonBarNo].Low.ToString()
+ "\r\n" +" Close="+Veri[SonBarNo].Close.ToString();
// Mail Gönder
Sistem.GoruntuKaydet("C:\\Ekranım.png");
var MailServer = "smtp.gmail.com";
Sistem.MailServerAdres = MailServer;
Sistem.MailServerPort = 587;
Sistem.MailKonu = "Al Sinyali";
Sistem.MailMetin = Mesaj;
Sistem.MailGonderenAdres = "*******@gmail.com";
Sistem.MailGonderenSifre = "*******";
Sistem.MailDosyaEkle("C:\\Ekranım.png");
Sistem.MailAliciEkle("*******@gmail.com");
Sistem.MailGonder();
}
Sezai Bey'e ben de sormuştum şöyle cevap geldi;
Alıntı:
Aslında sistem kodunda hiç mail attırmamak en mantıklısı.
Bu sistemi okuyup emir iletmek amaçlı bşir robota bağlayıp, robotun içine mail gönder koymak daha doğru
O zaman zaten, nasıl ki sürekli emir iletmez pozisyon kontrol değeri değişmedikçe, mail de atmaz.
Ama yine de bu kodda kullanmak için, mesela sayı tablosunda bir değer yazıp, o sıfırsa mail at gibi bir şey kodlanabilir
Kodun üst kısmında bir yerlere, grafiğin barında tarih değişince sıfırlanan bir anahtar atayın
Onu da defa diye bir değişkene okutun
var Anahtar = Sistem.Name + " , " + Sistem.GrafikVerileri[Sistem.GrafikVerileri.Count-1].Date.ToString("yyyyMMdd HH:mm");
var Defa = Sistem.SayiTablosunuOku(Anahtar);
mail gönderim bloğunu aşağıdaki bir if’in içine alın, mail gönderilir gönderilmez, sayı tablosunu 1 yapın ve defa=0 ise mail atsın
o bar içinde bir daha oraya girmez
if (Defa == 0)
{
Sistem.SayiTablosunuGuncelle(Anahtar, 1);
//MAİL GÖNDER SATIRLARI
}