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

 
Maksym Mudrakov :

Hata, ondalık noktadan sonraki basamak sayısında olabilir:


Hata bunda değil, veriler geçmiş üzerinde hesaplanmıyor ama sembol oluşturulduğu andan itibaren her şey doğru hesaplanıyor, geçmiş üzerindeki hesaplama fonksiyonunun doğru çalışmadığından şüpheleniyorum, yani. bu bir hata.
 
Tünaydın bayanlar ve baylar.

Böyle bir sorunum var: MT5'te uyuşturucuya yeni başladım, göstergelerimi MT4'ten aktardım ve sorunlarla karşılaştım. iMA'yı tek satırda kullanmam ve belirli bir dizinin değerini almam gerekiyor. Forumda mesajlar gördüm ve iMAGet işlevinin (aynı zamanda benzer iATRGet vb.) kullanımını gördüm. Görebildiğim gibi, işlevler artık çalışmıyor, o zaman soru şu: tek bir iMA değeri nasıl incelikle elde edilir? Bunu yukarıdaki işlevleri kullanarak yapmaya çalıştım:

 NormalizeDouble (iMAGet( iMA ( Symbol (), timeframe, signal_period, 0 , MODE_LWMA , PRICE_LOW ), shift), Digits ())

Biliyorum, kontrol etmeden kötü ama eski MT4 kodunu taşımam gerekiyor, başka bir şekilde nasıl yapacağımı bulamadım (bir düzine makinem var ve hepsi farklı zaman dilimlerinde çalışıyor). Kodun üç aşamalı bir yuvalaması olduğu için makineleri oninit'te başlatamıyorum ve hemoroid olmadan gerekli makineyi arayamayacağım. Bu nedenle, kısaca amacım,

Bu :

 NormalizeDouble ( iMA ( Symbol (), timeframe, signal_period, 0 , MODE_LWMA , PRICE_LOW , shift), Digits ())

ani hareketler olmadan MT5'te çalışan bir şeye dönüştürün.

 
Olga Miakhovich :
Tünaydın bayanlar ve baylar.

Böyle bir sorunum var: MT5'te uyuşturucuya yeni başladım, göstergelerimi MT4'ten aktardım ve sorunlarla karşılaştım. iMA'yı bir satırda kullanmam ve belirli bir dizinin değerini almam gerekiyor. Forumda mesajlar gördüm ve iMAGet işlevinin (aynı zamanda benzer iATRGet vb.) kullanımını gördüm. Görebildiğim gibi, işlevler artık çalışmıyor, o zaman soru şu: tek bir iMA değeri nasıl incelikle elde edilir? Bunu yukarıdaki işlevleri kullanarak yapmaya çalıştım:


Biliyorum, kontrol etmeden kötü ama eski MT4 kodunu taşımam gerekiyor, başka bir şekilde nasıl yapacağımı bulamadım (bir düzine makinem var ve hepsi farklı zaman dilimlerinde çalışıyor). Kodun üç aşamalı bir yuvalaması olduğu için makineleri oninit'te başlatamıyorum ve hemoroid olmadan gerekli makineyi arayamayacağım. Bu nedenle, kısaca amacım,

Bu :

ani hareketler olmadan MT5'te çalışan bir şeye dönüştürün.

Kod tabanındaki örneklere bakın, örneğin şu: https://www.mql5.com/en/code/27161

Aslında: OnInit() içinde bir gösterge tutamacı oluşturun

handle_iMA_High= iMA ( Symbol (), Period (),Inp_MA_ma_period,Inp_MA_ma_shift,
                       Inp_MA_ma_method, PRICE_HIGH );
//--- if the handle is not created
   if (handle_iMA_High== INVALID_HANDLE )
     {
       //--- tell about the failure and output the error code
       PrintFormat ( "Failed to create handle of the iMA indicator (\"Price High\") for the symbol %s/%s, error code %d" ,
                   Symbol (),
                   EnumToString ( Period ()),
                   GetLastError ());
       //--- the indicator is stopped early
       return ( INIT_FAILED );
     }

Peki, o zaman istenen öğeyi/elemanları ara belleğe kopyalayın ve onunla çalışın

 if ( CopyBuffer (ind_handle, 0 ,-shift,amount,values)< 0 )
     {
       //--- if the copying fails, tell the error code
       PrintFormat ( "Failed to copy data from the iMA indicator, error code %d" , GetLastError ());

https://www.mql5.com/ru/docs/series/copybuffer

 
Vitaly Muzichenko :

Kod tabanındaki örneklere bakın, örneğin şu: https://www.mql5.com/en/code/27161

Aslında: OnInit() içinde bir gösterge tanıtıcı oluşturun

Peki, o zaman istenen öğeyi/elemanları ara belleğe kopyalayın ve onunla çalışın

https://www.mql5.com/ru/docs/series/copybuffer

Daha önce yazdığım gibi, OnInit'te başlatma bana uymuyor. Tüm zaman dilimleriyle aynı anda çalışmam gerekiyor, her bir TF'deki tüm onay işaretlerini başlatmam gerekecek ve sonra bir değer kullandığım kodda şöyle bir şey yapacağım:

 if (timeframe = PERIOD_M5 )
         CopyBuffer (handle_ma_m5, ...)
if (timeframe = PERIOD_M15 )
         CopyBuffer (handle_ma_m15, ...)
...

Ve böylece her makinenin her çağrısında. Kod sadece kafa karıştırıcı ishale dönüşecek.

Ve aynı zamanda, her yeni çubuğun bir şekilde güncellenmesi gerekecek mi?

Bir diziyi değil, istenen dizinde bir değeri kopyalayan CopyBuffer gibi bir işlev var mı?

 
Olga Miakhovich :

Daha önce yazdığım gibi, OnInit'te başlatma bana uymuyor . Tüm zaman dilimleriyle aynı anda çalışmam gerekiyor, her bir TF'deki tüm onay işaretlerini başlatmam gerekecek ve sonra bir değer kullandığım kodda şöyle bir şey yapacağım:

Ve böylece her makinenin her çağrısında. Kod sadece kafa karıştırıcı ishale dönüşecek.

Ve aynı zamanda, her yeni çubuğun bir şekilde güncellenmesi gerekecek mi?

Bir diziyi değil, istenen dizinde bir değeri kopyalayan CopyBuffer gibi bir işlev var mı?

OnInit () içinde bir dizi tutamaç yapın ve bunlarla çalışın.

CopyBuffer'ı (...) kullanım kolaylığı için bir fonksiyona taşıyın, gösterge tutamağını ve diziden istenen indeksi sağlayın ve fonksiyon fiyatı döndürecektir.

 
Vitaly Muzichenko :

OnInit () içinde bir dizi tutamaç yapın ve bunlarla çalışın.

CopyBuffer(...)'ı kullanım kolaylığı için bir fonksiyona taşıyın, gösterge tutamağını ve diziden istenen indeksi sağlayın ve fonksiyon fiyatı döndürecektir.

kapets, ancak ne kadar rahatsız edici)

 
Olga Miakhovich :

kapets, ancak ne kadar rahatsız edici)

Aksine, normal değil)))

 
Vitaly Muzichenko :

OnInit () içinde bir dizi tutamaç yapın ve bunlarla çalışın.

CopyBuffer(...)'ı kullanım kolaylığı için bir fonksiyona taşıyın, gösterge tutamağını ve diziden istenen indeksi sağlayın ve fonksiyon fiyatı döndürecektir.

CopyBuffer ile ilgili diğer bir sorun, kendisi için bir gösterge arabelleği gerektirmesidir. Toplamda yüzün altında göstergem var ve hesaplamalarda tek bir gösterge elde etmek için kullanılıyor. Bu değerleri depolamak için yüzlerce arabellek oluşturmam gerekir mi?

 
Olga Miakhovich :

CopyBuffer ile ilgili diğer bir sorun, kendisi için bir gösterge arabelleği gerektirmesidir. Toplamda yüzün altında göstergem var ve hesaplamalarda tek bir gösterge elde etmek için kullanılıyor. Bu değerleri depolamak için yüzlerce arabellek oluşturmam gerekir mi?

Scriptor'da CodeBase'de kod örnekleri arayın - Her şey orada.
Genel olarak, Mashka herhangi bir çubuk için hesaplanabilir.
 
bu sorunu çözebilmeniz için bir örneğin bulunduğu gönderiye gelin: grafikte bir düzine grafik tamponlu (maskara ve diğer labuten değil) 1 numaralı bir gösterge var ve 2 numaralı bodrum göstergesinin olması gerekiyor 1 numaralı göstergeden birkaç tampon alır ve bunları hyxogram biçiminde gösterir (evet, nasıl olduğu önemli değil) zaten bodrumdadır. Şimdiden teşekkür ederim. MT5 için.
Neden: