MetaTrader 5 빌드 2121: 전략 테스터의 새로운 디자인 - 페이지 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);
     }
  }

이전 METAQUOTES 스타일을 다시 가져오거나 최소한 같은 줄에 작성된 코드의 형식이 지정되지 않았는지 확인하세요.

예시:

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

       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 :

이전 METAQUOTES 스타일을 다시 가져오거나 최소한 같은 줄에 작성된 코드의 형식이 지정되지 않았는지 확인하세요.

Pico 스타일을 사용하면 찾고 있는 것과 매우 유사합니다.

하지만 Pico 스타일은 { }를 사용하는 경우 if - else 문을 2줄로 분할합니다.

{ }를 사용하는 코드

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

{ }를 사용하지 않는 경우

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

2133은 농담이야


 
Igor Makanu :

Pico 스타일을 사용하면 찾고 있는 것과 매우 유사합니다.

하지만 Pico 스타일은 { }를 사용하는 경우 if - else 문을 2줄로 분할합니다.

{ }를 사용하는 코드

{ }를 사용하지 않는 경우

예 !!! 사용 가능한 스타일에 대한 전체 분석을 수행하고 PICO 및 RATLIFF를 선택했습니다.

PIKO는 가장 컴팩트합니다.

RATLIFF는 가장 똑똑합니다.

하지만 METAQUOTES가 수년간 사용하던 스타일을 바꾸는 것은 어처구니가 없습니다. 이것은 모든 사용자의 삶을 방해합니다. 무책임한 변화. 몇 달 전에 나는 그들의 스타일에서 뭔가를 망쳤고, 작은 변화에도 불구하고 움직이는 것이 잘못된 것이라고 생각했지만 지금은 망쳤습니다.

 
Vladimir Pastushak :

2133 우마피아다


예 !!! 베타 버전이라는 것을 알고 있지만 이전 버전에서 사실이었으며 현재 베타 버전에서 변경된 사항이 있다면 해당 변경 사항일 가능성이 큽니다. 모든 것이 올바르게 진행되도록 지금 불평하는 것이 좋습니다.

 
METAQUOTES가 수락하기를 바라는 두 가지 제안이 있습니다.
1) CTRL-F4 사용시 불필요한 차트와 함께 사용중인 차트가 닫히지 않도록 차트에 잠금을 설정합니다.

2) 사용자가 클라우드 네트워크 에서 사용할 코어 수를 정의할 수 있습니다. 예: CLOUD NETWORK에서 사용을 50개 코어로 제한하여 이미 서버에 있는 100개 코어와 함께 최적화를 돕고 속도를 높일 수 있습니다. 그렇게 하면 다른 서버나 두 대를 구입할 필요가 없습니다.

현재 저는 CLOUD NETWORK를 사용할 수 없습니다. 왜냐하면 제 서버를 쓸모없게 만들고 최적화 값이 높아지기 때문입니다.
 
타사 구성으로 테스트를 시작한 후 기본 구성이 재설정됩니다. 터미널을 정상적으로 시작할 때 테스트 설정이 없습니다.
 
MetaQuotes Software Corp. :

이 경우 문서가 오래되었습니다.

이제 효율성을 위해 요청된 것보다 더 많이 행이 사전 할당됩니다. 대부분의 경우 후속 작업에 의해 행이 증가하기 때문입니다.

이제 명확해졌습니다.
그러나 string 의 길이를 어떻게 변경하든 StringBufferLen 의 결과는 항상 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. :

이 경우 문서가 오래되었습니다.

이제 효율성을 위해 요청된 것보다 더 많이 행이 사전 할당됩니다. 대부분의 경우 후속 작업에 의해 행이 증가하기 때문입니다.

이 경우인가

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

s2는 미래에 증가할 수 있습니까?

결과: 260

예상: 100 또는 0

 

테스트에 StringLen을 추가 하고 문자열을 다르게 초기화했습니다 .
문서화는 사실 완전히 다른 동작입니다.
그리고 이 경우 버퍼는 260이 아니라 0을 보여줍니다.
일반적으로 또는 문제의 문자열 초기화와 함께. 또는 StringBufferLen 버그.

 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