MetaTrader 5 build 2121: Neues Design des Strategietesters - Seite 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);
     }
  }

Bitte bringen Sie den alten METAQUOTES-Stil zurück oder sorgen Sie zumindest dafür, dass die in einer Zeile geschriebenen Codes nicht formatiert werden.

Beispiel:

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

      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:

Bitte kehren Sie zum alten METAQUOTES-Stil zurück oder stellen Sie zumindest sicher, dass die in einer Zeile geschriebenen Codes nicht formatiert sind.

Verwenden Sie den Pico-Stil, er ist dem, was Sie suchen, sehr ähnlich.

aber der Pico-Stil teilt die if - else-Anweisung auf zwei Zeilen auf, wenn Sie { }

Ihr Code, in dem Sie { }

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

wenn nicht verwendet { }

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

2133 Hier ist ein Gimmick wie dieses


 
Igor Makanu:

Verwenden Sie den Pico-Stil, er ist dem, was Sie suchen, sehr ähnlich.

aber der Pico-Stil teilt die if - else-Anweisung in 2 Zeilen auf, wenn Sie { }

Ihr Code, in dem Sie { }

wenn nicht verwendet { }

Ja!!! hat eine vollständige Analyse der verfügbaren Modelle durchgeführt und sich für PICO und RATLIFF entschieden

PICO ist der kompakteste.

RATLIFF ist der Klügste.

Aber es ist absurd, dass METAQUOTES einen Stil ändern will, der seit Jahren verwendet wird. Sie würde das Leben aller Nutzer beeinträchtigen. Eine unverantwortliche Veränderung. Vor ein paar Monaten habe ich etwas über ihren Stil durcheinander gebracht, ich dachte, es wäre falsch, sich trotz der kleinen Änderungen zu bewegen, aber jetzt haben sie es durcheinander gebracht.

 
Vladimir Pastushak:

2133 uma piada


Ja!!! wir wissen, dass es sich um eine Betaversion handelt, aber wenn etwas in den alten Versionen korrekt war und sich jetzt in der Betaversion geändert hat, liegt es wahrscheinlich an diesen Änderungen. Besser, Sie beschweren sich jetzt, um sicherzustellen, dass alles richtig läuft

 
Es gibt zwei Vorschläge, die ich gerne von METAQUOTES übernehmen würde.
1) Setzen Sie eine Sperre auf das Diagramm, um zu verhindern, dass das verwendete Diagramm zusammen mit unnötigen Diagrammen geschlossen wird, wenn Sie CTRL-F4 verwenden.

2) Erlauben Sie dem Benutzer, die Anzahl der Kerne zu definieren, die im Cloud-Netzwerk verwendet werden sollen. Ein Beispiel: Ich könnte die Nutzung von CLOUD NETWORK auf 50 Kerne beschränken, um die Optimierungsgeschwindigkeit zusammen mit den 100 Kernen, die ich bereits auf meinen Servern habe, zu erhöhen. Auf diese Weise müsste ich nicht einen oder zwei weitere Server kaufen.

Derzeit kann ich CLOUD NETWORK nicht verwenden, weil es meine Server unbrauchbar macht und der Wert der Optimierung hoch wird.
 
Nach der Durchführung eines Tests mit einer Fremdkonfiguration wird die Standardkonfiguration zurückgesetzt. Beim normalen Start des Terminals gibt es keine Testeinstellungen.
 
MetaQuotes Software Corp.:

Die Dokumentation ist in diesem Fall veraltet.

Aus Gründen der Effizienz werden Zeichenketten nun größer als angefordert vorbelegt, da sie in den allermeisten Fällen durch nachfolgende Operationen vergrößert werden.

Das ist jetzt klar.
Aber egal, wie ich die Stringlänge ändere, das Ergebnis von StringBufferLen bleibt immer 260.

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.:

Die Dokumentation ist in diesem Fall veraltet.

Aus Gründen der Effizienz werden die Zeichenketten nun größer als angefordert vorbelegt, da sie in den allermeisten Fällen durch nachfolgende Operationen inkrementiert werden.

Ist es in diesem Fall möglich

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

s2 in Zukunft steigen kann?

Ergebnis: 260

Erwartet: 100 oder 0.

 

Ich habe StringLen zu dem Test hinzugefügt und die Zeichenfolge anders initialisiert.
In der Dokumentation ist es eine Sache, aber in Wirklichkeit verhält es sich anders.
Und der Puffer zeigt in diesem Fall 0 statt 260 an.
Es gibt also entweder ein Problem mit der Initialisierung der Zeichenkette. Oder StringBufferLen ist fehlerhaft.

 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