Elliot Dalga Teorisine dayalı ticaret stratejisi - sayfa 76

 
Önemli bir nokta - nesneler oluşturulmuyor veya çizilmiyor mu? İşlenmemiş nesnelerin özelliklerini okumak mümkün müdür?
 
Ve işte yeni bir sürpriz - okları çizmek çalışma süresini değiştirmez, ilginçtir.
Zaman - 4 dakika ve biraz, aslında değişmedi.

2006.07.08 19:35:45 GeçmişKanallar EURUSD,M30: başlatılmamış
2006.07.08 19:35:45 GeçmişKanallar EURUSD,M30: Deinit()'i yürütün
2006.07.08 19:35:45 HistoryChannells EURUSD,M30: Optimize edilmiş algoritma süresi 261281 ms
2006.07.08 19:31:24 GeçmişKanallar EURUSD,M30: başlatıldı
2006.07.08 19:31:19 HistoryChannells EURUSD,M30: başarıyla yüklendi
2006.07.08 19:31:11 'Geçmiş Kanalları' Derleme
 
Önemli bir nokta - nesneler oluşturulmuyor veya çizilmiyor mu? İşlenmemiş nesnelerin özelliklerini okumak mümkün müdür?


Nesneler oluşturulur - özel olarak kontrol edilir, "görünmez" okun özelliğini bile görebilirsiniz. İşte kod:
 centerLR=En İyi Kanallar[0][2]*(lastBar-1)+En İyiKanallar[0][3];

      ObjectCreate("up"+UpArrowCounter,OBJ_ARROW,0,Time[lastBar-1],centerLR+BestChannels[0][5]);
      ObjectSet("yukarı"+YukarıArrowCounter,OBJPROP_ARROWCODE,158);
      ObjectSet("yukarı"+UpArrowCounter,OBJPROP_COLOR,Kırmızı);
      ObjectCreate("down"+DownArrowCounter,OBJ_ARROW,0,Time[lastBar-1],centerLR-BestChannels[0][5]);
      ObjectSet("aşağı"+Aşağı OkSayacı,OBJPROP_ARROWCODE,158);
      ObjectSet("aşağı"+Aşağı OkSayacı,OBJPROP_COLOR,Kırmızı);
      UpArrowCounter++;
      DownArrowCounter++; 



ve işte çizim:

 
Hmm... bu benim hatam, yarın kontrol etmem gerekecek. Bugünlük yeter.
 
Evet, bu kodu da kontrol etmeyi başardım
 for (i=0; i<50000;i++) {
    nesne_adı = ben;
    ObjectCreate(obj_name,OBJ_TREND,0,Time[0],i,Time[1],i);  
    ObjectSet(obj_name, OBJPROP_STYLE, DRAW_NONE);
    j = ObjectGet(nesne_adı, OBJPROP_PRICE1);
    yazdır(j);
  } 
   
  for (i=0; i<50000;i++) {
    nesne_adı = ben;
    ObjectDelete(obj_name);  
  } 
 


Resimlerin adları yalnızca Latince olmalı ve tercihen *.png biçiminde olmalıdır (bu forumdaki bağlantıda gif gösterilmez)


Bunların hepsi yapıldı, editör penceresinde normal şekilde görüntülendiğini söylüyorum ve ekle veya kaydet düğmesine basar basmaz, mesajı eklememe veya değiştirmeme bağlı olarak kayboluyor ve hatta yazdıklarım bile kayboluyor :(
 
Tamam, diğer tarafa gittim (sonunda beni oradan 30 saniyeliğine göndermeye başladılar, ancak 10 dakika beklemek yardımcı olmuyor :() ama ah şey, şu anda Yahudilere davrandığımı göstermek istedim, ama muhtemelen alakalı değil
 
Ve işte yeni bir sürpriz - okları çizmek çalışma süresini değiştirmez, ilginçtir.

Burada tartışılan algoritmayı başlatma yöntemine bağlı olarak böyle bir etkim var, yürütme süresi 0 veya 16 ms'dir. Bazı durumlarda algoritmanın sürekli olarak yürütüldüğünü ve bazı durumlarda kesintiye uğradığını ve terminalin tam döngüsünün işlendiğini (sayılar sürekli olarak tekrarlandığından) varsayıyorum. Analoji ile - hesaplamaların bitiminden sonra çizim yapılamaz mı?
 
Vladislav 02.06.06 11:26
Pratik uygulamaya veya bunun altında yatan yöntemlere gelince, her şey oldukça basittir: ikinci dereceden fonksiyonda en iyi şekilde seçmeniz gereken katsayılar vardır - regresyon doğrusal veya daha doğrusu yapımı için bir tahmin verir. Ve buna göre, bu katsayının Taylor açılımında (ikinci dereceden bir formun oluşturulması) ne ölçüde (genlik aralığı) kullanılabileceğini tahmin edebileceksiniz. Ayrıca, k-tov'un geri kalanı hakkında kendiniz düşünün. Minimum potansiyel enerjiyi bulmak için fiyat yörüngesini bilmeniz gerekmez, ancak bilmek daha önemli olan potansiyel gradyandır;). Yani, sıfır işaretinin dinamik durumu - bir şeyi sıfır potansiyel olarak düşünmelisiniz. Ve tüm bunlar değerlendirmek için yeterlidir - doğrudan farklılaşma gerekli değildir.
Geometrik görüntüleri kullanarak mecazi olarak "parmaklarda" ise:
sadece yüzeyde (bazı engebeli arazilerde olduğu gibi) bir topun yuvarlandığını hayal edin (bu fiyattır). Topun yörüngesinin çekim bölgelerini belirlemek için, üretiminin inceliklerini bilmek gerekli değildir. Bu "engebeli arazi"nin özelliklerini bilmek çok daha faydalıdır.

Vladislav 14.06.06 21:06
Oldukça doğru - Bunun hakkında yazdım, minimum potansiyel enerji fonksiyonelinin kanalları seçme kriterlerinden biri. Ve bu, fiyat alanının potansiyelinin bir özelliğidir ve güven aralığına uyan tüm yörüngelerin belirli bir olasılık için eşdeğer olarak kabul edilmesi gerektiği gerçeğinden dolayı (tekrar tekrar ediyorum) yörüngenin kendisini aramıyorum. Yani, projeksiyonların inşası önce örneklerin seçimine, ardından lineer cebire indirgenir.

33. sayfada zaten düşüncelerimi yazdığım gündeme getirilen konunun devamında, zaten defalarca dile getirilen koşulları karşılayan bir dizi ardışık kanalda minimum potansiyel enerjiye sahip bir kanal bulma konusunda başka bir fikrim vardı. Doğrusal bir regresyon kanalı oluşturarak elimizde ne var? Fiyatın istediğiniz gibi hareket edebileceği, sınırları ile sınırlı bir alanımız var. Karşılanan tek koşul, bu kanaldaki fiyatın sınırlarını aşmaması koşuluydu. Ayrıca Vladislav , güven aralığına uyan tüm yörüngelerin belirli bir olasılık için eşdeğer olarak kabul edilmesi gerektiğini söyledi . Ardından, hareketi sırasında fiyatın ikinci dereceden bir fonksiyona göre hareket edebileceğini varsayıyoruz - yani, belirtilen ifadeyi ihlal etmiyoruz. Ayrıca, bu ifade fiyat alanının potansiyel olduğu varsayımından kaynaklanmaktadır. Yani, herhangi bir an için (ve herhangi bir örnek için), yaklaşık bir parabol oluşturabilir ve bu örneğe dayanarak, fiyatın bu örnekte yürüdüğü böyle bir yörüngeye sahip olduğunu söyleyebiliriz. Göreceli olarak konuşursak, bu böyle bir parabolik eğimli oluk ve yüzeyinde birden fazla homojen olmayanlığa sahip bir top. Şimdi potansiyel sıfırın dinamik durumu için ne alabiliriz? Top yine de kanalın başlangıcından sonuna kadar aşağı yuvarlandığından, koşullu eğimli parabolik oluğumuz boyunca hareket ettiğinden, bu oluk için minimum potansiyel enerji, elbette, şu anda bu oluğun yörüngesinde olacaktır ve, buna göre, o andaki zamanda top (fiyat) üzerinde, topu parabolik oluğun yörüngesine doğru hareket ettirme eğiliminde olan bir kuvvet (potansiyel gradyan) etki edecektir. Şimdi bu eğimin büyüklüğü ve yönü nasıl bulunur? Çok basit - en küçük kareler yöntemini kullanarak bir parabol buluyoruz ve sonra mevcut fiyat ile bu parabol arasındaki farkı (potansiyelin minimumu) buluyoruz. Tabii ki, bu fark hem olumlu hem de olumsuz olabilir. Ayrıca, seçtiğimiz lineer regresyon kanalının tahmin için en uygun “doğru” olması gerektiğinden, örneklemin zaten bilinen yakınsama koşullarına (RMS<RMS2/3) ek olarak bazı özelliklere sahip olması gerekir. bu yakınsamayı doğrulayan diğer koşullar. Vladislav'ın potansiyel enerji fonksiyonunun minimumundan bahsetmesi beni bunun için potansiyel gradyanların toplamının, topun üzerinde olduğu bu çok parabolik yaklaşık olukları inşa ettiğimiz kanal için mümkün olduğunca küçük olması gerektiğini düşünmeye sevk etti. rulolar ve çapraz arazimizin en iyi açıklaması olan. Doğal olarak hemen bu varsayımı pratikte test etmeye çalıştım ve sonuçları bu linkte paylaştım https://c.mql5.com/mql4/forum/2006/07/min_poten_energy.zip

Bu tablolarda ne görüyoruz? Şu anda Expert Advisor'da kullandığım bir seride minimum standart sapma yöntemi kullanılarak oluşturulmuş bir lineer regresyon kanalı görüyoruz. Ayrı bir grafikte, mevcut örnek için oluşturulan parabol çizgisine göre top potansiyel gradyanlarının toplamının cebirsel (yani, işaretlerini (+/-) dikkate alarak gradyanları toplarım) bir grafiği çizilir. Anlama kolaylığı için, Hurst katsayısını belirlemek için kullanılan yaklaşımın burada kesinlikle aynı yaklaşımın kullanıldığını söyleyebilirim, aradaki fark, yaklaşık doğrusal regresyon kanalı yerine bir parabol (ikinci dereceden bir işlev) alınır ve parabolün kendisi potansiyel gradyanın arandığı hesaplanmış çubuk da dahil olmak üzere mevcut numunenin tamamı üzerine inşa edilmiştir. Her ihtimale karşı, Hurst katsayısını aramak için mevcut çubuğu içermeyen bir örnek alındığını hatırlatmama izin verin.
Mavi dikey çizgi, tam da bu çubuktan başlayan kanal için potansiyel gradyanların cebirsel toplamı için yerel minimumu gösterir. EURUSD ve USDCHF çizelgelerine yakından bakarsanız, yerel en düşüklerin (+/-1 bar) fiyatın yerel en yüksek/en düşük seviyeleriyle tam olarak örtüştüğünü görebilirsiniz. 1 barlık hatayı numune hazırlamanın özelliklerine bağlıyorum. Bar değerlerini (O+H+L+C)/4 örnek olarak seçiyorum. Muhtemelen, bu durumda, kanalı minimum potansiyel enerji ile belirlemedeki hatayı kesin olarak ortadan kaldıran, bir şekilde Yüksek veya Düşük'ü seçici olarak seçmek gerekir. Ardından dizideki kanallar, Vladislav'ın daha önce USDCHF için sağladığı resimde gösterilen kanallarla tam olarak eşleşecektir. Peki, bu varsayımı Uzman Danışmanımda uygulamaya çalışacağım. Vladislav'ın kullandığı ve paylaştığı kanal seçim yöntemine ciddi anlamda yaklaştırdığını düşünüyorum.

Not: Gradyanların cebirsel toplamının modülü grafikte görüntülenir (açıklık için). Mevcut çubuktaki potansiyel gradyanı hesaplamak için, kanalın başlangıcından mevcut çubuğa seçim için hesaplanan çubuğun kendisi de dahil olmak üzere bir parabol oluşturuyoruz. Yani, 100 barlık bir örneğiniz varsa, o zaman 97 parabol hesaplamanız gerekecektir, çünkü en küçük kareler yöntemini kullanarak bir parabol oluşturmak için en az 4 okumanız gerekir (bunu bugün deneysel olarak buldum;o) ). Buna göre, ilk 3 çubuktaki potansiyel gradyanı sıfıra eşit olarak kabul ediyorum. Rosh , parabolün hesaplanması lineer regresyon kanalının hesaplanmasından birkaç kat daha fazla zaman aldığından, burada hesaplama algoritmalarını optimize etmekte özgür olacağınızı düşünüyorum; o))).
 
А вот и новый сюрприз - рисование стрелочек не меняет времени прогона, это интересно.

Burada tartışılan algoritmayı başlatma yöntemine bağlı olarak böyle bir etkim var, yürütme süresi 0 veya 16 ms'dir. Bazı durumlarda algoritmanın sürekli olarak yürütüldüğünü ve bazı durumlarda kesintiye uğradığını ve terminalin tam döngüsünün işlendiğini (sayılar sürekli olarak tekrarlandığından) varsayıyorum. Analoji ile - hesaplamaların bitiminden sonra çizim yapılamaz mı?



Bu bağlantıda - "MQL4, MQL2, EasyLanguage, Wealth-Lab 3.0 ve VC++: hız karşılaştırması" - Renat yazdı


Renat 14.01.05 14:18

Sadece GetTickCount()'un pek yeterli olmayan davranışıyla defalarca karşılaştım; Her ne kadar birçok ölçümün sonuçları kararlı +/- bazı küçük delta olsa da, bu, testlerin doğruluğunu onaylar.


Evet, GetTickCount()'un doğruluğu 10 ms'den 16 ms'ye sıçrar ve küçük periyotları ölçemez, ancak bizim durumumuzda kullanımı haklıdır. Hele hele hemen her koddan ulaşmak bu kadar kolayken.
Neden: