MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 746

 

Beyler, her günün başında yürütülmesi gereken bir OnTimer() işlevim var ve yürütmenin belirli bir sonucunda danışman uyumalı. OnTimer() işlevi için bir sonraki yürütme zamanını bir sonraki günün başlangıcına ayarlarsam ve bundan sonra danışmanı aynı ana kadar (örneğin -1 saniye) uyku moduna geçirirsem, zaman sayacı çalışmaya devam eder ve 1 saniye sonra uyandıktan sonra işlev çalışacak mı?


Not Hala bir soru hakkında biraz endişeliyim, belgeler nasıl bu kadar sefil bir tarzda derlenebilir? Kod ve parantez içindeki boşlukları kastediyorum, hayatımda "programlama laboratuvarlarındaki okul çocukları" dışında kimseyi görmedim ve mql ile yazan adamlar şöyle bir şey veriyor:

for(int x=0;x<10;x++)

{

}


Site kendini bir şekilde düzeltiyor, parantezler hakkında, parantezlerin sekmelerle yerleştirilmesinden bahsediyorum, yani braketin dikey olarak nereye gittiğini sezgisel olarak izleyemezsiniz.

 
ukrop1203 :

Beyler, her günün başında yürütülmesi gereken bir OnTimer() işlevim var ve yürütmenin belirli bir sonucunda danışman uyumalı. OnTimer() işlevi için bir sonraki yürütme zamanını bir sonraki günün başlangıcına ayarlarsam ve bundan sonra danışmanı aynı ana kadar (örneğin -1 saniye) uyku moduna geçirirsem, zaman sayacı çalışmaya devam eder ve 1 saniye sonra uyandıktan sonra işlev çalışacak mı?


Not Hala bir soru hakkında biraz endişeliyim, belgeler nasıl bu kadar kötü bir tarzda yazılabilir? Koddaki boşlukları ve parantezleri kastediyorum, hayatımda "programlama laboratuvarlarındaki okul çocukları" dışında kimseyi görmedim ve mql'de yazan adamlar şöyle bir şey veriyor:

for(int x=0;x<10;x++)

{

}


Site kendini bir şekilde düzeltiyor, parantezler hakkında, parantezlerin sekmelerle yerleştirilmesinden bahsediyorum, yani braketin dikey olarak nereye gittiğini sezgisel olarak izleyemezsiniz.

Sleep'i nereye koyarsanız, o fonksiyon belirtilen süre boyunca yükselir. 5 dakika uyku moduna alın ve OnTimer'ı her 10 saniyede bir Yazdırılacak şekilde ayarlayın. Sorunuzun cevabı bu olacak. Bir işlevin sonucu olarak, ana algoritmanın çalışma modunu belirleyen anahtarı diğer işlevlerde basitçe değiştirebiliyorsanız neden uykuya dalın?

 

Merhaba!


MT5 hakkında SORU. Metin etiketleri (sayılar) ince gri bir çizgi olarak yerleştirilir. Noktalar, kafamdaki MT5 hatalarını görselleştirmek için kontrol arabelleğidir....


OBJ_TEXT Belgeleri ile karşılaştırıldığında, öyle görünüyor ki ....

 //| Вывод текстовой метки с размером интервала "тела" свечи          |
//+------------------------------------------------------------------+
void LabText( const long   chart_ID= 0 ,
             string       name= "Text" , 
             string       text= "text" , // ТЕКСТ ДЛЯ ВЫВОДА НА ГРАФИК
             datetime     time= 0 , 
             double       price= 0 ,
             int          fontsizes= 0 ,
             color        clr= 0 )
  {
   if ( ObjectFind (chart_ID,name)!= 0 )
     {
   ObjectCreate (chart_ID,name, OBJ_TEXT , 0 , 0 , 0 );
   ObjectSetInteger (chart_ID,name, OBJPROP_TIME ,time);
   ObjectSetDouble (chart_ID,name, OBJPROP_PRICE ,price);
//--- установим угол наклона текста 
   ObjectSetDouble (chart_ID,name, OBJPROP_ANGLE , 0.0 ); 
//--- установим способ привязки 
   ObjectSetInteger (chart_ID,name, OBJPROP_ANCHOR , ANCHOR_LEFT ); 
   ObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr);
   ObjectSetString (chart_ID,name, OBJPROP_TEXT ,text);
   ObjectSetString (chart_ID,name, OBJPROP_FONT , "Arial" );
   ObjectSetInteger (chart_ID,name, OBJPROP_FONTSIZE ,fontsizes);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов 
   ObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN , true );
     }
  }

********************** В КОДЕ *********************************
    

    double  LW=iLow(NULL,PERIOD_H1,i);  //   ЦИКЛ I

                        *********** 

   LabText(0,"NAME  ("+string(i)+")",DoubleToString(bbull[i],0),iTime(NULL,PERIOD_H1,i),
              LW-(8*_Point),12,clrWhite);
   ExtLineBuffer1[i]=iHigh(NULL,PERIOD_H1,i);


 
kopeyka2 :

Merhaba!


MT5 ile ilgili SORU. Metin etiketleri (sayılar) ince gri bir çizgi olarak yerleştirilir. Noktalar, kafamdaki MT5 hatalarını görselleştirmek için kontrol arabelleğidir....


OBJ_TEXT Belgeleri ile karşılaştırıldığında, öyle görünüyor ki ....


Fontsizes parametresinde ne ilettiğinize dikkat edin

 
Artyom Trishkin :

Fontsizes parametresinde ne ilettiğinize dikkat edin

TEŞEKKÜR EDERİM!!! Global değişkenlerden yazı tipi boyutlarına takıldım. void LabText işlevinde ayarlayın. Kazanılan...


 

Şablonu uygulamak tüm çizilen çizgileri kaldırdığından, bir komut dosyası kullanarak grafiğe göstergeler eklemek ve kaldırmak istiyorum.


 #property indicator_label1    "MA8"
#property indicator_type1    DRAW_LINE
#property indicator_color1    clrBlue
#property indicator_style1    STYLE_SOLID
#property indicator_width1    1


int indicator_handle;

void OnStart ()
  {

   indicator_handle = iMA ( 0 , 0 , 8 , 0 , MODE_EMA , PRICE_CLOSE );

   Print (indicator_handle);

   //ChartIndicatorAdd(0,0,indicator_handle);

   
  }

bir cevap alıyorum

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) 'Hareketli Ortalama' göstergesi yüklenemiyor [4302]

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) -1


Kod hatasız derlenmesine rağmen.


 
psyman :

Şablonu uygulamak tüm çizilen çizgileri kaldırdığından, bir komut dosyası kullanarak grafiğe göstergeler eklemek ve kaldırmak istiyorum.


bir cevap alıyorum

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) 'Hareketli Ortalama' göstergesi yüklenemiyor [4302]

2019.01.24 19:14:53.633 add_ind (EURJPY,H1) -1


Kod hatasız derlenmesine rağmen.


ERR_MARKET_NOT_SELECTED

4302

MarketWatch'ta sembol seçilmedi


Sembol adı yerine neden 0 koydunuz? Mevcut olanı istiyorsanız, NULL veya adını yazmanız gerekir, örneğin "EURUSD"

iMA

Hareketli ortalama göstergesinin tutamağını döndürür. Sadece bir tampon.

int iMA (
    sicim                              sembol , // sembol adı
    ENUM_TIMEFRAMES        nokta , // nokta
    int                                   ma_period , // ortalama periyot
    int                                   ma_shift , // göstergenin yatay kayması
    ENUM_MA_METHOD         ma_method , // düzgünleştirme türü
    ENUM_APPLIED_PRICE    uygulanan_fiyat    // fiyat türü veya tutamaç
);

Seçenekler

semboller

[içinde] Göstergenin hesaplanacağı cihazın sembolik adı. NULL , geçerli karakter anlamına gelir.

dönem

[içinde] Dönem değeri, ENUM_TIMEFRAMES numaralandırma değerlerinden biri olabilir, 0, geçerli zaman çerçevesi anlamına gelir.

ana_dönem

[içinde] Hareketli ortalamayı hesaplamak için ortalama alma süresi.

ma_shift

[içinde] Fiyat grafiğine göre gösterge kayması.

ma_yöntemi

[içinde] Ortalama alma yöntemi. ENUM_MA_METHOD değerlerinden herhangi biri olabilir.

uygulanan_fiyat

[içinde] Kullanılan fiyat. ENUM_APPLIED_PRICE fiyat sabitlerinden herhangi biri veya başka bir gösterge tanıtıcısı olabilir.

Geri dönüş değeri

Başarısızlık durumunda INVALID_HANDLE döndürür , belirtilen teknik göstergenin tanıtıcısını döndürür. GöstergeRelease() işlevi, bilgisayarın belleğini artık kullanılmayan bir göstergeden kurtarmak için kullanılır ve bu göstergenin tutamacı kendisine iletilir.

 
merhaba, lütfen bana MA tanıtıcısındaki dizinin normal fiyatlara nasıl döndürüleceğini söyleyin, yani, beklendiği gibi, 8 değil 5 ondalık basamak
 int OnInit ()
  {
 ima1_handle        = iMA ( Symbol (), 0 , 14 , 0 , MODE_EMA , PRICE_CLOSE );
 ima2_handle        =   iMA ( Symbol (), 0 , 64 , 0 , MODE_EMA , PRICE_CLOSE );               //хендл
 Stoch_handle       = iStochastic ( Symbol (), 0 , 20 , 15 , 15 , MODE_EMA , STO_CLOSECLOSE ); //хендл
 ATR_handle         = iATR         ( Symbol (), 0 , 21 );                               //хендл

   if ( Digits == 3 || Digits == 5 )
     {
      Slippage*= 10 ;
      TrailingStop *= 10 ;
      TrailingStep *= 10 ;
     }
   return ( 0 );
  }
void OnDeinit ( const int reason)
  {

  }

void OnTick ()
  { 
     double ima1_massiv [];                                           //динамический массив для быстрой машки
     ArraySetAsSeries (ima1_massiv, true );   
     int ima_count1 = CopyBuffer (ima1_handle, 0 , 0 , 2 ,ima1_massiv);     //скопировал данные из 2х буферов быстрой машки
     //double ima1_normal = NormalizeDouble(ima1_massiv[0], Digits);
     string ima1_massiv_str0 = DoubleToString (ima1_massiv[ 0 ]);
     string ima1_massiv_str1 = DoubleToString (ima1_massiv[ 1 ]);
     printf ( "сегодня = " + ima1_massiv_str0 + " вчера = " + ima1_massiv_str1);  
    
  }    
mt5 dili
 
Sergey Lobzankin :
merhaba, lütfen bana MA tanıtıcısındaki dizinin normal fiyatlara nasıl döndürüleceğini söyleyin, yani olması gerektiği gibi, 8 değil 5 ondalık basamak
 if ( Digits == 3 || Digits == 5 )
     {
      Slippage*= 10 ;
      TrailingStop *= 10 ;
      TrailingStep *= 10 ;
     }
   return ( 0 );

serin)

 double normalMA= NormalizeDouble (MA,_Digits);    
 

merhaba, lütfen bana MA tanıtıcısındaki dizinin normal fiyatlara nasıl döndürüleceğini söyleyin, yani, beklendiği gibi, 8 değil 5 ondalık basamak

mt5 dili

DoubleToStr, mt5'te DoubleToString() yok; ama yardımcı olmuyor
DoubleToStr - Преобразование данных - Справочник MQL4
DoubleToStr - Преобразование данных - Справочник MQL4
  • docs.mql4.com
DoubleToStr - Преобразование данных - Справочник MQL4