Dediğiniz bar önceki gün kapanışı:
var prevC = Sistem.OncekiKapanisGun(Sistem.Sembol);
Geldik, gidiyoruz..
Printable View
Buradaki formüller işinizi görür.
https://www.hisse.net/topluluk/showt...92#post3563692
https://www.hisse.net/topluluk/showt...97#post3625897
Kapanış değeri 18.00 barı değil ki, niye onu versin? Herhangi bir gün içi barın kapanış değerini aşağıdaki şekilde çizdirebilirsiniz, ilk iki satırı karşılaştırma için bıraktım.. oraya yazdığınız saatte baktığınız periyot kapanışının oluyor olması lazım tabi..
Günün değiştiğini if ( V[i].Date.Day != V[i-1].Date.Day ) şartıyla da sorgulayabilirsiniz; test için for döngüsünün içindeki ilk satırın önündeki // işareti kaldırıp alt satırın önüne koyabilirsiniz..
PHP Code:
var prevC = Sistem.OncekiKapanisGun(Sistem.Sembol);
Sistem.Mesaj(prevC.ToString("0.00"));
var V = Sistem.GrafikVerileri ;
var C = Sistem.GrafikFiyatOku(V, "Kapanis" ) ;
var kp = Sistem.Liste(0);
for (int i = 10; i<Sistem.BarSayisi; i++)
{
//if ( V[i].Date.Day != V[i-1].Date.Day ) kp[i] = C[i-1];
if ( V[i].Date.Hour == 18 && V[i].Date.Minute == 05) kp[i] = C[i];
else kp[i]=kp[i-1];
}
Sistem.Cizgiler[0].Deger = kp;
phyton daha kolay gibi geldi 3-5 dakikalık eğitim videosu izledim :)
idealdata neden c# kullanıyor ki :28:
robot çalışmalaraı tam gez devam ediyor :)
https://i.hizliresim.com/JXUH5X.png
sayın sonli bi konuda yardıma ihtiyacım var , bilen arkadaşlarda yardımcı olabılırlerse varsa inanın sevinirim ,,
https://i.hizliresim.com/3PHABt.png
grafikte 5 tane bar var , bu barlardan 3. bar dısındakilerde harami formasyonu var ,
yani kendi belirliyeceğimiz 4 bar içerisinden, her hangi 3 tanesi harami formasyonu olabilir
yani 4 elemandan her hangi 3 ü bizim şartımızı sağlaması yeterli bunun sorgu formulunu nasıl yazdırabılırız ..
herkeze mutlu haftalar dilerim
Merhabalar. Size de iyi haftalar.
Soruyu açarak katkı sağlamaya çalışayım ben de:
1-Sadece "bullish harami" leri mi tarayacak? Yoksa "bearish" de mi olacak?
2-Bunu son 4 barda mı yapmak istiyorsunuz? Herhangi bir tarihteki Harami' leri de mi bulmak istiyorsunuz?
3-Grafiğe ayrıntılı bakmadım bakmadım ama 3 ile 2 arasında da bir "Harami" ilişkisi yok mu?
3a-Standart Harami dışında yani 2 değil 3 barda da formasyon görüntüsü mü istiyorsunuz?
Ezcümle sorgu değil ama... Konu şurada tartışılmış:
İDEAL veri terminalinde /Sistem/İndikatör/Robot - Page 14 (hisse.net)
İşinize yarar mı?
sayın obblomovv cevabınız için teşekkur ederim
1. yapının bullish veya bearish olması önemli değil ,
2. sorgu için kullanmayı dusunuyorum son 4 veya 5 bar olabilir ..
3.evet 3 ve 2 nolu barlar harami haklısınız , ifade eksikliği olmuş, aslında aranan bence bu
şöyle ki; 1,2,3,4,5 bar dizisi içerisinde uyumsuz olan olanı ihmal etmek istiyorum ki sizinde ifade ettiğiniz 3 molu barı taramalarda nasıl ihmal ettirebiliriz ?
4.evet kısmen standart harami dışın da , örnek 5 barlık bir seri içerisinde sıra numarası olmaksızın en az 4 şartı sağlayan 1 tanesini ihmal eden sorgu yazmak istiyorum ama yazamıyorum , yardımcı olabilirseniz eneks kırmızı ama en azından kafamda ki kurguyu çözdüğüm için mutlu olurum .. ( flama bayrak tarzı yapılar için )
link için teşekkur ederim. daha önceden görmüştüm ..
belki yeni okuyan araştıran arkadaşlar vardır . onlar için sizin nezdinizde nacizane bir bilgi yazayım..
ben yandım onlar yanmasın ( baya kafamı meşkul etmişti )
dediğiniz linkte ki kod; mum formasyonlarını veriyor .
içerisinde string bir ifade olmadığı için ideale mail atmıştım bu hammer , bullish kicker bearish filan nerde yazıyor diye :) ..
onlarda alttaki maili atmışlardı
https://i.hizliresim.com/Wq7JYP.png
Anladım hocam. Elinize sağlık.
Yardımcı olmak isterdim elimden geldiğince...
Lakin bir süredir Ideal lisansım yok.
Lisans olmayınca da test şansım yok, çünkü sorgu yaptırmıyor.
Elinizden geldiğince kodu yazar, takıldığınız yerde yardım isterseniz...
Üstadlar yardımcı olacaktır. Diğer türlü "kimse 0 dan kodu yazmaz sizin için kolay kolay..." diye düşünüyorum.
Kolay gelsin.
merhaba, umarım doğru yere yazıyorumdur. Yazdığım indikatörümün ne kadar sürede çalıştığını test etmek istiyorum. O nedenle aşağıdaki kodları kullanıyorum. Fakat bazen - sonuçlar çıkarıyor. Neden olabileceğini çözemedim.
double basla;
double bitis;
double zamansonuc=0.0;
basla=DateTime.Now.Millisecond;
//
//
kodlarım
//
//
bitis=DateTime.Now.Millisecond;
zamansonuc=bitis-basla;
Sistem.ZeminYazisiEkle("Çalışma= " + " " + zamansonuc.ToString()+" ms",1, 160, 100, AlisRenk, "Tahoma", 12);
Günlük periyodda sorguyu tariyorum.
Formülün içine
bu haftanın kapanışı > önceki haftanın kapanışı
şeklinde filtreye ihtiyacım var.
Grafikfiyatoku(Veriler,H, Kapanış) şeklinde kapanış verisini ancak haftalık periyodda taradığımda okuyor.
Günlük periyodda bunu nasıl yazmam lazımki tarama yapabilsin.
SM-A105F cihazımdan hisse.net mobile app kullanarak gönderildi.
Kendinizin de söylediğiniz gibi,
"Günlük periyodda" tarattığınızda,
periyod belirtilmemiş değişkenler "Günlük periyot olarak varsayılır."
Sorgu, gösterge, sistem...
Çok zamanlı(MTF) veri ihtiyacınız varsa;
Alt periyottan(örneğin Günlük), üst periyottaki veriyi(örneğin Haftalık) periyot bilgisini girerek,
ve sonra Sistem.DonemCevir() fonksiyonunu kullanarak çağırabilirsiniz.
Kod:var v=Sistem.GrafikVerileri;
var vH=Sistem.GrafikVerileriniOku(Sistem.Sembol, "H");
var hk=Sistem.GrafikFiyatOku(vH, "Kapanis");
hk=Sistem.DonemCevir(v,vH,hk);
Yukarıdaki örneği Haftalık ve altı periyotlardaki tarama kodunuzda kullanabilirsiniz.
EK: Biraz daha ayrıntılandıralım...
Kod:var v=Sistem.GrafikVerileri;
var son=Sistem.BarSayisi-1;
var vH=Sistem.GrafikVerileriniOku(Sistem.Sembol, "H");
var fiyat=Sistem.GrafikFiyatSec("Kapanis");
var hk=Sistem.Ref(Sistem.GrafikFiyatOku(vH, "Kapanis"),-1);
hk=Sistem.DonemCevir(v,vH,hk);
if(fiyat[son]>hk[son])
{
Sistem.SorguEkle();
}
Şeklindeki bir kodu tarama için kullandığınızda...
Hangi periyotta tarama yaparsanız "O" nun kapanışı, "Geçen Haftanın Kapanışından" büyük olanları listeleyecektir.
Örneğin "60 DK" tararsanız, 60 DK.lık kapanışı baz alacaktır.
Ancak aşağıdaki örneği Günlük altı hangi periyodda tararsanız tarayın,
Günlük kapanışı(veya taradığınız andaki fiyat), geçen Haftanın kapanışından büyük olanları listeler:
Kod:var v=Sistem.GrafikVerileri;
var son=Sistem.BarSayisi-1;
var vH=Sistem.GrafikVerileriniOku(Sistem.Sembol, "H");
var vG=Sistem.GrafikVerileriniOku(Sistem.Sembol, "G");
var hk=Sistem.Ref(Sistem.GrafikFiyatOku(vH, "Kapanis"),-1);
var gk=Sistem.GrafikFiyatOku(vG, "Kapanis");
hk=Sistem.DonemCevir(v,vH,hk);
gk=Sistem.DonemCevir(v,vG,gk);
if(gk[son]>hk[son])
{
Sistem.SorguEkle();
}
Bu hafta kapanışından kastınız son fiyat olsa gerek, geçen haftanın kapanışını periyot fark etmeksizin yüzeysel veriden alabilirsiniz:
var Veri = Sistem.YuzeyselVeriOku(Sistem.Sembol);
var Son = Veri.LastPrice;
var gecenhaftaC = Veri.PrevCloseWeek;
if(Son>gecenhaftaC) ....
Sayın obblomovv ,sonli teşekür ederim , hallettim sayenizde.
Bir soru daha sormak istiyorum.
Sembollerin son kaç bardır yükseldigini sorguda nasıl listeleyebilirim. ( herhangi bir periyodda)
Örnegin Garanın Günlük periyodda C > C ( i-1) > C(i-2) şekilnde 3 bardır yükseliyor. Bunu sorguda her hissenin kaç bardır yükseldigini sayı olarak yazdırmak istiyorum. Nasıl yapabilirim.
Bar
Garan-3
Thy- 2
Karel -1 gibi
// BRÜT TAKAS
var Veri = Sistem.YuzeyselVeriOku(Sistem.Sembol);
var Veriler = Sistem.GrafikVerileri;
var C = Sistem.GrafikFiyatOku(Veriler, "Kapanis");
var V = Sistem.GrafikFiyatOku(Veriler, "Hacim");
var j=Sistem.BarSayisi-1;
Sistem.SorguBaslik[0] = "Gün %"; // günlük fark %
Sistem.SorguBaslik[1] = "Kapanış" ; // haftalık fark %
Sistem.SorguBaslik[2] = "Hacim";
var bt = Veri.FI182;
if ( bt==1) // brüt takas hisselerini listeler , canlı veri lazım
//if ( bt==0) // brüt takas hisselerini devredışı bırakır , canlı veri lazım
{
Sistem.SorguDeger[0] = Sistem.YuzdeGun(Sistem.Sembol);
Sistem.SorguDeger[1] = C[j]; // sağlama yapmak için kullanılacak
Sistem.SorguDeger[2] = Sistem.GrafikVerileri[j-1].Vol;
Sistem.SorguEkle();
}
Şöyle birşey işinizi görür mü?
Kod:var close=Sistem.GrafikFiyatSec("Kapanis");
var bs=Sistem.Liste(0);
for( int i=1; i < Sistem.BarSayisi; i++)
{
if (close[i]>close[i-1])
bs[i]=bs[i-1]+1;
}
Sistem.Cizgiler[0].Deger=bs;
https://i.ibb.co/hWY6H48/usd.jpg
herhangi bir sistemde ilk çalıştırmada sinyal en son hangi durumdaysa direk işlem açmasın.
işlem açtıkdan sonra kapattığında hemen terse dönmesin.
bunu nasıl yazabiliriz.
Sayın @Tiko.
Önce soruyu doğru tanımlamak için "minicik bir çabayı göstermezseniz",
kimsenin yardımcı olabileceğini/olacağını zannetmiyorum.
Hadi diyelim:
1-Sistem ilk çalıştığında "mevcut yön" neyse, tersine sinyal üretene kadar çalışmasın.
Amenna bu kodla çözülür.
2-"işlem açtıkdan sonra kapattığında hemen terse dönmesin"
Olayı nasıl olacak? Kime göre hemen?
Hemen ne? 5 Dk. mı? 4 saat mi?
Tekrar ediyorum:
Önce, ne istediğimizi doğru tanımlamak için "minicik bir çabayı" kendimiz sarf etmeliyiz.
Sonra birilerinden kafa yormalarını, çaba göstermelerini beklemek mümkün. Olursa...
stosk(500,300,100, VAR)<stosd(500,300,100, VAR) bu kodu idealde yazmak istiyorum.
ilgilendiğiniz için çok teşekkür ederim. Aşağıdaki sayfada şu kodu buldum. Anlayamadığım konu benim yazmak istediğim de 1 değeri yok. Ancak Bulduğum örnekte stofast alıp içinde 1 değeri var. K değeri için Bu mu doğru bunu anlayamıyorum.
https://www.hisse.net/topluluk/showt...t=615&page=462
var STOSK = Sistem.MA(Sistem.StochasticFast(220, 1), "Variable", 170);
var STOSD = Sistem.MA(STOSK, "Variable", 30);
Doğru olup olmadığını o rakamları değiştirip çiZdirerek ve 2 platformda da karşılaştırarak anlayabilirsiniz.
.
Benim İdeal lisansım yok an itibari ile.
Haliyle test şansım da yok.
Birinin elinde varsa, veya yakın bir örneği manipüle ederse,
1-"Sistemin çalıştırıldığı andaki sinyal" tersine dönene kadar emir gönderme,
2-"İşleme girilen sinyal" kapatıldıktan sonra 30 dk emir gönderme,
şeklinde bir kod yazarsa işinizi görür sanırım.
E haliyle bu iş gönüllülük esasına dayalı olduğundan...
Bunlar ideal tekniğe yazılsa örnek kod gönderirler muhtemelen.
1. durum için kodsal bir fikrim yok.. flat yoksa ilk işlemi gerçek yapmaması için önce sanal başlatıp sonra gerçeğe alınabilir
2. durum için aşağıdaki benzeri bir şey yapılabilir.. işlem olan bar değişkene alınır ve aşağıdaki örnekte 5 bar geçmeden yeni işlem yapmaz; tabi aşağıdaki durumda 5 bar geçmeden açtığı işlemi de kapatmaz.. sistemde flat varsa sadece flat olduğu işlem barı alınır, a ve s durumlarında islembar=0; yapılarak flat olduktan sonra istenen bar sayısı kadar bekletilebilir..
PHP Code:
var SonYon="";
var islembar=0;
for (int i = 1; i<Sistem.BarSayisi; i++)
{
if ( SonYon != "A" && islembar>0 && islembar>i+5 && ..diğer şartlar.. )
{
Sistem.Yon[i] = "A";
SonYon="A";
islembar=i;
}
if ( SonYon != "S" && islembar>0 && islembar>i+5 && ..diğer şartlar.. )
{
Sistem.Yon[i] = "S"; // satış
SonYon="S";
islembar=i;
}
}
Sayın sonli' nin gönderdiği kod da işinizi görmüyorsa,
Yine kendisinin dediği gibi;
iDealAlgo (@Algoyardim) / Twitter
veya
teknik@idealdata.com.tr adresinden yardım istenebilir.
yardımlar için teşekkürler ama ilk sinyal gelmeden herhangi bir zamanda robot açtığnızda direk alması veya satması bir problem zaten.ideal tarafına sorayım.
var V = Sistem.GrafikVerileri ;
var C = Sistem.GrafikFiyatOku(V, "Kapanis" ) ;
var H = Sistem.GrafikFiyatOku(V, "Yuksek" ) ;
var L = Sistem.GrafikFiyatOku(V, "Dusuk" ) ;
var GGG = Sistem.GrafikVerileriniOku(Sistem.Sembol, "G");
var GGG1 = Sistem.GrafikFiyatOku(GGG, "Kapanis");
var İNDG = Sistem.AverageTrueRange(GGG,2);
İNDG = Sistem.DonemCevir(V, GGG, İNDG);
Sistem.Cizgiler[0].Deger = İNDG;
var HAFTA_ATR = Sistem.MA(İNDG, "Simple", 5);
var AY_ATR = Sistem.MA(İNDG, "Simple", 30);
HAFTA_ATR = Sistem.DonemCevir(V, GGG,HAFTA_ATR );
AY_ATR = Sistem.DonemCevir(V, GGG,AY_ATR );
Sistem.Cizgiler[1].Deger = HAFTA_ATR;
Sistem.Cizgiler[2].Deger = AY_ATR;
Üsteki formülde şunu yapmak istedim beceremedim. Dönem çevir formüllerinin beceremiyorum.
1 dk sistemde kullanılması için Sembolün günlük periyoddaki atr sinin haftalık ve aylık ortalamasını çizdirmem ( getirmem ) gerekiyor. 1 dk sisteme günlük atr degerini çizdidim. fakat 5 günlük ve 30 günlük atr ortalamasını çizdiremedim. ( yanlış degerler çıkıyor.)
Bence Sistem.DonemCevir meselesinde sizin kafanız karışmış.
Açıkçası bu haliyle benim de kafam karıştı.
Soru:
-"1 dk sistemde kullanılması için Sembolün günlük periyoddaki atr sinin haftalık ve aylık ortalamasını çizdirmem ( getirmem ) gerekiyor. "
bu mu?
-"5 günlük ve 30 günlük atr ortalamasını çizdiremedim." bu mu?
Tam olarak ne yapmak istiyorsunuz?
ATR' nin Günlük değerini alıp Haftalık ve Aylık değerini çizdirmek?
5 Günlük ve 30 Günlük ortalamayı mı çizdirmek?
Tam olarak aynı şeyler değil özünde.
Şöyle birşey işinizi görür mü?
Kod:var V = Sistem.GrafikVerileri ;
var GGG = Sistem.GrafikVerileriniOku(Sistem.Sembol, "G");
var HHH = Sistem.GrafikVerileriniOku(Sistem.Sembol, "H");
var AAA = Sistem.GrafikVerileriniOku(Sistem.Sembol, "A");
var INDG = Sistem.AverageTrueRange(GGG,2);
var INDH = Sistem.AverageTrueRange(HHH,2);
var INDA = Sistem.AverageTrueRange(AAA,2);
INDG = Sistem.DonemCevir(V, GGG, INDG);
INDH = Sistem.DonemCevir(V, HHH, INDH);
INDA = Sistem.DonemCevir(V, AAA, INDA);
Sistem.Cizgiler[0].Aciklama="G";
Sistem.Cizgiler[0].Deger = INDG;
Sistem.Cizgiler[1].Aciklama="H";
Sistem.Cizgiler[1].Deger = INDH;
Sistem.Cizgiler[2].Aciklama="A";
Sistem.Cizgiler[2].Deger = INDA;
https://i.ibb.co/4TbJNy3/atakanbey.jpg