Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 988

 
Aleksey Vyazmikin :

Kendim için zaten bir kontrol yaptım, ancak bu kontrol, bu fonksiyonun hatasını atlamak için, yardım, bir kontrol ihtiyacı hakkında hiçbir şey söylemiyor, bu da yerleşik olması gerektiği anlamına geliyor.

Ve sonra, gösterge kontrolünden bahsediyorsunuz ve doğru çubuk başlangıç zamanını hesaplamak için Çubukları kullanıyorum, çünkü iBarShift aklımda ve sadece forex için uygun, takaslar ve ticaret oturumları nedeniyle geçmişte sık sık başarısızlıkların olmadığı yerlerde. bütün gün sürmeyin.

Çekin nerede? Ve neden (geçmişi değiştirirken veya geçmişi değiştirirken) göstergeyi tamamen yeniden hesaplamanız gerekiyorsa, bir tür değişken tanıtın. Kural olarak bu, "0"dan "rates_total-1"e kadar yapılır.

 
Vladimir Karputov :

Çekin nerede? Ve neden (geçmişi değiştirirken veya geçmişi değiştirirken) göstergeyi tamamen yeniden hesaplamanız gerekiyorsa, bir tür değişken tanıtın. Kural olarak bu, "0"dan "rates_total-1"e kadar yapılır.

Sorunum gösterge veya geçmiş sayfalama ile ilgili değil. İşte bir kod parçası

       datetime          StartDt= iTime ( Symbol (), PERIOD_CURRENT , Bars ( Symbol (), PERIOD_CURRENT , iTime ( Symbol (),TF_iDeltaP, 0 ), iTime ( Symbol (), PERIOD_CURRENT , 0 ))- 1 );
       datetime          StopDt= iTime ( Symbol (), PERIOD_CURRENT , 1 ); //Берем прошлый бар, что б не было расхождений между реалом и тестером при задержки на реальных данных

       int BarsGo= Bars ( Symbol (), PERIOD_CURRENT ,StartDt,StopDt);
       if (StartDt>StopDt)BarsGo= 0 ;
       if (StartDt==StopDt)BarsGo= 1 ;
       if (BarsGo> 0 )
        {
                 //Полный расчет с вычислениями - копирование массивов цен и прочие тяжелые функции
        }
       else
        {
                 //Упрощенный расчет с присвоением эмпирических значений переменным
        }
Sorun , yeni bir çubuk açarken, genel olarak, çubuğun başlangıç tarihi, mevcut TF'deki sıfır çubuğundan 1 çubuğun kaymasından büyük olduğunda ortaya çıkar.
 
Aleksey Vyazmikin :

Bu bir savunma değil, koddaki bir hatayı tespit etmenin önünde bir engeldir!

Ayrıca, tarihler eşleşiyorsa 2 sayısını döndürmek hiç mantıklı değil - o zaman gerekçesi nedir?

FORTS'ta bir çubuğun başlama zamanı eşleşmeyebilir, bu da hesaplama hatalarına yol açar, örneğin, çubuk 14:00'de değil, 14:05'te açılır - Ben de bundan muzdariptim.

Belki başlangıçta belgelerde yazıldığı gibi yaptılar ve sonra 'başlangıç' ve 'bitiş' değil, belirtilen tarihler arasında 'arasında' dönmenin daha iyi olacağına karar verdiler, ancak belgelerdeki açıklama düzeltilmedi . Evet, aslında gerçekten gerekli değil.

FORTS'ta bir demom bile yok. Kontrol edemiyorum.

 
Alexey Viktorov :

Belki başlangıçta belgelerde yazıldığı gibi yaptılar ve sonra 'başlangıç' ve 'bitiş' değil, belirtilen tarihler arasında 'arasında' dönmenin daha iyi olacağına karar verdiler, ancak belgelerdeki açıklama düzeltilmedi . Evet, aslında gerçekten gerekli değil.

FORTS'ta bir demom bile yok. Kontrol edemiyorum.

Evet nasıl gerekli olmayabilir tahmin edemiyorum ama bu daha sonra düzeltilecek bir hataysa o zaman kod tekrar çalışmaz ve kritik derecede uzun bir süre hatayı ararım... Ancak Artyom bunun bir hata olmadığına karar verdi ve aslında hiçbir şey yazmadı.

MQ'nun bir demo hesabında , FORTS'a bağlanan insanlar gibi görünüyor...

 
Aleksey Vyazmikin :

Evet nasıl gerekmeyebilir tahmin edemiyorum ama bu daha sonra düzeltilecek bir hataysa o zaman kod tekrar çalışmaz ve kritik derecede uzun bir süre hatayı ararım... Ancak Artyom bunun bir hata olmadığına karar verdi ve aslında hiçbir şey yazmadı.

MQ'nun bir demo hesabında , FORTS'a bağlanan insanlar gibi görünüyor...

Şimdi yeterince dikkatliysen ve başlangıç zamanı ile bitiş zamanını karıştıramıyorsan, korkacak bir şey yok. Bırakın onlar yönetsin.

 
Aleksey Vyazmikin :

Sorunum gösterge veya geçmiş sayfalama ile ilgili değil. İşte bir kod parçası

Sorun , yeni bir çubuk açarken, genel olarak, çubuğun başlangıç tarihi, mevcut TF'deki sıfır çubuğundan 1 çubuğun kaymasından büyük olduğunda ortaya çıkar.
 datetime StartDt= iTime ( Symbol (), PERIOD_CURRENT , Bars ( Symbol (), PERIOD_CURRENT , iTime ( Symbol (),TF_iDeltaP, 0 ), iTime ( Symbol (), PERIOD_CURRENT , 0 ))- 1 );
datetime StopDt= iTime ( Symbol (), PERIOD_CURRENT , 1 ); //Берем прошлый бар, что б не было расхождений между реалом и тестером при задержки на реальных данных

iTime(), Bars()'ın ne döndürdüğüne dair bir kontrol yok

Ve buna değecekti. Gerçekten buna değer. Yardıma bakın - iTime() ve Bars() ne döndürür? Ve notlarda ne var?

 
Alexey Viktorov :

Şimdi yeterince dikkatliysen ve başlangıç zamanı ile bitiş zamanını karıştıramıyorsan, korkacak bir şey yok. Bırakın onlar yönetsin.

Sadece oturup pasif bir şekilde beklemeyi sevmiyorum ve özellikle geliştiricilere bunu sormam yasaktı - başlangıçta soru onlar içindi.

 
Artyom Trishkin :

iTime(), Bars()'ın ne döndürdüğüne dair bir kontrol yok

Ve buna değecekti. Gerçekten buna değer. Yardıma bakın - iTime() ve Bars() ne döndürür? Ve notlarda ne var?

Bu kontrolleri kodda bir kez yapmak yeterli mi yoksa her fonksiyon çağrısından sonra/önce mi yapılması gerekiyor?

Mevcut çubuğun/geçmişin varlığı için ne tür kontroller önerilir? Onları en iyi nasıl yapabilirim?

 

Bu mesajın nedenini nasıl bulabilirim?

 2019.01 . 24 21 : 32 : 01.570 i-Regr4_05i (Si- 3.19 ,M1)        indicator is too slow, 3011 ms. rewrite the indicator, please
 
Aleksey Vyazmikin :

Bu kontrolleri kodda bir kez yapmak yeterli mi yoksa herfonksiyon çağrısından sonra/önce mi yapılması gerekiyor?

Mevcut çubuğun/geçmişin varlığı için ne tür kontroller önerilir? Onları en iyi nasıl yapabilirim?

Sıfır için dönüş değerini nasıl kontrol edeceğinizi bilmiyor musunuz? Ve OnCalculate()'den sıfır dönüşle nasıl çıkacağınızı bilmiyor musunuz? Hiç bir site aramasında bilgi aramayı denediniz mi?

  1. Fonksiyondan gerekli değeri almak
  2. sıfır olup olmadığını kontrol edin
    1. Sıfır ise, 0 döndürün;
    2. Sıfır değilse, o zaman n3'e
  3. Alınan değerle çalışma
Reytingi 13 bini geçen birine bu kaynakta mantığın temellerini anlatacağım hiç aklıma gelmezdi...