Hatalar, hatalar, sorular - sayfa 270

 
Rosh :

Bu göstergeyi çalıştırın ve her şeyi kendiniz göreceksiniz:

İçinde

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])

open[] da bir zaman serisi değil mi?

Hiçbir şey anlamıyorum, lütfen bir zaman serisi örneği verin.

 
Voodoo_King :

375 inşa et. kosachishche sadece korkunç, bunun sonucunda zaten oldukça özel para kaybettim ...

EA parametreleri, terminali kapattıktan/açtıktan sonra ayarlananlara geri yüklenmez.

daha doğrusu, bazı parçalar kurtarılabilir (örneğin, 6'dan 3'ü), geri kalanı varsayılan ayarlara sıfırlanır. Temel olarak, kendi hayatınız.


381 oluşturun. HİÇBİR ŞEY DEĞİŞMEDİ!!!

terminal her yeniden başlatıldığında, uzmanlar farklı parametrelerle (ne olursa olsun) başlatılır.

Uzman parametrelerinin yanlış başlatılması

 
AlexSTAL :

Bu fonksiyon yönü kontrol eder, tersine çevirmez.

1) Başlatma olmadan

2) Başlatma ile

3) Yukarıdaki kod, yalnızca ArrayGetAsSeries dizisinin indeksleme yönünü alma işleviyle

Servis masasında, fonksiyonun adıyla bir hata yaptım, sadece


Evet, bir derleyici hatası olduğu ortaya çıktı. Mesaj için teşekkürler. Düzeltme bir sonraki derlemede olacak.
 
BoraBo :

İçinde

open[] da bir zaman serisi değil mi?

Hiçbir şey anlamıyorum, lütfen bir zaman serisi örneği verin.

Peki, açık TC değil, ne olmuş yani? Bir zaman serisinde Set aracılığıyla kurun ve TS olacaktır. Terminali ilk kez mi çalıştırıyorsunuz? Bu haber sana ne? Benim düşünceme göre, az önce birisi programlarınızda nasıl çalışacağınıza bir şekilde kendiniz karar vermeniz gerektiğini yazdı - TS ile veya sadece dizilerle.
 
joo :


Bu nedenle, OnCalculate() içinde şunu yapıyorum:

ArrayGetAsSeries'in (düşük) dönüşünün gerçekleşmesine yardımcı olabilir misiniz?

 
BoraBo :

ArrayGetAsSeries(düşük) dönüşünün gerçekleşmesine yardımcı olabilir misiniz?

Evet zaten yeter :)) ihtiyacınız kadar kurun ve merhaba. Ne kontrol edilir. :))
 
BoraBo :

İçinde

open[] da bir zaman serisi değil mi?

Hiçbir şey anlamıyorum, lütfen bir zaman serisi örneği verin.

open[] ve OnCalculate'deki diğer tüm diziler zaman serileridir. Ve en başta, MQL5 dili yazıldığında, ArrayGetAsSeries() onlar için true döndü ve onlar için indeksleme tıpkı bir zaman serisi için gibiydi - yani geriye doğru.

Ancak daha sonra gösterge arabelleklerinin hesaplamalarını MQL4 tarzında yazmanın çok uygunsuz ve doğal olmadığı ortaya çıktı ve tek bir çıkış yolu vardı - bu zaman serilerinin indekslenmesini her seferinde kullanımlarını kolaylaştırmak için tersine çevirmek. Bunun gibi özel göstergeler yazmaya başladık:

 int OnCalculate ( const int rates_total,       // размер входных таймсерий
                 const int prev_calculated,   // обработано баров на предыдущем вызове
                 const datetime & time[],     // Time
                 const double & open[],       // Open
                 const double & high[],       // High
                 const double & low[],         // Low
                 const double & close[],       // Close
                 const long & tick_volume[],   // Tick Volume
                 const long & volume[],       // Real Volume
                 const int & spread[]         // Spread)
{
//---- переворачиваем все таймсерии, чтобы ими было удобно пользоваться, как обычными массивами
   ArraySetAsSeries (open,false);
   ArraySetAsSeries (high,false);
   ArraySetAsSeries (low,false);
   ArraySetAsSeries (close,false);
   ArraySetAsSeries (time,false);
   ArraySetAsSeries (tick_volume,false);
   ArraySetAsSeries (volume,false);
   ArraySetAsSeries (spread,false);
   ArraySetAsSeries (open,false);
.... остальной код
}

Ama her seferinde böyle bir ayak örtüsü yazıp çevirmenin de Buz olmadığı ortaya çıktı. Bu nedenle bu zaman serilerinin normal diziler gibi indeksleme ile aktarılmasına karar verilmiştir. Bir zaman serisinin indekslemesi bir zaman serisi gibi olmadığında böyle bir paradoks böyle ortaya çıktı. Bu nedenle yardım, indeksleme sırasının kontrol edilmesi ve gerekirse gerektiği gibi ayarlanması gerektiğini söylüyor.

 
BoraBo :

ArrayGetAsSeries(düşük) dönüşünün gerçekleşmesine yardımcı olabilir misiniz?

Sadece bir derleyici hatası nedeniyle true değerini döndürür, değeri parametre olarak yanlış görüntülenir. Bu yolu kontrol edin:

 #property script_show_inputs
input bool isTimeSeria=true;


double Ups[];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {

//--- установим для массивов признак таймсерии
   Print ( "Установим для массивов признак таймсерии как " ,isTimeSeria);
   ArraySetAsSeries (Ups,isTimeSeria);

//--- Проверим таймсерии
   if ( ArrayGetAsSeries (Ups))
     {
       Print ( "1:  ArrayGetAsSeries(Ups)=true" );
       Print ( "2:  ArrayGetAsSeries(Ups)=" , ArrayGetAsSeries (Ups) );
     }
   else
     {
       Print ( "ArrayGetAsSeries(Ups)=true!!!" );
     }
  }
//+------------------------------------------------------------------+


Sonuç:


 
Rosh :

Sadece bir derleyici hatası nedeniyle true değerini döndürür, değeri parametre olarak yanlış görüntülenir. Şu şekilde kontrol edin:


Sonuç:


Teşekkürler, anladım.

if() koşulundaki ArrayIsSeries() ve ArrayGetAsSeries() açıklandığı gibi çalışır, ancak Print() her zaman false yazdırır.


 

geliştiriciler

1. lütfen geçmiş test cihazına yüklemeyi kontrol edin (test ilk kez başlar).

"Geçen ay" aralığı ile H1'deki standart MACD Örneği'ni kullanarak EURUSD çiftini test ediyorum.

İndirme %57'ye ulaştı ve başarıyla kapatıldı, günlükte yalnızca bu satır var

 2011.01.19 17:16:23	Tester	EURUSD: history preliminary downloading started

2. Test cihazında yeni yapılarda 1:200 ve 1:500 kaldıracı kalıcı hale getirmek mümkün müdür?

Tüm DC'lerin, özellikle MT5'te böyle bir kaldıracı olmadığını anlıyorum, ancak stratejileri yeni bir platformda test etmek zaten daha uygun olduğundan, muhtemelen test cihazında bırakılmalıdır.