Merhaba , ideal'de Volume Weighted Average Price (VWAP) var mi?
moving average 'da volume adjusted secenegini 1 periyot ile sectigimizde ayni isi gorur mu?
teşekkurler
Printable View
Merhaba , ideal'de Volume Weighted Average Price (VWAP) var mi?
moving average 'da volume adjusted secenegini 1 periyot ile sectigimizde ayni isi gorur mu?
teşekkurler
Eski forumda sayın Tiberius'un bir gönderisi vardı, gönderiyi aşağıya kopyaladım, ama link silinmiş. Bilgisi olan varmı, eski barlar için hesaplama yaptırmamayı nasıl sağlarız.
@Tiberius
Originally Posted by Tiberius
ipucu - ileri teknik - süre kısaltma
herkes için gerekmeyebilir
Arkadaşlar ben fazla veri tutup (50K) ağır hesaplamalar yaptırıyorum. Biz sistemde ve robotta hesaplama yaptıran fonksiyon çağırdığımızda tüm data için yapılıyor. Özellikle robotta ve hatta bazen sistemde tüm veriyi hesaplamaya gerek yok. Robotta son duruma göre emir üretiyoruz, eski barlar için hesaplama yaptırmaya gerek yok. kendim için aşağıdaki kodu yazdım, size de faydası olabilir. dramatik şekilde süre kısaltabilirsiniz.
http://i.hizliresim.com/4Z9WEY.png
var dsayi = 250;
for (int i = Sistem.BarSayisi-dsayi; i < Sistem.BarSayisi; i++)
{
}
sistemin sadece son 250 bar kontrolü için yeterli
Robot için 50,000 barın hepsini kontrol etmeye gerek yok gibi düşünülebilir.
Grafikten bakıyorsanız 50,000 bar bakıp gerilerde ne olmuş
hem sistem getirisi hem grafik analiz için bakılabilir.
1 den 250 ye döngü yaparsanız her zaman 1 nolu en eski data ile 250 nolu data arasında döner durursunuz hiç bir zaman en son işlem gören güncel datayı okuyamazsınız
toplam bar sayısı 50,000 diyelim
dsayı = 250
50,000 - 250 den 50,000 e kadar hep en güncel 250 bar için tarama yapar. (250 sayısı kullanılan inditatöre göre azaltılıp çoğaltılabilir)
{
döngü içine al-sat-flat şartlarınızı yazmanız yeterli.
}
Hareketli ortalamaya uzaklığı hesaplattığım aşağıdaki gibi bir kodum var, sadece son 250 bar hesaplatmak için ne yapabilirim. Al, sat , flat durumu yok, bu koda göre tablo oluşturuyorum.
var Sembol2 = "IMKBX'XU030";
var Veriler2 = Sistem.GrafikVerileriniOku(Sembol2, "1");
var CX = Sistem.GrafikFiyatOku(Veriler2, "Kapanis");
var MA1X = Sistem.MA(CX, "Simple", 15);
var farkx = Sistem.Liste(0);
farkx = ((CX[CX.Count-1]-MA1X[MA1X.Count-1])*100)/MA1X[MA1X.Count-1];
robot çalıştırırken grafikte okunacak bar sayısını 1000 gibi ufak bir rakama indirebilirsiniz
bende şu an için 500,000 miş.
http://666kb.com/i/e3pxvj08qf2h3gpt8.png
birde şöyle bişey var tabloya robot tüm hesaplamaları yapıyor ama o kadar hızlıki ekrana yazmaya yetiştiremiyor
o yüzden bilgisayarı zorluyor
robotun içine her 1 saniyede yada 2 saniyede bir hesapla yaz kıstası koyabilirsiniz
çok fazla hızlandığını hissedecek/gözlemleyeceksiniz.
if (Sistem.ZamanKontrolSaniye("S30_V30") >= 2 )
{ // ZamanKontrolSaniye
Sistem.ZamanKontrolGuncelle("S30_V30");
///sisteminiz robotunuz
}
mümkünse çok gerekli değilse;
Sistem.TabloTemizle(VDLSpot);
kısmını da kullanmayabilirsiniz.
Teşekkür ederim hocam.
Okunacak bar sayısı en düşük 3000 kabul ediyor. Biraz etkiliyor hızı.
Ama bilgisayarda tutulan veri sayısı düşükse robot inanılmaz hızlı çalışıyor.
Fakat bunu düşürürsem verilerim gider, benim son XX barda hesaplama yaptırmayı çözmem lazım.