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

 
MakarFX # :

Evet, çöp)

Şimdi her klasörde, sırayla, Uzmanlar klasörlerini _ Uzmanlar ve Göstergeler klasörlerini _ Göstergeler olarak yeniden adlandırın.

Bir klasörde yeniden adlandırıldı - yardımcı olmadıysa terminali başlattı - yeniden adlandırıldı ve bir sonraki klasöre gidin.

Not: Terminal ilk kez normalden biraz daha uzun süre açılacaktır.

Makar!

Olay bugün gerçekleşti. Bu nedenle eski tarihli klasörlere dokunmadım.

Ve yeni klasörlerde değişiklik yapmak hiçbir şeyi değiştirmedi.

Sonra profilleri, göstergeleri ve uzmanları alıp başka bir terminale sürükledim. Ve bu bodyagu'yu bitirdim.

Şimdi her şey çalışıyor. Diğer terminalde, gerçekten. Ancak sonuç önemlidir - çalışabilirsiniz.

Ve sonra o terminali sileceğim.

Editörle iletişime geçerek göstergelerinizi ve profillerinizi bulma öneriniz bence harika!

Özellikle benim gibi programlamadaki bu tür "aptallar" için.

Yardımınız ve cömertliğiniz için çok teşekkür ederim!

İyi şanlar!

Samimi olarak!

 

Merhaba. Her şeyi yeni anlamaya başlıyorum, bu yüzden hemen yeşilden daha yeşil olduğumu söylüyorum. Ne kadar dayanır bilmiyorum ama biraz tecrübe kazanacağım. Bu durumla karşılaşan varsa haber versin. bir tür komut dosyasına ihtiyacınız var veya sonraki 10 noktada, örneğin açık köyler olmadığını ve yukarı ve aşağı alımların olmadığını izleyen bir koda ihtiyacınız var.

1 ..... Örneğin, bir onay işareti geldi - kod, sonraki 10 puanda bunu arar ve (veya) yukarı sıraları oturdu, ardından sırayı oturdu. Varsa, o zaman hiçbir şey. Ayrıca bir satın alma siparişi ile

İşte Forex EA Generator'da bir örnek diyagram



Dosyalar:
hktrabmcw4.jpg  222 kb
 
valentin104 tür komut dosyasına ihtiyacınız var veya sonraki 10 noktada, örneğin açık köyler olmadığını ve yukarı ve aşağı alımların olmadığını izleyen bir koda ihtiyacınız var.

1 ..... Örneğin, bir onay işareti geldi - kod, sonraki 10 puanda bunu arar ve (veya) yukarı sıraları oturdu, ardından sırayı oturdu. Varsa, o zaman hiçbir şey. Ayrıca bir satın alma siparişi ile

İşte Forex EA Generator'da bir örnek diyagram



Aptal düzeni.

 
Artyom Trishkin # :

Aptal düzeni.

Hayır, if ve else olmadan böyle görünüyor.) Ama bundan bahsetmek istemedim.

 SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_SIZE )

Komut dosyasında tick_s =1.0 tick_vflue =80.32786885245902 verir ve baykuş tick_value =80.37529660186777 tick_size =1e-05

Hesaplar bozuldu.




 
Artyom Trishkin # :

Aptal düzeni.

asıl noktayı kaçırdın

valentin104 # :

Merhaba. Her şeyi yeni anlamaya başlıyorum, yeşilden daha yeşil olduğumu hemen söylüyorum

 
Galim_V # :

Hayır, if ve else olmadan böyle görünüyor.) Ama bundan bahsetmek istemedim.

Komut dosyasında tick_s =1.0 tick_vflue =80.32786885245902 verir ve baykuş tick_value =80.37529660186777 tick_size =1e-05

Hesaplar bozuldu.




tick_size=1e-05

DoubleToString'i normalleştirin ( tick_size ,2)

 
MakarFX # :

tick_size=1e-05

DoubleToString'i normalleştirin ( tick_size ,2)

Tek başına sıfır. Yüzlercesini bile bulamadım.

 //+------------------------------------------------------------------+
//|                                                     MAX+risk.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link        " https://www.mql5.com "
#property version    "1.00"
#property strict
#property script_show_inputs
enum Mani
  {
   free_margin,
   balans
  };
input Mani risk_mani;
input double Lot= 0.0 ;
input int max_risk = 0 ; //В% от свободных средсв или...
input int stoploss= 300 ;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   double Lots= 0 ;
   int     Max_Risk= 0 ;

   printf ( "ACCOUNT_MARGIN_FREE =  %G" , AccountInfoDouble ( ACCOUNT_MARGIN_FREE )); //Размер свободных средств на счете  в валюте
   printf ( "ACCOUNT_BALANCE =  %G" , AccountInfoDouble ( ACCOUNT_BALANCE )); //Баланс счета в валюте депозита
   printf ( "ACCOUNT_MARGIN_LEVEL =  %G" , AccountInfoDouble ( ACCOUNT_MARGIN_LEVEL ));     // Уровень залоговых средств в %

   double freemani= AccountInfoDouble ( ACCOUNT_MARGIN_FREE );
   double balance= AccountInfoDouble ( ACCOUNT_BALANCE );
   double tick_s =   SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_SIZE )/ _Point ;   //Минимальное изменение цены
   double tick_value= SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_VALUE ); //Размер минимального изменения цены инструмента в валюте депозита
   if (risk_mani==balans)
     {
       if (max_risk> 0 &&stoploss> 0 )
        {
         double tmp= balance*max_risk/ 100 /(stoploss* _Point * SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_VALUE )/ SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_SIZE ));
         Lots= NormalizeDouble (tmp, 2 );
         printf ( " Чтобы max_risk был не более %f%s%d%s%f" ,max_risk, " в % от ACCOUNT_BALANCE при stoploss =" ,stoploss, ",неоходим Lots =" ,Lots);
        }
       if (Lot> 0 )
        {
         Max_Risk= ( int ) MathRound (Lot*(stoploss* _Point * SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_VALUE )/ SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_SIZE ))/balance* 100 );
         printf ( " Max_Risk при Lot=%f%s%d,%s%d%s" ,Lot, " и stoploss =" ,stoploss, " будет =" ,Max_Risk, "%" );
        }
     }
   if (risk_mani==free_margin)
     {
       if (max_risk> 0 &&stoploss> 0 )
        {
         double tmp= freemani*max_risk/ 100 /(stoploss* _Point * SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_VALUE )/ SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_SIZE ));
         Lots= NormalizeDouble (tmp, 2 );
         printf ( " Чтобы max_risk был не более %f%s%d%s%f" ,max_risk, " в % от ACCOUNT_MARGIN_FREE при stoploss =" ,stoploss, ",неоходим Lots =" ,Lots);
        }
       if (Lot> 0 )
        {
         Max_Risk= ( int ) MathRound (Lot*(stoploss* _Point * SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_VALUE )/ SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_SIZE ))/freemani* 100 );
         printf ( " Max_Risk при Lot=%f%s%d,%s%d%s" ,Lot, " и stoploss =" ,stoploss, " будет =" ,Max_Risk, "%" );
        }
     }
   Print ( "Lots =" ,Lots, " Max_Risk =" ,Max_Risk, " tick_s =" ,tick_s, " tick_vflue =" ,tick_value);
  }
//+------------------------------------------------------------------+

Burada çalışıyor. Baykuşta fonksiyonlar yerine değişkenler kullanılır. Ama zaten başlangıçta, işlev OnTick'te () bir saçmalık veriyor.

 
Galim_V # :

Tek başına sıfır. Yüzlercesini bile bulamadım.

Burada çalışıyor. Baykuşta fonksiyonlar yerine değişkenler kullanılır. Ama zaten başlangıçta, işlev OnTick'te () bir saçmalık veriyor.

Bulundu. Üzgünüm. Anlam   tick_size =1e-05 0.00001'dir ve doğrudur.

 
valentin104 # :

Hemen yeşilden daha yeşil olduğumu söylüyorum. ne kadar dayanırım bilmiyorum


Programlamayı öğrenmeye bu yaklaşımla, bir programcı kiralamak ve endişelenmemek daha iyidir.

 

Standart teslimattan bir ZigZag göstergesi vardır ve DRAW_SECTION çizgi çizme stiline sahiptir, yani. Gösterge tamponundaki değerlerin çoğu EMPTY_VALUE'a eşittir ve sadece bazen bu değerden farklı değerler (kırılma noktaları) orada, çizginin çizildiği yerde görünür. Herkesin bu göstergeyi ve (veya) kodunu hayatında en az bir kez gördüğüne inanıyorum.

Görev, son dönüm noktasına karşılık gelen değeri elde etmektir , yani. EMPTY_VALUE değerine eşit olmayan gösterge arabelleğinin en son değeri.

Dikkat, soru şudur: Bir döngüdeki gösterge arabelleğinin değerleri boyunca, derinlikte sıfır kaymadan başlayarak, her yinelemede iCustom işlevini çağırarak, elde edilen değer EMPTY_VALUE'dan farklı hale gelene kadar yinelemek doğru yaklaşım mı? ?

Yoksa bu değeri elde etmenin daha kolay bir yolu var mı?