MetaTrader 5 build 2121: Strateji test cihazının yeni tasarımı - sayfa 6

 
//+------------------------------------------------------------------+
//| СТИЛЬ И ДРЕВНЕЕ ФОРМАТИРОВАНИЕ МЕТАQUOTES                        |
//+------------------------------------------------------------------+
void OrderEntry( int direction)
  {
   if (direction== 0 && tradenow== 1 && cFunctions.TotalVolume(Ativo, 0 )<fatorMaxTrade && 
      flotbuy<=lotemaxtrade && flotbuy<=MaxLot && cFunctions.CheckMoneyForTrade(Ativo,flotbuy, ORDER_TYPE_BUY ))
     {
      tradenow= 0 ;
       if (TakeProfit> 0 ){btp=Ask+(TakeProfit* Point ());} else {btp= 0 ;}
       if (StopLoss> 0 ){bsl=Ask-(StopLoss* Point ());} else {bsl= 0 ;}
       if (trade.Buy(flotbuy,Ativo,Ask,bsl,btp,Commentt)){lastpriceBid=Ask;}
      flotbuy= NormalizeDouble (flotbuy*FatorMartingale,digitoslote);
     }

   if (direction== 1 && tradenow== 1 && cFunctions.TotalVolume(Ativo, 1 )<fatorMaxTrade &&
      flotsell<=lotemaxtrade && flotsell<=MaxLot && cFunctions.CheckMoneyForTrade(Ativo,flotsell, ORDER_TYPE_SELL ))
     {
      tradenow= 0 ;
       if (TakeProfit> 0 ){stp=Bid-(TakeProfit* Point ());} else {stp= 0 ;}
       if (StopLoss> 0 ){ssl=Bid+(StopLoss* Point ());} else {ssl= 0 ;}
       if (trade.Sell(flotsell,Ativo,Bid,ssl,stp,Commentt)){lastpriceAsk=Bid;}
      flotsell= NormalizeDouble (flotsell*FatorMartingale,digitoslote);
     }
  }


 //+------------------------------------------------------------------+
//| СТИЛЬ И НОВОЕ ФОРМАТИРОВАНИЕ МЕТАQUOTES                          |
//+------------------------------------------------------------------+
void OrderEntry( int direction)
  {
   if (direction== 0 && tradenow== 1 && cFunctions.TotalVolume(Ativo, 0 )<fatorMaxTrade &&
      flotbuy<=lotemaxtrade && flotbuy<=MaxLot && cFunctions.CheckMoneyForTrade(Ativo,flotbuy, ORDER_TYPE_BUY ))
     {
      tradenow= 0 ;
       if (TakeProfit> 0 )
        {
         btp=Ask+(TakeProfit* Point ());
        }
       else
        {
         btp= 0 ;
        }
       if (StopLoss> 0 )
        {
         bsl=Ask-(StopLoss* Point ());
        }
       else
        {
         bsl= 0 ;
        }
       if (trade.Buy(flotbuy,Ativo,Ask,bsl,btp,Commentt))
        {
         lastpriceBid=Ask;
        }
      flotbuy= NormalizeDouble (flotbuy*FatorMartingale,digitoslote);
     }

   if (direction== 1 && tradenow== 1 && cFunctions.TotalVolume(Ativo, 1 )<fatorMaxTrade &&
      flotsell<=lotemaxtrade && flotsell<=MaxLot && cFunctions.CheckMoneyForTrade(Ativo,flotsell, ORDER_TYPE_SELL ))
     {
      tradenow= 0 ;
       if (TakeProfit> 0 )
        {
         stp=Bid-(TakeProfit* Point ());
        }
       else
        {
         stp= 0 ;
        }
       if (StopLoss> 0 )
        {
         ssl=Bid+(StopLoss* Point ());
        }
       else
        {
         ssl= 0 ;
        }
       if (trade.Sell(flotsell,Ativo,Bid,ssl,stp,Commentt))
        {
         lastpriceAsk=Bid;
        }
      flotsell= NormalizeDouble (flotsell*FatorMartingale,digitoslote);
     }
  }

Lütfen eski METAQUOTES stilini geri getirin veya en azından aynı satıra yazılan kodların formatlanmadığından emin olun.

Misal:

Старая модель и я считаю ее идеальной моделью для однострочных кодов.

       if (TakeProfit> 0 ){btp=Ask+(TakeProfit* Point ());} else {btp= 0 ;}
       if (StopLoss> 0 ){bsl=Ask-(StopLoss* Point ());} else {bsl= 0 ;}



Новый стиль, который портит всех моих роботов.

       if (TakeProfit> 0 )
        {
         btp=Ask+(TakeProfit* Point ());
        }
       else
        {
         btp= 0 ;
        }
       if (StopLoss> 0 )
        {
         bsl=Ask-(StopLoss* Point ());
        }
       else
        {
         bsl= 0 ;
        }
 
Joao Luiz Sa Marchioro :

Lütfen eski METAQUOTES stilini geri getirin veya en azından aynı satıra yazılan kodların formatlanmadığından emin olun.

Pico stilini kullanın, aradığınız şeye çok benzer

ancak { } kullanırsanız Pico stili if - else ifadesini 2 satıra böler

{ } kullandığınız kodunuz

 if (TakeProfit > 0 ) btp = Ask + (TakeProfit * Point ());}
else {btp = 0 ;}

{ } kullanmazsan

 if (TakeProfit > 0 ) btp = Ask + (TakeProfit * Point ()); else btp = 0 ;
 

2133 şaka gibi


 
Igor Makanu :

Pico stilini kullanın, aradığınız şeye çok benzer

ancak { } kullanırsanız Pico stili if - else ifadesini 2 satıra böler

{ } kullandığınız kodunuz

{ } kullanmazsan

Evet !!! mevcut stillerin tam bir analizini yaptı ve PICO ve RATLIFF'i seçti

PIKO en kompakt olanıdır.

RATLIFF en akıllısıdır.

Ama METAQUOTES'in yıllardır kullanılan bir üslubu değiştirmesi çok saçma. Bu, tüm kullanıcıların hayatını alt üst eder. Sorumsuz değişim. Birkaç ay önce tarzlarında bir şeyleri mahvetmiştim, küçük değişikliklere rağmen hareket etmenin yanlış olduğunu düşünmüştüm ama şimdi çuvalladılar.

 
Vladimir Pastushak :

2133 uma piada


Evet !!! beta olduğunu biliyoruz, ancak eski sürümlerde bir şey doğruysa ve şimdi betada değiştiyse, büyük olasılıkla bu değişikliklerle birliktedir. Her şeyin yolunda gittiğinden emin olmak için şimdi şikayet etsen iyi olur

 
METAQUOTES'in kabul etmesini istediğim iki öneri var.
1) CTRL-F4'ü kullanırken gereksiz çizelgelerle birlikte kullanımda olan çizelgenin kapanmasını önlemek için çizelge üzerinde bir kilit ayarlayın.

2) Kullanıcının bulut ağında kullanılacak çekirdek sayısını tanımlamasına izin verin. Örneğin: Sunucularımda zaten bulunan 100 çekirdeğin yanı sıra optimizasyona yardımcı olmak ve hızlandırmak için CLOUD NETWORK'te kullanımı 50 çekirdekle sınırlayabilirim. Bu şekilde bir veya iki sunucu daha satın almak zorunda kalmam.

Şu anda CLOUD NETWORK'ü kullanamıyorum çünkü sunucularımı işe yaramaz hale getiriyor ve optimizasyon değeri yükseliyor.
 
Üçüncü taraf bir yapılandırmayla test etmeye başladıktan sonra varsayılan yapılandırma sıfırlanır. Terminali normal şekilde başlatırken herhangi bir test ayarı yoktur.
 
MetaQuotes Software Corp. :

Bu durumda belgeler eskidir.

Şimdi, verimlilik adına, satırlar, çoğu durumda sonraki işlemler tarafından artırıldığından, istenenden daha fazla önceden tahsis edilmiştir.

Bu artık açık.
Ancak dizenin uzunluğunu nasıl değiştirirsem değiştireyim, StringBufferLen'in sonucu her zaman 260 olarak kalır.

 string str; 
StringInit (str, 1 , '_' ); 
Print ( "str = " , str); 
Print ( "str = " , str, ": StringBufferLen(str) = " , StringBufferLen (str));
 2019.09 . 03 03 : 30 : 47.490 Test    str = _
2019.09 . 03 03 : 30 : 47.490 Test    str = _: StringBufferLen (str) = 260


string str; 
StringInit (str, 100 , '_' ); 
Print ( "str = " ,str); 
Print ( "str = " ,str, ": StringBufferLen(str) = " , StringBufferLen (str));
 2019.09 . 03 03 : 32 : 57.789 Test    str = ____________________________________________________________________________________________________
2019.09 . 03 03 : 32 : 57.789 Test    str = ____________________________________________________________________________________________________: StringBufferLen (str) = 260
 
MetaQuotes Software Corp. :

Bu durumda belgeler eskidir.

Şimdi, verimlilik adına, satırlar, çoğu durumda sonraki işlemlerle artırıldığından, istenenden daha fazla önceden tahsis edilmiştir.

bu durumda mı

 void OnStart () 
{ 
         string s1; 
         StringInit (s1, 100 , '_' ); 
         const string s2 = s1;
         Print ( StringBufferLen ( s2 ));
}

s2 gelecekte artabilir mi?

Sonuç: 260

Beklenen: 100 veya 0

 

Teste StringLen eklendi ve dize farklı şekilde başlatıldı .
Belgeleme bir şeydir, aslında tamamen farklı bir davranıştır.
Ve bu durumda arabellek 260'ı değil 0'ı gösterir.
Genel olarak veya problemin dizelerinin başlatılmasıyla. Veya StringBufferLen hataları.

 string str = "_"; 

 Print ("str = ", str);
 Print ("str = ", str, ": StringBufferLen (str) = ", StringBufferLen (str), " StringLen (str) = ", StringLen (str)); 
   
 str = "__________";  

 Print ("str = ", str, ": StringBufferLen (str) = ", StringBufferLen (str), " StringLen (str) = ", StringLen (str));
 2019.09 . 03 03 : 55 : 45.145 Test    str = _
2019.09 . 03 03 : 55 : 45.145 Test    str = _: StringBufferLen (str) = 0 StringLen (str) = 1
2019.09 . 03 03 : 55 : 45.145 Test    str = __________: StringBufferLen (str) = 0 StringLen (str) = 10