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

 
Sprut112 :
EA bir hedge üzerinde işlem görüyor. Belki bazı standart kontroller ekleyin?

Bir santrifüj üzerinde test yapıyor musunuz? Bazı sent hesaplarında, minimum lot 0.1'dir.

 
Konstantin Nikitin :

Normal olarak test cihazında işlem görür, 1960 inşa

Ve neden #16 lot 0.01?
 
Konstantin Nikitin :

Bir santrifüj üzerinde herhangi bir şans testi yapıyor musunuz? Bazı sent hesaplarında, minimum lot 0.1'dir.

Hayır, min Max ve lot adımı için kontroller var
 
Sprut112 :
Ve neden #16 lot 0.01?

Benim resmimden bahsediyorsanız, o zaman uzmandaki bu kısmi kapatma işe yaradı. orada yakın diyor

Sprut112 :
Hayır, min Max ve lot adımı için kontroller var
Belki bu kontrol ve minimumun mevcut olandan daha büyük olduğunu ve onun yerine geçtiğini kontrol eder.
 
Konstantin Nikitin :

Benim resmimden bahsediyorsanız, o zaman uzmandaki bu kısmi kapatma işe yaradı. orada yakın diyor

Belki bu kontrol ve minimumun mevcut olandan daha büyük olduğunu ve onun yerine geçtiğini kontrol eder.
Burada düşünmek zorundasın, belki de öyle. Test cihazında bu hemen olmaz, bir ay içinde bir yerde
 
Artyom Trishkin :

Neden bu kodunuz #property strict ile mql4'te istediğiniz gibi çalışmıyor?

Vladimir tarafından size gösterilen koddan temel farkı nedir:

Ve bu uygulamalarda hiçbir fark yoktur. Ve kodunuzun metin açıklamalarını görüntülememesinin tek bir nedeni vardır - bu, mql4 kodunda #property strict öğesinin olmamasıdır.


Hemen anlamadım ve =0, =1 vb. olmaması nedeniyle benim için işe yaramadığını düşündüm ...

 enum MySymbol
     {
      symbol_0 = 0 , // AUDUSD
      symbol_1 = 1 , // NZDUSD
      symbol_2 = 2 , // USDCAD
      symbol_3 = 3 , // USDCHF
      symbol_4 = 4 , // USDJPY
      symbol_5 = 5 , // EURJPY
      symbol_6 = 6 , // EURUSD
      symbol_7 = 7 , // GBPUSD
      symbol_8 = 8 , // #CL
     };

ama aynı çıktı...

string xx=EnumToString(Symboll_(1)); // sonuç sembolü_1

ama NZDUSD almak gerekliydi

  в таком варианте всё Ок но не получается добавить символ с решёткой #CL
enum  Symboll_
  {
   AUDUSD,
   NZDUSD,
   USDCAD
   // #CL
  };
string xx=EnumToString(Symboll_(1)); // результат NZDUSD

ama dizi seçeneği tam da ihtiyacınız olan şey...

 
xxz :

Hemen anlamadım ve =0, =1 vb. olmaması nedeniyle benim için işe yaramadığını düşündüm ...

ama aynı çıktı...

string xx=EnumToString(Symboll_(1)); // sonuç sembolü_1

ama NZDUSD almak gerekliydi

ama dizi seçeneği tam da ihtiyacınız olan şey...

Doğal olarak, EnumToString() kullanarak bir numaralandırma yazdırırken, "//" arkasındaki değişkenin açıklamasını değil, değişkenin kendisini olduğu gibi alırsınız.

İstediğiniz şekilde yazdırmak için, yazdıracak bir analog EnumToString() işlevi yapmanız gerekir.

Böyle bir numaralandırma için:

 enum ENUM_SYMBOL_NAMES
  {
   SYMBOL_NAME_AUDUSD,     // AUDUSD
   SYMBOL_NAME_NZDUSD,     // NZDUSD
   SYMBOL_NAME_USDCAD,     // USDCAD
   SYMBOL_NAME_USDCHF,     // USDCHF
   SYMBOL_NAME_USDJPY,     // USDJPY
   SYMBOL_NAME_EURJPY,     // EURJPY
   SYMBOL_NAME_EURUSD,     // EURUSD
   SYMBOL_NAME_GBPUSD,     // GBPUSD
   SYMBOL_NAME_SHARP_CL,   // #CL
  };
input ENUM_SYMBOL_NAMES InpNames; // Instrument

Aşağı yukarı şöyle:

 //+------------------------------------------------------------------+
string InstrumentToString( void )
  {
   string enm= EnumToString (InpNames);
   int index= StringFind (enm, "SHARP_" );
   int shift=(index> WRONG_VALUE ? index+ 6 : 12 );
   string name= StringSubstr (enm,shift);
   return (index> 0 ? "#" +name : name);
  }
//+------------------------------------------------------------------+

Pekala, arayın:

 Print (InstrumentToString());
 
double get_lot( int pair, double input_lots) {
   if (input_lots<min_lot[pair]) return (min_lot[ir]);
   return (input_lots);
 
Konstantin Nikitin


:

Benim resmimden bahsediyorsanız, o zaman uzmandaki bu kısmi kapatma işe yaradı. orada yakın diyor

Belki bu kontrol ve minimumun mevcut olandan daha büyük olduğunu ve onun yerine geçtiğini kontrol eder.
 if ( SymbolInfoDouble (Symb, SYMBOL_VOLUME_STEP )< 0.1 ) dg= 2 ; else
       if ( SymbolInfoDouble (Symb, SYMBOL_VOLUME_STEP )< 1.0 ) dg= 1 ;

Burada, bence, bir şey doğru değil

 
Vladimir Karputov :

Ve daha da iyisi - ne almak istediğinizi net bir şekilde formüle edin. Muhtemelen tam bir örnek göstereceğim.

Bir kez, 2010'da, kışın... Ayrıca, özü iBar'lar için PERIOD_MN1 ile Max & Min HLine çizmek olan göstergeyi filtrelemeyi istedim...))))

Ben kendim anladım. Ustalaşmış MT4.

Yavaşça, hemen değil, MT5'te ustalaşıyorum.

.... "ne almak istediğinizi açıkça formüle edin" FORMÜLLE: Programladığımı (kendim) dönüştürüyorum (kendim) ve aynı zamanda (MT5)'te (kendim) çözeceğim)))


ANCAK bana örneklerle gösterdiğiniz (açıkça) kaybolmadı.


EĞER SHO ise geri döneceğim)))

Eğer sho o zaman geri döneceğim






 
Artyom Trishkin :

Doğal olarak, EnumToString() kullanarak bir numaralandırma yazdırırken, "//" arkasındaki değişkenin açıklamasını değil, değişkenin kendisini olduğu gibi alırsınız.

İstediğiniz şekilde yazdırmak için, yazdıracak bir analog EnumToString() işlevi yapmanız gerekir.


Sorun şu ki, en basit görevi çözmek için bir fonksiyon yaratmanız gerekiyor ve bu bir sürü işe yaramaz kod.

bir yerine on satır...

Mümkün olduğunca kısa olmaya çalışıyorum...

Başlangıçta, koda yalnızca bir satır ekleyerek bu sorunu çözebilirdim.

            xx= iClose (Symbol_(i),0, 50 );
xx= iClose ("#CL",0, 50 );

ancak bu seçeneği sadece kodda fazladan bir satır olduğu için beğenmedim ...

"Kirli" kodu sevmiyorum ...