var x=0;
ww:=if(x=1,tk,hk);
bu kodu nasıl çevirebilirim?
Printable View
var x=0;
ww:=if(x=1,tk,hk);
bu kodu nasıl çevirebilirim?
seviyeli izleyen stop kodu elinde olan varsa paylaşabilir mi?
Arkadaşlar selam. iDeal lisansı aldım bugün, ilk defa kullanıyorum. Lisansım Hisse Düzey 1+ ve Borsa İstanbul endeksleri.
Günlük kademe analizi sayfasında; ISCTR için; günün yükseği 22,40 olmasına rağmen gözüken en yüksek değer 22,10
Bu türden veri eksikleri oluyor mu? Yanlış ya da eksik bir şey mi yapıyorum?
https://i.hizliresim.com/ncca7g7.png
Derinlik penceresi üst kismi ve Fiyat penceresi verileri yuzeyseldir. Anlık başka bir yerde tutulmaz.
Bilgisayar geç açıldığından grafik periyot verileri... Takas verileri... işlem defteri verileri - haber akislari- bilanço vs. güncellenmelidir
.
Teşekkür ederim :ok:
Dediğiniz gibi güncelleme yapınca düzeldi. Sağolun.
https://i.hizliresim.com/dvztj4s.png
https://i.hizliresim.com/9mn4ghp.png
PHP Code:
public static class Sistem
{
public static void Optimizasyon(string s, int param1, int param2, int param3)
{ }
public static List<float> GrafikFiyatSec(string s) { return null; }
public static List<float> HullMA(object Liste, int Periyot) { return null; }
public static List<float> MA(object Liste, string Tip, int Periyot) { return null; }
public static int BarSayisi = 0;
public static string[] Yon = new string[] {"A","S","F" };
//İhtiyaç duyulan diğer kodlar eklenebilir
}
Öğreniyorum yavaş yavaş. Teşekkürler.
https://i.hizliresim.com/ew5kfqx.png
Merhabalar @bymehmet #bymehmet, @INVENTOR, #INVENTOR
Ben de cs.lib dosyasina notepad ile boyle bir icerik hazirladim:
using System;
namespace ideal
{
public class Lib
{
// Kullanim sekli:Lib.topla(12,25);
public int topla(int a, int b)
{
return a + b;
}
//Kullanim sekli: Lib.buy_order(Sistem, symbol, price);
public void buy_order(dynamic Sistem, string symbol,double price)
{
Sistem.EmirSembol = symbol;
Sistem.EmirIslem = "Alış";
Sistem.EmirMiktari = 1;
Sistem.EmirFiyati = price; // Limit fiyat
Sistem.EmirSuresi = "GUN";
Sistem.EmirTipi = "Limitli";
Sistem.EmirGonder();
}
//Kullanim sekli: sell_order(Sistem, symbol, price);
public void sell_order(dynamic Sistem, string symbol,double price)
{
Sistem.EmirSembol = symbol;
Sistem.EmirIslem = "Satış";
Sistem.EmirMiktari = 1;
Sistem.EmirFiyati = price; // Limit fiyat
Sistem.EmirSuresi = "GUN";
Sistem.EmirTipi = "Limitli";
Sistem.EmirGonder();
}
}
}
Buradaki amacim surekli kullandigim limitli alim-satim emirlerini basite indirgeyerek uzun kodlari kisaltmakti.
Bunu test amacli bir kod icerisinde denedim:
var sonuc = Lib.topla(12,25);
string symbol = "VIP'F_USDTRY1223"; // Symbol to buy
double price = 29.52; // Price for buying
Lib.buy_order(Sistem, symbol, price);
Lib.sell_order(Sistem, symbol, price);
Sistem.Mesaj("Sonuç : "+sonuc);
Ekrana cikan rakami (37) verdi. Ama tabii alim-satim yapti mi emin degilim. Bu kod dogru mudur? Nasil test edebilirim? (Ideal yazilimim var ama lisansi ekleyemedim bir turlu henuz)
Sanal olarak test ettim. Şimdilik calisiyor gorunuyor.
Kod:using System;
namespace ideal
{
public class Lib
{
// Kullanim sekli:Lib.topla(12,25);
public int topla(int a, int b)
{
return a + b;
}
//Kullanim sekli: Lib.buy_order(Sistem, symbol, price);
public void buy_order(dynamic Sistem, string symbol,double price)
{
Sistem.EmirSembol = symbol;
Sistem.EmirIslem = "Alış";
Sistem.EmirMiktari = 1;
Sistem.EmirFiyati = price; // Limit fiyat
Sistem.EmirSuresi = "GUN";
Sistem.EmirTipi = "Limitli";
Sistem.EmirGonder();
}
//Kullanim sekli: Lib.sell_order(Sistem, symbol, price);
public void sell_order(dynamic Sistem, string symbol, double price)
{
Sistem.EmirSembol = symbol;
Sistem.EmirIslem = "Satış";
Sistem.EmirMiktari = 1;
Sistem.EmirFiyati = price; // Limit fiyat
Sistem.EmirSuresi = "GUN";
Sistem.EmirTipi = "Limitli";
Sistem.EmirGonder();
}
}
}
günlük ağırlıklı ortalamanın ,aylık ağırlıklı ortalamayı yukarı kesmesini nasıl yazarız?
dönem çevir fonksiyonu işinize yarayacaktır.
örnekte Günlüğün ufak periyota dönüşümü var
kendinize göre değiştirip devamını getirirsiniz.
var Bars3 = Sistem.GrafikVerileriniOku(Sembol, "G" );
var Kapanislar3 = Sistem.GrafikFiyatOku(Bars3, "Kapanis");
var MA3 = Sistem.MA(Kapanislar3, "Exp", 20);
var Bars2 = Sistem.GrafikVerileriniOku(Sembol, Periyot );
var Kapanislar2 = Sistem.GrafikFiyatOku(Bars2, "Kapanis");
var MA2 = Sistem.MA(Kapanislar2, "Exp", 50);
var Bars1 = Sistem.GrafikVerileriniOku(Sembol, Periyot );
MA3 = Sistem.DonemCevir(Bars2, Bars3, MA3);
Teşekkür ederim.
bu kodda nerde hata yapıyorum, hiçbir değer çıkmıyor
// Ref ( LLV ( RSI (14) ,5 ) ,2 ) <30
var V = Sistem.GrafikVerileri;
var C = Sistem.GrafikFiyatOku(V, "Kapanis") ;
var H = Sistem.GrafikFiyatOku(V, "Yuksek") ;
var L = Sistem.GrafikFiyatOku(V, "Dusuk") ;
var rsı= Sistem.RSI(14);
var llv=Sistem.LLV(rsı,5);
var refe=Sistem.Ref(llv,2);
var Price = Sistem.Liste(0);
for (int i = 10 ; i < V.Count; i++)
{
Price[i] = (refe[i]<Sistem.Liste(30)[i]);
}
Sistem.Cizgiler[0].Deger =Price ;
@BERLYS
KULLANIMLARI ÖRNEKLEDİM.
var HHV = Sistem.HHV(100, "Yuksek");
var LLV = Sistem.LLV(100, "Dusuk");
var RSI = Sistem.RSI(C ,14);
var RSIORT = Sistem.MA(Sistem.RSI(C ,14) , "Exp", 4);
var Tepe = Sistem.Ref(Sistem.HHV(100, "Yuksek" ),-1);
var Dip = Sistem.Ref(Sistem.LLV(100, "Dusuk"),-1);
Sn. Bear_Bull metastock kullanıyordunuz her halde, Matrisk bilgi dağıtım firması metastock için ms dowlondear programını sistemden kaldırmışlar. Maalesef ms dowlondear olmadığı için metastock kullanamamaktayım. Metastock için verileri nereden temin edebilirim acaba şimd,den tşk.
anladım çok teşekkürler
Sayın Saraylının ORB kodunu ideale çevirmeye çalıştım ama çok hata var, düzeltmeye yardım eder misiniz?
//H1st:=ValueWhen(1,Hour()*100+Minute()=940,HHV(H,6) );
//L1st:=ValueWhen(1,Hour()*100+Minute()=940,LLV(L,6) );
//1A1:=(H1st+ 2*ATR(13)*0.8)/0.025+0.50;1A2:=(H1st+ ATR(13)*0.8)/0.025+0.50;
//1A3:=(H1st- 2*ATR(13)*0.8)/0.025+0.50;1F1:=(L1st+2*ATR(13)*0.8)/0.025+0.50;
//1F2:=(L1st-ATR(13)*0.8)/0.025+0.50;1F3:=(L1st-2*ATR(13)*0.8)/0.025+0.50;
//A1:=Int(1A1)*0.025;A2:=Int(1A2)*0.025;A3:=Int(1A3) *0.025;
//F1:=Int(1F1)*0.025;F2:=Int(1F2)*0.025;F3:=Int(1F3) *0.025;A1;A2;A3;F1;F2;F3
var V = Sistem.GrafikVerileri;
var HHV = Sistem.HHV(6, "Yuksek");
var LLV = Sistem.LLV(6, "Dusuk");
var H1st = Sistem.Liste(0);
var L1st = Sistem.Liste(0);
for (int i = 1 ; i < Sistem.BarSayisi; i++)
{
if (V[i].Date.Hour == 09 && V[i].Date.Minute ==10)
{
H1st[i] = HHV[i];
L1st[i] = LLV[i];
}
else
{
H1st[i] = H1st[i-1];
L1st[i] = L1st[i-1];
}
}
var atr=Sistem.AverageTrueRange(13);
var 1A1 = Sistem.Liste(0);
var 1A2 = Sistem.Liste(0);
var 1A3 = Sistem.Liste(0);
var 1F1 = Sistem.Liste(0);
var 1F2 = Sistem.Liste(0);
var 1F3 = Sistem.Liste(0);
var A1 = Sistem.Liste(0);
var A2 = Sistem.Liste(0);
var A3 = Sistem.Liste(0);
for (int i = 1 ; i < Sistem.BarSayisi; i++)
{
1A1[i] = (H1st[i]+2*atr[i]*0.8f)/0.025f+0.50f;
1A2[i] = (H1st[i]+atr[i]*0.8f)/0.025f+0.50f;
1A3[i] =(H1st[i]-2*atr[i]*0.8f)/0.025f+0.50f;
1F1[i] = (L1st[i]+2*atr[i]*0.8f)/0.025f+0.50f;
1F2[i] = (L1st[i]-atr[i]*0.8f)/0.025f+0.50f;
1F3[i] = (L1st[i]-2*atr[i]*0.8f)/0.025f+0.50f;
A1[i] =int(1A1[i])*0.025f;
A2[i] =int(1A2[i])*0.025f;
A3[i] =int(1A3[i])*0.025f;
F1[i] =int(1F1[i])*0.025f;
F2[i] =int(1F2[i])*0.025f;
F3[i] =int(1F3[i])*0.025f;
}
Sistem.Cizgiler[0].Deger = A1 ;
Sistem.Cizgiler[1].Deger = A2 ;
Sistem.Cizgiler[2].Deger = A3 ;
Sistem.Cizgiler[3].Deger = F1 ;
Sistem.Cizgiler[4].Deger = F2 ;
Sistem.Cizgiler[5].Deger = F3 ;
1- C# dilinde değişkenler rakamla başlayamaz. 1A1 gibi bir değişken tanımlanamaz bunları düzeltin harf ile başlasınlar. A11 olabilir.
2- Casting için değeri değil cast türünü paranteze alın. int(a1) yerine (int)a1 gibi yazmanız gerekiyor.
3- F1 F2 ve F3 tanımlanmamış.
Bunları düzeltirseniz kodunuz muhtemelen çalışır.
oldu galiba ,belki kullanmak isteyen olur.
var V = Sistem.GrafikVerileri;
var HHV = Sistem.HHV(6, "Yuksek");
var LLV = Sistem.LLV(6, "Dusuk");
var H1st = Sistem.Liste(0);
var L1st = Sistem.Liste(0);
for (int i = 1 ; i < Sistem.BarSayisi; i++)
{
if (V[i].Date.Hour == 09 && V[i].Date.Minute ==10)
{
H1st[i] = HHV[i];
L1st[i] = LLV[i];
}
else
{
H1st[i] = H1st[i-1];
L1st[i] = L1st[i-1];
}
}
var atr=Sistem.AverageTrueRange(13);
var TA1 = Sistem.Liste(0);
var TA2 = Sistem.Liste(0);
var TA3 = Sistem.Liste(0);
var TF1 = Sistem.Liste(0);
var TF2 = Sistem.Liste(0);
var TF3 = Sistem.Liste(0);
var A1 = Sistem.Liste(0);
var A2 = Sistem.Liste(0);
var A3 = Sistem.Liste(0);
var F1 = Sistem.Liste(0);
var F2 = Sistem.Liste(0);
var F3 = Sistem.Liste(0);
for (int i = 1 ; i < Sistem.BarSayisi; i++)
{
TA1[i] = (H1st[i]+2*atr[i]*0.8f)/0.025f+0.50f;
TA2[i] = (H1st[i]+atr[i]*0.8f)/0.025f+0.50f;
TA3[i] =(H1st[i]-2*atr[i]*0.8f)/0.025f+0.50f;
TF1[i] = (L1st[i]+2*atr[i]*0.8f)/0.025f+0.50f;
TF2[i] = (L1st[i]-atr[i]*0.8f)/0.025f+0.50f;
TF3[i] = (L1st[i]-2*atr[i]*0.8f)/0.025f+0.50f;
A1[i] =(int)TA1[i]*0.025f;//(int)a1
A2[i] =(int)TA2[i]*0.025f;
A3[i] =(int)TA3[i]*0.025f;
F1[i] =(int)TF1[i]*0.025f;
F2[i] =(int)TF2[i]*0.025f;
F3[i] =(int)TF3[i]*0.025f;
}
Sistem.Cizgiler[0].Deger = A1 ;
Sistem.Cizgiler[1].Deger = A2 ;
Sistem.Cizgiler[2].Deger = A3 ;
Sistem.Cizgiler[3].Deger = F1 ;
Sistem.Cizgiler[4].Deger = F2 ;
Sistem.Cizgiler[5].Deger = F3 ;
Veri güncellemeyle ilgili sorunları aşamadım bir türlü..
Sorgu kodlarında bir sembolün bir periyodu için hesaplama yaparken
eğer o sembol için grafik daha önceden ekrana çizilmemişse;
sorgu sonucunda göstergeler için hesaplanan sonuçlar ile
sembolün grafiğini ekrana çizdirdiğim zaman güncellenen barlar nedeniyle
değişen gösterge değerleri; haliyle; birbirinden farklı çıkıyor.
(Sembol grafiği seçili periyotta ekrana çizilince veriler güncelliyor; hop.. bir kaç bar daha ekleniyor grafiğe, dolayısıyla sorguda hesaplanan değerler değişiyor)
Bu verinin sonradan; grafiği çizilince; güncellenmesi seans saatleri içinde de oluyor mu onu tespit edemedim.
Sorgu öncesi iDeal menüsünden güncellemeyi yapıyorum. Bazen veri indiriyor, bazen veriler güncel olduğu için indirmiyor.
https://i.hizliresim.com/bhwt48c.png
Sistem değil.. Sorgularda yaşıyorum bu problemi.. sistem için de aynı şey oluyor ama amaç sorgu sinyalini kaçırmamak.
Sorgu gerçekleşiyor.. algoritmaya göre (custom) AL-SAT vb. sinyaller üretiliyor..
Sembolün grafiğini açtığımda bir bakıyorum beş altı bar ekleniyor grafiğe ve sorgunun ürettiği sinyalle alakası olmayan bir durumla karşılaşıyorum.
Çözemedim bu işi. Bu konuda yanlış olan, ya da yanlış- eksik yaptığım bir şeyler var. Yardım edebilecek var mı?
Sorgu kodlarında aşağıdaki şekilde veri okutuyorum.
PHP Code:
string Periyot = Sistem.Periyot;
Sistem.GrafikVerisiIndir(Sistem.Sembol, Periyot);//ardarda 1 saat geçmeden kullanamazsınız
//Sistem.YuzeyselGuncelle(Sistem.Sembol); //Verileri sıfırlıyor, hesaplama yapılamıyor
//Sistem.GrafikGuncelle(Sistem.Sembol); //Kullanıcı tanımlı semboller için
var Veriler = Sistem.GrafikVerileriniOku(Sistem.Sembol, Periyot);
var BarYüksek = Sistem.GrafikFiyatOku(Veriler, "Yuksek");
var BarDüşük = Sistem.GrafikFiyatOku(Veriler, "Dusuk");
var BarPIVOT = Sistem.GrafikFiyatOku(Veriler, "OHLC/4");
//Bazı periyotlarda barların ağırlıklı ortalamasını veri olarak alamıyorsun..
//var BarYüksek = Sistem.GrafikFiyatSec("Yuksek");
//var BarDüşük = Sistem.GrafikFiyatSec("Dusuk");
//var BarPIVOT = Sistem.GrafikFiyatSec("OHLC/4");
var V_240 = Sistem.GrafikVerileriniOku(Sistem.Sembol, "240", "OHLC/4");
var V_60 = Sistem.GrafikVerileriniOku(Sistem.Sembol, "60", "OHLC/4");
Verileri tamamlasın diye bazen aşağıdaki sorguyu kullanıyorum.. kullandığım bütün periyotları işaretleyip bu sorguyu çalıştırıyorum yine de ekrana grafik çizilmeden bir türlü şu veriyi tamamlatamadım. Karanlık oda verisinin de hangi periyotta hangi bara eklendiği konusu da soru işareti.. G ve 240 dakikalık barlara ekleniyor, fakat diğer periyotlarda ayrı bir bar olarak sona ekleniyor.. yanlış yaptığım bir şeyler var.
Önce tüm sembollerde ekrana grafik çizdirilecek.. sorgu tekrar çalıştırılacak.. o zaman sorun yok. :28:
https://i.hizliresim.com/a76pt16.pngPHP Code:
public void QUERY_COMPLETE_DATA()
{
//Senetler
Sistem.SorguAciklamaGenislik = 150;
Sistem.SorguSutunGenislik[0] = 50;
Sistem.SorguBaslik[0] = "SEMBOL";
Sistem.SorguSutunTip[0] = "YAZI";
Sistem.SorguSutunHizala[0] = "SOL";
var Symbol = (Sistem.Sembol.Contains("IMKBH'") ? Sistem.Sembol.Replace("IMKBH'", "") : Sistem.Sembol);
Sistem.SorguDeger[0] = Symbol;
var Yuzeysel = Sistem.YuzeyselVeriOku(Sistem.Sembol);//Etkisiz
var SonFiyat = Sistem.SonFiyat(Sistem.Sembol);
if (SonFiyat > 0)
{
try
{
int colID = 1;
Sistem.SorguSutunGenislik[colID] = 60;
Sistem.SorguOndalik[colID] = 2;
Sistem.SorguBaslik[colID] = "(SonFiyat) KAPANIŞ";
Sistem.SorguDeger[colID] = SonFiyat;
colID++;
Sistem.SorguSutunGenislik[colID] = 110;
Sistem.SorguOndalik[colID] = 2;
Sistem.SorguBaslik[colID] = "(OncekiKapanisGun) Önceki Kapanış";
var OncekiKapanisGun = Sistem.OncekiKapanisGun(Sistem.Sembol);
Sistem.SorguDeger[colID] = OncekiKapanisGun;
colID++;
Sistem.SorguSutunGenislik[colID] = 80;
Sistem.SorguOndalik[colID] = 0;
Sistem.SorguBaslik[colID] = "(SonHacim) SON HACİM";
var SonHacim = Sistem.SonHacim(Sistem.Sembol);
Sistem.SorguDeger[colID] = SonHacim;
colID++;
Sistem.SorguSutunGenislik[colID] = 20;
Sistem.SorguBaslik[colID] = "-";
Sistem.SorguSutunHizala[colID] = "ORTA";
Sistem.SorguDeger[colID] = "";
string Periyot = Sistem.Periyot;
Sistem.GrafikVerisiIndir(Sistem.Sembol, Periyot);
//Sembol ve Periyot
int _Periyot = 0;
int.TryParse(Periyot, out _Periyot);
string PeriodValue = Symbol + " " + (_Periyot == 0 ? Periyot : _Periyot.ToString("000"));
colID++;
Sistem.SorguSutunGenislik[colID] = 70;
Sistem.SorguBaslik[colID] = "Sembol & Periyot"; //Periyot
Sistem.SorguSutunHizala[colID] = "SOL";
Sistem.SorguSutunTip[colID] = "YAZI";
Sistem.SorguDeger[colID] = PeriodValue;
//Sistem Bar Sayısı
colID++;
Sistem.SorguSutunGenislik[colID] = 60;
Sistem.SorguBaslik[colID] = "Sistem Bar Sayısı";
Sistem.SorguOndalik[colID] = 0;
Sistem.SorguDeger[colID] = Sistem.BarSayisi;
// GRAFİK VERİLERİNİ OKU
var Barlar = Sistem.GrafikVerileriniOku(Sistem.Sembol, Periyot);
//Grafik Verilerini Oku : Bar Sayısı
int Barlar_Count = Barlar.Count;
colID++;
Sistem.SorguSutunGenislik[colID] = 60;
Sistem.SorguBaslik[colID] = "(GVO) Bar Sayısı";
Sistem.SorguOndalik[colID] = 0;
Sistem.SorguDeger[colID] = Barlar_Count;
//Grafik Verilerini Oku : Önceki Bar Kapanış Saati
colID++;
Sistem.SorguSutunGenislik[colID] = 85;
Sistem.SorguBaslik[colID] = "(GVO) Önceki Bar Zamanı";
Sistem.SorguSutunTip[colID] = "YAZI";
Sistem.SorguDeger[colID] = Barlar[Barlar.Count - 2].Date.ToLongTimeString();
//Grafik Verilerini Oku : Son Bar Kapanış Saati
colID++;
Sistem.SorguSutunGenislik[colID] = 80;
Sistem.SorguBaslik[colID] = "(GVO) Son Bar Zamanı";
Sistem.SorguSutunTip[colID] = "YAZI";
Sistem.SorguDeger[colID] = Barlar[Barlar.Count - 1].Date.ToLongTimeString();
//Grafik Verilerini Oku : Önceki Bar Kapanış
colID++;
Sistem.SorguSutunGenislik[colID] = 85;
Sistem.SorguBaslik[colID] = "(GVO) Önceki Bar Kapanış";
Sistem.SorguOndalik[colID] = 2;
Sistem.SorguDeger[colID] = Barlar[Barlar.Count - 2].Close;
//Grafik Verilerini Oku : Son Bar Kapanış
colID++;
Sistem.SorguSutunGenislik[colID] = 80;
Sistem.SorguBaslik[colID] = "(GVO) Son Bar Kapanış";
Sistem.SorguOndalik[colID] = 2;
Sistem.SorguDeger[colID] = Barlar[Barlar.Count - 1].Close;
// GRAFİK FİYAT OKU
var GFO_Close = Sistem.GrafikFiyatOku(Barlar, "Kapanis");
//Grafik Fiyat Oku : Önceki Bar Kapanış
var GFO_Close_Prev = GFO_Close[GFO_Close.Count - 2];
colID++;
Sistem.SorguSutunGenislik[colID] = 70;
Sistem.SorguBaslik[colID] = "(GFO) Önceki Kapanış";
Sistem.SorguOndalik[colID] = 2;
Sistem.SorguDeger[colID] = GFO_Close_Prev;
//Grafik Fiyat Oku : Son Bar Kapanış
var GFO_Close_Last = GFO_Close[GFO_Close.Count - 1];
colID++;
Sistem.SorguSutunGenislik[colID] = 65;
Sistem.SorguBaslik[colID] = "(GFO) Son Kapanış";
Sistem.SorguOndalik[colID] = 2;
Sistem.SorguDeger[colID] = GFO_Close_Last;
var GFO_Volume = Sistem.GrafikFiyatOku(Barlar, "Hacim");
//Grafik Fiyat Oku : Önceki Bar Hacim
var GFO_Volume_Prev = GFO_Volume[GFO_Volume.Count - 2];
colID++;
Sistem.SorguSutunGenislik[colID] = 100;
Sistem.SorguBaslik[colID] = "(GFO) Önceki Hacim";
Sistem.SorguOndalik[colID] = 0;
Sistem.SorguDeger[colID] = GFO_Volume_Prev;
//Grafik Fiyat Oku : Son Bar Hacim
var GFO_Volume_Last = GFO_Volume[GFO_Volume.Count - 1];
colID++;
Sistem.SorguSutunGenislik[colID] = 100;
Sistem.SorguBaslik[colID] = "(GFO) Son Hacim";
Sistem.SorguOndalik[colID] = 0;
Sistem.SorguDeger[colID] = GFO_Volume_Last;
// GRAFİK VERİLERİ
//Grafik Verileri : Önceki Bar Tarihi
string GV_Date_Prev = Sistem.GrafikVerileri[Sistem.BarSayisi - 2].Date.ToString("dd/MM/yyyy HH:mm:ss.ff");
colID++;
Sistem.SorguSutunGenislik[colID] = 130;
Sistem.SorguBaslik[colID] = "(GV) Önceki Veri Tarih";
Sistem.SorguSutunTip[colID] = "YAZI";
Sistem.SorguDeger[colID] = GV_Date_Prev;
//Grafik Verileri : Son Bar Tarihi
string GV_Date_Last = Sistem.GrafikVerileri[Sistem.BarSayisi - 1].Date.ToString("dd/MM/yyyy HH:mm:ss.ff");
colID++;
Sistem.SorguSutunGenislik[colID] = 130;
Sistem.SorguBaslik[colID] = "(GV) Son Veri Tarih";
Sistem.SorguSutunTip[colID] = "YAZI";
Sistem.SorguDeger[colID] = GV_Date_Last;
//Grafik Verileri : Önceki Bar Kapanış
float GV_Close_Prev = Sistem.GrafikVerileri[Sistem.BarSayisi - 2].Close;
colID++;
Sistem.SorguSutunGenislik[colID] = 80;
Sistem.SorguBaslik[colID] = "(GV) Önceki Veri Kapanış";
Sistem.SorguOndalik[colID] = 2;
Sistem.SorguDeger[colID] = GV_Close_Prev;
//Grafik Verileri : Son Bar Kapanış
float GV_Close_Last = Sistem.GrafikVerileri[Sistem.BarSayisi - 1].Close;
colID++;
Sistem.SorguSutunGenislik[colID] = 80;
Sistem.SorguBaslik[colID] = "(GV) Son Veri Kapanış";
Sistem.SorguOndalik[colID] = 2;
Sistem.SorguDeger[colID] = GV_Close_Last;
//Grafik Verileri : Önceki Bar Kapanış
float GV_Vol_Prev = Sistem.GrafikVerileri[Sistem.BarSayisi - 2].Vol;
colID++;
Sistem.SorguSutunGenislik[colID] = 80;
Sistem.SorguBaslik[colID] = "(GV) Önceki Veri Hacim";
Sistem.SorguOndalik[colID] = 0;
Sistem.SorguDeger[colID] = GV_Vol_Prev;
//Grafik Verileri : Son Bar Kapanış
float GV_Vol_Last = Sistem.GrafikVerileri[Sistem.BarSayisi - 1].Vol;
colID++;
Sistem.SorguSutunGenislik[colID] = 80;
Sistem.SorguBaslik[colID] = "(GV) Son Veri Hacim";
Sistem.SorguOndalik[colID] = 0;
Sistem.SorguDeger[colID] = GV_Vol_Last;
Sistem.SorguAciklama = "Periyot: " + Periyot + " için değerler";
Sistem.SorguEkle();
}
catch (Exception Ex)
{
string errorline = "Message : " + Ex.Message + " Source : " + Ex.Source + " StackTrace : " + Ex.StackTrace;
Sistem.SorguAciklama = errorline;
Sistem.SorguEkle();
}
}
else
{
Sistem.SorguAciklama = "!!* Veri Alınamadı *!!";
Sistem.SorguEkle();
}
}
(Uygulama güzel. Çok emek var. :ok: Ama bir kaç eleştiri: :rules: üstelik WPF bile değil yani.., uygulamanın UI özellikleri umarım daha da geliştirilecek)
Özellikler diğer ayarlar da Günlük / Güniçi Barlar kaydedilsin tikli mi acaba. Sorgu ile alakalı mı emin değilim ama; grafik sağ klik te Okunacak bar sayısı ve Maksimum bar sayısı (30 dk için mesela 5dk verisinden aldığı için formüldeki parametrenin en az 6 katı olmalı)
*Sorgu ekranında son 5bin bar seçili parametreler de 830 üstüne çıkmanız durumunda daha yüksek değer girilmeli.
Güncellemeler Grafik bölümünden yapılmalı.
@inventor
var V = Sistem.GrafikVerileri;
var H = Sistem.GrafikFiyatOku(V, "Yuksek" ) ;
var L = Sistem.GrafikFiyatOku(V, "Dusuk" ) ;
var C = Sistem.GrafikFiyatOku(V, "Kapanis" ) ;
var EMA = Sistem.MA(C, "Exp", Periyot);
var TOMA = Sistem.TOMA(Periyot, Yuzde);
// vs vs
var BaslangicNo = 1000;
if (Sistem.BarSayisi > Kullan) BaslangicNo = Sistem.BarSayisi - Kullan;
for (int i = BaslangicNo ; i < Sistem.BarSayisi; i++)
{
/// sistemin stratejin yada indikatör hesaplamaların
}
Farklı periyodlara ait 2 sistemin sinyallerini birleştirip yeni bir sistem oluşturup repaint yapmadan kullanabilirmiyiz.
Eskilerde sayın anonimin yazdığı örnek kodu kullandım. 2 sisteminde sinyalleri önceki bara göre atandığı halde gerçege aldığımda sistem repaint yapıyor.
Elinde örnek kalıp olan var mı.
Teşekkürler. :ok:
Sorgu için bana son birkaç bardaki veri lazım.
Örneğin;
Arkası var.. her birine 98bin bar kullanarak hesaplama yapacak..PHP Code:
var Veriler = Sistem.GrafikVerileriniOku(Sistem.Sembol, Periyot);
var BarPIVOT = Sistem.GrafikFiyatOku(Veriler, "OHLC/4");
//Periyot 5 ise 98bin küsür bar verisi getiriyor
//Periyot 30 ise 17bin küsür bar verisi getiriyor vb.
//Bu şekilde 98bin bar için hesap yapacak..
var STO = Sistem.StochasticFast(5, 3);
var MACD = Sistem.MACD(12, 26);
List<float> MACD_100 = null;
List<float> RSI_100 = null;
List<float> STO_100 = null;
List<float> STR_100 = null;
List<float> WIR_100 = null;
List<float> CCI_100 = null;
List<float> CHM_100 = null;
List<float> MOM_100 = null;
List<float> DMN_100 = null;
List<float> DMR_100 = null;
List<float> FXS_100 = null;
List<float> ULT_100 = null;
List<float> RMI_100 = null;
List<float> IMI_100 = null;
List<float> AWS_100 = null;
List<float> QST_100 = null;
List<float> KAI_100 = null;
List<float> IFI_100 = null;
List<float> MFI_100 = null;
List<float> POP_100 = null;
List<float> RAV_100 = null;
List<float> TRX_100 = null;
Bir de bunların HHL, LLV değerlerini hesaplayacak..
Yani bir sorgu döngüsünde bütün bunları 98bin barlık verileri kulanarak hesaplamak yerine
Verileri 1000 elemanlık bir liste olarak oluşturdum.. VerilerinSonBarları 1000 elemanlık bir liste.PHP Code:
var Veriler_ÇOK_FAZLA_BAR_VAR = Sistem.GrafikVerileriniOku(Sistem.Sembol, Periyot);
var BarPIVOT_ÇOK_FAZLA_BAR_VAR = Sistem.GrafikFiyatOku(Veriler_ÇOK_FAZLA_BAR_VAR, "OHLC/4");
int VerilerdenSondanKaçBarAlınsın = 1000;
var VerilerinSonBarları =
Veriler_ÇOK_FAZLA_BAR_VAR
.GetRange(Veriler_ÇOK_FAZLA_BAR_VAR.Count - VerilerdenSondanKaçBarAlınsın, VerilerdenSondanKaçBarAlınsın);
List<float> BarPIVOT =
BarPIVOT_ÇOK_FAZLA_BAR_VAR
.GetRange(BarPIVOT_ÇOK_FAZLA_BAR_VAR.Count - VerilerdenSondanKaçBarAlınsın, VerilerdenSondanKaçBarAlınsın);
BarPIVOT listesi keza öyle..
20 küsür gösterge ve bunların HHLL hesapları + 20 küsür hareketli ortalama hesabında
98 bin barlık listeler değil de
1 bin barlık listeler kullanılacak.
var STO = Sistem.StochasticFast(VerilerinSonBarları, 5, 3);
var MACD = Sistem.MACD(BarPIVOT, 12, 26);
...
5 dakikalık barlarda hesaplama süresi neredeyse 1/100 oranında kısaldı.
most açık formülü bulamadım yazabilirmisiniz tşk...
bulundu...
Son beş dakikada kilitlendi.. veri akışı var, grafikler, barlar güncelleniyor fakat hiçbir şekilde; hiçbir penceresi; mouse clicklerine cevap vermiyor, ancak görev yöneticisinden çalışmasını durdurabildim. Bilgisayar da öyle eski bir şey değil, kuvvetli bir makina. Zarar ettirdi. Bu da başka bir çeşit tecrübe olsun.
c:\Users\RDX\AppData\Local\Temp\pzwdg25u.0.cs(41,1 0) : error CS1513: } bekleniyor
c:\Users\RDX\AppData\Local\Temp\pzwdg25u.0.cs(255, 1) : error CS1519: class, struct veya interface üyesi bildiriminde geçersiz 'return' belirteci
c:\Users\RDX\AppData\Local\Temp\pzwdg25u.0.cs(255, 14) : error CS1519: class, struct veya interface üyesi bildiriminde geçersiz ';' belirteci
c:\Users\RDX\AppData\Local\Temp\pzwdg25u.0.cs(257, 1) : error CS0116: Ad alanı, alanlar veya yöntemler gibi üyeleri doğrudan içeremez
c:\Users\RDX\AppData\Local\Temp\pzwdg25u.0.cs(263, 1) : error CS1022: Tür veya ad alanı tanımı ya da dosya sonu bekleniyor
c:\Users\RDX\AppData\Local\Temp\pzwdg25u.0.cs(264, 1) : error CS1022: Tür veya ad alanı tanımı ya da dosya sonu bekleniyor
ben tarattım bir sürü hata verdi.
Her Zaman Üstte özelliğine sahip pencereler iDeal'in küçük mesaj kutularının üzerinde kalıyor.
Örneğin;
Sembollerin olduğu fiyat penceresinde
Frk% kolonuna göre
periyodik artan ya da azalan sıralama yaptırmak istediğinizde
iDeal küçük bir input box açıyor, timer için saniye cinsinden değer girmenizi bekliyor
Grafiklerinizi ya da diğer formları her zaman üstte özeliği ile ikinci, üçüncü ekranlarda kullanıyorsanız iDealin mesaj kutusu, input box gibi kutuları bu her zaman üstte özelliğinde olan formların altında kalıyor.. ve mouse ile iDealin diğer açık hiçbir penceresine erişim olanağı kalmıyor, açılan inputboxa bile ulaşamıyorsunuz.
İDeal kullanıcı arabirimi( UI : user interface ) kötü. Geliştirilmesi ya da yukarıda anlatmaya çalıştığım durumlar için çözüm bulunması gerekiyor.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data;
using ideal;
using System.Diagnostics;
namespace WinFormsApp1
{
[DebuggerDisplay($"{{{nameof(GetDebuggerDisplay)}() ,nq}}")]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
void Sistem01(ideal.cxSistem Sistem)
{
var C = Sistem.GrafikFiyatSec("Kapanis");
var V = Sistem.GrafikFiyatSec("Hacim");
var Mov360 = Sistem.MA(C, "Exp", 360);
var Kol2 = Sistem.Liste(0);
var Mov60 = Sistem.MA(C, "Exp", 60);
var Mov180 = Sistem.MA(C, "Exp", 180);
var Mov270 = Sistem.MA(C, "Exp", 270);
var MovV = Sistem.MA(V, "Simple", 21);
var Mov5 = Sistem.MA(C, "Simple", 5);
var Risk = Sistem.Liste(0);
var Kazanc = Sistem.Liste(0);
var Kol6 = Sistem.Liste(0);
for (int i = 1; i < Sistem.BarSayisi; i++)
{
Kol2[i] = Mov360[i] - 0.01f;
Risk[i] = (C[i] - Mov360[i] * 100 / C[i]);
Kazanc[i] = (Mov360[i] - C[i]) * 100 / C[i];
Kol6[i] = MovV[i] * 0.01f * Mov5[i];
}
Sistem.SorguBaslik[0] = "Kapaniş";
Sistem.SorguBaslik[1] = "Stopploss";
Sistem.SorguBaslik[2] = "Hedef";
Sistem.SorguBaslik[3] = "Olası % R";
Sistem.SorguOndalik[3] = 2;
Sistem.SorguBaslik[4] = "Olası % K";
Sistem.SorguOndalik[4] = 2;
Sistem.SorguBaslik[5] = "Max Kaç TL";
var Son = Sistem.BarSayisi - 1;
if (Mov60[Son] > Mov360[Son] && Mov180[Son] > Mov270[Son] && Mov270[Son] > Mov360[Son] && C[Son] < Mov60[Son] && C[Son] >= Mov360[Son] && Risk[Son] > 0)
{
Sistem.SorguDeger[0] = C[Son];
Sistem.SorguDeger[1] = Kol2[Son];
Sistem.SorguDeger[2] = Mov60[Son];
Sistem.SorguDeger[3] = Risk[Son];
Sistem.SorguDeger[4] = Kazanc[Son];
Sistem.SorguDeger[5] = Kol6[Son];
Sistem.SorguAciklama = "Filtrem";
Sistem.SorguEkle();
}
}
private string GetDebuggerDisplay()
{
return ToString();
}
}
Merhaba Mehmet bey.
1. mesajınızda belirtildiği gibi "{" parantezlerden biri kapatılmamış.
İdeal lisansım olmadığı için test edemiyorum ama...
Visual studio aşağıdaki parantezi işaret ediyor:
Kodun gerisinde hata var mıdır? Bilmiyorum. Test etme şansım da yok.Kod:namespace WinFormsApp1
{
Görseli de şuraya koyayım:
https://i.ibb.co/MSRD7Xv/hata.png
Kolay gelsin.
:)İlginizden dolayı teşekkür ederim.