MQL5 Kullanan Hisse Osilatörü - sayfa 6

 
joo :

Bir dosyaya mümkün olduğunca nadiren yazmak daha iyidir, bu nedenle bütün bir dizi olarak yazmak daha iyidir. Değerleri dakikada bir kereden fazla ölçün, aksi takdirde grafikte görüntüleme ile ilgili sorunlar olacaktır (ve makul olmayan bir şekilde kaynak yoğundur). Yani koşunun sonunda. Ancak bu seçenek de mümkündür:

Algoritma şöyle görünür:

1) Test cihazında Expert Advisor'ı başlattı.

2) Faizin değerini ölçtük.

3) Bu değeri dosyaya yazın .

4) Ayrı bir dosyaya doğru yazıldı, yani yeni bir değer yazıldı

5) Çıkış koşulu, bayraklı dosyadaki yanlış bayrak olan sonsuz bir döngü başlattı.

6) Ayrı bir çizelgede script bayraklı dosyayı okur, eğer yeni bir değer belirirse daha sonra çizelgeye risk çizer, dosyaya false yazar.

Test cihazındaki görsel test modu bu şekilde görünecektir.

Biraz bekleyin rekabet biter, belki daha şık ve güzel çözümler sunulur.

Joo, Bekle, eğer herkes değerlerle ilgileniyorsa, ilginin başka ne değeri var ki? :)

Bence de:

1. Uzman Danışmanın OnTick'inde, hesap durumlarının bir program dizisini tek tek oluşturur,

2. Testin sonunda, bu program dizisinin tamamını bir dosyaya yazıyoruz (daha iyisi, her parametre ayrı bir dosyaya olsun),

3. ardından Göstergenin OnInit'inde belirtilen tek boyutlu diziyi çıkarın

4. ve OnCalculated'da kene ile gösterge dizisine kopyalayın.

Tek sorun, bir dizi yazmak bile bir nedenden dolayı hala bir sorundur (yukarıya bakın)

 
DV2010 :

Bekle, tüm değerlerle ilgileniyorsam, ilginin başka değeri ne olur? :)

Evet, en azından her şey.

DV2010 :

Bence de -

1. Uzman Danışmanın OnTick'inde, hesap durumlarının bir program dizisini tek tek oluşturur,

2. Testin sonunda, bu program dizisinin tamamını bir dosyaya yazıyoruz (daha iyisi, her parametre ayrı bir dosyaya olsun),

Öyle olabilir.

DV2010 :

3. ardından Göstergenin OnInit'inde belirtilen tek boyutlu diziyi çıkarın

O zaman neden onit? Sadece bir kez mi ihtiyacınız var? Testi neredeyse gerçek zamanlı olarak takip etmeniz gerektiğini söylediniz.

DV2010 :

4. ve OnCalculated'da kene ile gösterge dizisine kopyalayın.

Tek sorun, bir dizi yazmak bile bir nedenden dolayı hala bir sorundur (yukarıya bakın)

Sorun, kene verilerini grafikte görüntüleyememeniz olacaktır. Tabii ki, keneler toplamazsanız, o zaman ....... Kısacası, sizi zaten uyardım - verileri dakikada bir defadan fazla kaydetmeyin. Ancak, örneğin bir ticaret aracına başvurmadan analiz etmek istiyorsanız, Excel'e bir dosya da yükleyebilirsiniz.

 

joo , hayır! :)

Şimdilik ihtiyacım olan tek şey, test cihazının işini yapması ve benim için tarihte ihtiyacım olan puanların eğri osilatörlerini elde etmem!

Sizce, Uzman Danışmanım, kodu yukarıda verilen ve aşağıda bağlantısı verilen verileri kaydetmeyi neden reddediyor:

Dosyalar:
 
DV2010 :

Roş

, Sebebinin tam olarak ne olduğunu anlayamıyorum, ancak göstergelerimin aksine, sizinkiyle başlattığınızda bir mesaj görüntüleniyor:

Kodunuza dayanarak, şimdi tüm Özkaynak değerlerini bir dosyaya kene ile yazması gereken benzer en basit Uzman Danışman yaptım (kodda, yazılan sıfır bayt sayısı da dahil olmak üzere yalnızca herhangi birinin çıktısını değiştirdim, yapılan değişkenler globaldir ve dosyayı açma ve yazma işlemini OnInit ve OnTick'e taşır), ancak yazma hatası olmamasına ve dosyanın oluşturulmasına rağmen, girişler ve dosya boştur.

Hiçbir şeyi karıştırmadı mı?

 FileClose ( filename );
 
Rosh :

Hiçbir şeyi karıştırmadı mı?

Ben karıştırdım ama düzeltilmiş olanla ( FileClose (tutamak); ) arasındaki fark pek hissedilmedi :)

Hala yazmıyor! :) Aynı zamanda partizan gibi sessizdir (0 bayt yazıldığı "açıklama" dışında).

 
DV2010 :

Ben karıştırdım ama düzeltilmiş olanla ( FileClose (tutamak); ) arasındaki fark pek hissedilmedi :)

Hala yazmıyor! :) Aynı zamanda partizan gibi sessizdir (0 bayt yazıldığı "açıklama" dışında).

Orada ne yapıyorsun bilmiyorum. İşte işe yarayan bir seçenek

 //+------------------------------------------------------------------+
//|                                          Demo_File_Common_EA.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link       "http://www.mql5.com"
#property version   "1.00"
//--- input parameters
input string    filename= "equity.txt" ;
int handle;
string common_folder;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   common_folder= TerminalInfoString ( TERMINAL_COMMONDATA_PATH );
//---
   handle= FileOpen (filename, FILE_WRITE | FILE_READ | FILE_COMMON );
//---
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   FileClose (handle);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   if (handle!= INVALID_HANDLE )
     {
       FileSeek (handle, 0 , SEEK_END );
       uint written= FileWrite (handle, TimeToString ( TimeCurrent ()), AccountInfoDouble ( ACCOUNT_EQUITY ));
       if (written> 0 )
        {
         //PrintFormat("Записано %d байт в общую папку всех терминалов - %s",written,common_folder);
        }
     }
   else
     {
       Print ( "Не удалось открыть на запись файл " ,filename, ".  Ошибка " , GetLastError ());
     }

  }
//+------------------------------------------------------------------+
 
Rosh :

Orada ne yapıyorsun bilmiyorum. İşte işe yarayan bir seçenek

Süper! Bu nedenle, bir dosyaya yazmak için FileWrite'a ek olarak, FileSeek aracılığıyla bir işaretçi ayarlamak da gereklidir.
Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
Файловые операции / FileWrite - Документация по MQL5
 

... Konuyla ilgili zaten dün gündeme getirildi.

OnTick'e ve OnCalculated'a eklendi:

 Print ( "ObjectsTotal =" , ObjectsTotal ( ChartID ()));

ancak test tamamlandıktan sonra, açılış ve kapanış konumlarıyla ilişkili nesnelerin varlığına rağmen (Terminaldeki ok ve çizgilerin parametreleri yol boyunca görünür: Grafikler>Nesneler>Nesnelerin listesi), döndürülen değer nedense 0'dır. .

Bunun neden olduğunu kim önerebilir?

Test eden kişi, kendisi tarafından otomatik olarak oluşturulan nesneleri gerçekten görmüyor mu?

 
DV2010 :

Bunun neden olduğunu kim önerebilir?

Test eden kişi, kendisi tarafından otomatik olarak oluşturulan nesneleri gerçekten görmüyor mu?

Test sırasında oluşturulan grafik nesnelerin, test tamamlandıktan sonra açılan grafikte bulunan nesnelerle hiçbir ilgisi yoktur. Yani test edilen Expert Advisor'dan Expert Advisor'ın testi tamamlandıktan sonra ortaya çıkacak olan giriş/çıkış oklarına ulaşmanın bir yolu yoktur.
 
Rosh :
Test sırasında oluşturulan grafik nesnelerin, test tamamlandıktan sonra açılan grafikte bulunan nesnelerle hiçbir ilgisi yoktur. Yani test edilen Expert Advisor'dan Expert Advisor test edildikten sonra ortaya çıkacak giriş/çıkış oklarına ulaşmanın bir yolu yoktur.

İşte tam da bundan korkuyordum!

Pekala, o zaman bu normal nesnelerin üzerine kendiminkini çizmem gerekecek, ancak tek ihtiyacım olan, ilgili pozisyonların sonucunun (kar veya zarar) işaretine bağlı olarak çizgilerin rengini değiştirmek, çünkü noktadan itibaren Karlı ve kaybeden esnaf dağılımının en hızlı analizinin görünümü, sonucun rengi yönün renginden çok daha önemlidir. Daha da önemlisi - sadece grafikte yukarı veya aşağı yön bu şekilde görülebildiği için (hem çizginin eğiminden hem de okların renginden), bir işlemin kaybını veya karlılığını anlamak için standart yaklaşımla, her seferinde pozisyon türünü piyasa hareketinin yönü ile karşılaştırmak gerekir).

Ve test cihazında sadece birkaç pozisyon olması iyidir. Yüzlerce veya binlerce ne olacak? Standart yaklaşımla, bu durumda kaybeden ve karlı pozisyonların dağılımını görmek gerçekçi olmazken, kaybeden işlemler kırmızı çizgilerle ve karlı işlemler mavi olarak gösteriliyorsa, dağılım büyük olasılıkla en küçükte bile görülebilirdi. ölçek.

Bu neden önemlidir?.. Çünkü bir ticaret sistemi farklı zaman dilimlerinde farklı davranabilir ve en zayıf taraflarını belirlemek ve bu anlarda çalışmak için, bu serilerin fiyat dinamikleri hakkında bir fikriniz olması gerekir. esnaf kaybetme ilişkilidir.

Tüccarlardan gelen birçok talep özel niteliktedir ve hem artıları hem de eksileri vardır, yani. "tat ve renk" kategorisinden MetaTrader arayüzü düzeyinde işlem satırlarının türünü özelleştirme yeteneği, bana öyle geliyor ki, birçok tüccar için tarih analizini çok daha rahat hale getirirken, bir programlama noktasından Görünüm, bunu yapmanın kolay olduğunu düşünüyorum ve hiçbir dezavantajı yok. Başka bir deyişle, pozisyon türüne göre geleneksel kayıt seçeneğine, işlemlerin sonucuna dayalı bir kayıt seçeneğine ihtiyacımız var. O halde bu öneriyi forum üyeleri arasında bir oya ekleyebilir veya en azından bir oylamaya sunabilir miyiz?

İki uygulama vardır:

1. OnTcik uzmanlarıyla nesnelerin çizimi için bir bağlantı yapın ki bu nesneler programlı olarak değiştirilebilsin.

2. Pencere arayüzü düzeyinde bir ayar ekleyin.

Hesap durumu osilatörleri bu sorunu kısmen çözecektir, ancak yalnızca kısmen, çünkü işlemlerin etkinliğinin en uygun temsili, fiyat dinamiklerine en yakın görsel temsilidir.

Genel olarak konuşursak, bence, modern beşinci versiyonun en zayıf noktası, test edici ve işlemlerin etkinliğinin görselleştirilmesidir. Şimdiye kadar, burada yalnızca önceki sürümlerden bir Grafik ve Sonuçlar biçiminde bir mirasa sahibiz, ancak her ikisi de yalnızca bir bütün olarak Uzman Danışmanın etkinliğini yargılamamıza izin veriyor ve bu izlenim bile yanıltıcı olabilir (ve nasıl Birçok kez, Expert Advisor'ın genel Hisse Senedi tablosunun - istikrarlı bir şekilde yükseldiği, daha yakından yapılan bir çalışma ise büyük göreceli düşüşleri ve diğer "sürprizleri" ortaya çıkarmıştır.