포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 456

 
Zver4991 :

테스트의 품질을 결정하는 요소와 이를 최대로 개선하는 방법은 무엇입니까?

99% 시뮬레이션 품질 로 EA를 테스트하는 방법은 이 사이트를 참조하십시오.

http://tradelikeapro.ru/kak-poluchit-kachestvo-modelirovaniya-99/

 
Zhunko :
이것은 BOOL 유형을 위한 것입니다. 저것들. 이전 버전의 MQL4에서 bool용. 단일 바이트 bool의 경우에는 그렇지 않습니다. 값이 0보다 크면 오버플로가 발생합니다.

왜 그랬는지 궁금하다

   bool b= 2 ;

오류나 경고 없이 컴파일됩니까?

 
artmedia70 :

왜 그랬는지 궁금하다

 bool b= 2 ;
오류나 경고 없이 컴파일됩니까?

아마도 할당 연산자가 bool 유형에 대해 오버로드된 것 같습니다. 오버플로를 감시하고 1보다 크면 true를 할당하고 반환합니다.

경고 수준 4 경고는 논리 표현식에 일부 비논리 유형을 삽입하려고 할 때 스튜디오에 자주 나타납니다. 산술 연산 에서 부울 유형을 사용할 때 또는 그 반대의 경우도 마찬가지입니다.

 
Zhunko :

아마도 할당 연산자가 bool 유형에 대해 오버로드된 것 같습니다. 오버플로를 감시하고 1보다 크면 true를 할당하고 반환합니다.

경고 수준 4 경고는 논리 표현식에 일부 비논리 유형을 삽입하려고 할 때 스튜디오에 자주 나타납니다. 산술 연산에서 논리 유형을 사용할 때 또는 그 반대의 경우도 마찬가지입니다.

이라면 더 논리적일 것이다.

 #property strict

경고를 발행하고 이전 버전과 같이 둡니다.

 
artmedia70 :

완전히 사실은 아니지만 요지는 사실입니다.

그러나 일반적으로: 0은 거짓이고 0이 아닌 다른 값은 참입니다.

기본값에 의존하지 않고 인터넷에서 변수를 boolean으로 변경한 후 사용합니다.
 

글쎄요, 저는 프로그래머가 아닙니다...

계정 번호 1 - 최소 로트가 0.01이고 단계가 0.01인 5 기호 가 있습니다(빌드 584). 계좌 번호 2 - 4는 0.1의 최소 로트와 0.1의 로트 단계(빌드 584) 및 계좌 번호 3, 2번과 정확히 동일하며 터미널 빌드 509만 있는 기호입니다.

그리고 손절매 흔적이 있습니다:

 void manageStops()
{ 
   string trailSymbol= Symbol ();  
   for ( int i = OrdersTotal ()- 1 ; i >= 0 ; i-- ) 
   {
       if ( OrderSelect ( i, SELECT_BY_POS ) == true ) 
      {  
         int trailOrderType = OrderType (); 
         if ( OrderSymbol () != trailSymbol || trailOrderType > 1 || OrderProfit () < 0 ) continue ; 
         double trailStopLoss = OrderStopLoss ();   
         while ( true ) {
             double trailStop = TrailingStop; 
             int trailDistance = MarketInfo ( trailSymbol, MODE_STOPLEVEL ); 
             if ( trailStop < trailDistance ) trailStop = trailStop+trailDistance;  
             bool modifyTrailingStop = false ;  
             switch ( trailOrderType ) 
            {
               case 0 : 
                   if (trailStopLoss < ( Bid - (TrailingStop+TrailingStep) * pipPoints)) 
                  {
                     trailStopLoss = NormalizeDouble ( Bid - TrailingStop * pipPoints,digits);   
                     modifyTrailingStop = true ;       
                  }
                   break ;    
               case 1 :                      
                   if (trailStopLoss > ( Ask + (TrailingStop+TrailingStep) * pipPoints)) 
                  {
                     trailStopLoss = NormalizeDouble ( Ask + TrailingStop * pipPoints,digits);             
                     modifyTrailingStop = true ;             
                  }
               }                               
             if ( modifyTrailingStop == false ) break ;                       
             double trailTakeProfit = OrderTakeProfit (); 
             double trailPrice = OrderOpenPrice ();  
             int trailTicket = OrderTicket ();   
            if ( ( OrderType () == OP_BUY && trailStopLoss > trailPrice && trailStopLoss < OrderOpenPrice () + ( MaxStop * pipPoints ) ) 
                  || ( OrderType () == OP_SELL && trailStopLoss < trailPrice && trailStopLoss > OrderOpenPrice () - ( MaxStop * pipPoints ) ) )

             OrderModify ( trailTicket, trailPrice, trailStopLoss, trailTakeProfit, 0 );
             break ; 
           } 
        }  
     }  
   return ;   
} 

1번 계좌에서는 손절매가 정상적으로 뒤따르는데 2번과 3번 계좌에서는 "오류 130"이 나오는 이유는 ??? 논리, 꼬임이 있지만 한 경우에는 작동합니다 ...

 
evillive :

글쎄요, 저는 프로그래머가 아닙니다...

계정 번호 1이 있습니다 - 최소 로트가 0.01이고 단계가 0.01(빌드 584)인 5개 기호가 있습니다. 계좌 번호 2 - 4는 0.1의 최소 로트와 0.1의 로트 단계(빌드 584) 및 계좌 번호 3, 2번과 정확히 동일하며 터미널 빌드 509만 있는 기호입니다.

그리고 손절매 흔적이 있습니다:

1번 계좌에서는 손절매가 정상적으로 뒤따르는데 2번과 3번 계좌에서는 "오류 130"이 나오는 이유는 ??? 논리, 꼬임이 있지만 한 경우에는 작동합니다 ...


질문 자체에서 문제가 5자리 또는 4자리 계정임을 알 수 있습니다. 나는 코드를 본다. pipPoint 변수는 어디에 정의되어 있으며 무엇과 같습니까? 문제는 거기에 있을 가능성이 큽니다.
 
pro_ :

질문 자체에서 문제가 5자리 또는 4자리 계정임을 알 수 있습니다. 나는 코드를 본다. pipPoint s 변수는 어디에 정의되어 있으며 무엇과 같습니까? 문제는 거기에 있을 가능성이 큽니다.

초기화에서 pipPoints = MarketInfo( Symbol() , MODE_POINT);

MaxStop 값을 올려서 트롤이 더 큰 단계로 변경되어야 할 것 같지만 1포인트 단계로 변경되지만 적어도 4자리에서 트롤을 시작하기 시작했습니다... 여전히 로직을 다시 해야 합니다. , 맞춤 단계가 필요합니다.

 
smdm :

안녕하세요!

질문은 다음입니다. 표시가 있습니다 Heiken Ashi Smoothed https://www.mql5.com/ru/code/7930

이 지표가 더 높은 기간(예: 30분 또는 매시간 차트)에서 계산되는 5분 차트에 첨부될 수 있도록 지표 코드를 변경해야 하는 것은 무엇입니까?

고맙습니다.


비슷한 질문에 - 지표를 주간 차트에서 H4 차트로 반영하는 방법. 나는 이미 여러 포럼에서 차임을 했습니다. 그리고 여기에서도, 그러나 아무것도 성취하지 못했고 그것을 찾지 못했습니다. 더 작은 것에 대한 코드에서 이전 TF의 크기를 규정하는 것보다 낫습니다. 아무도 알려주지 않습니다. 지표에 간단한 물류가 있고 계산을 위해 간단한 막대 계산을 사용하는 경우 가능합니다. h1의 코드와 화면을 자신만의 설명과 함께 스튜디오에 문자로 보낼 수 있다면.
 

따라서 표시기는 막대 중앙에서 가격이 마감되는 막대에 수직선을 그려야 합니다.....

 double close_price( int nomer_bara)
{
if (nomer_bara< 1 )
{
Alert ( "нельзя анализировать текущий бар" );
}
else
{
if ( iClose ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara)< iHigh ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara)/ 3 ) //возвращает 1/3 если цена текущего бара закрылась ниже 1/3 его спреда 
{
return ( 1 / 3 );
}
if ( iClose ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara)> iHigh ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara)/ 3 &&( iClose ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara)< iHigh ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara)* 2 )/ 3 ) //возвращает 2/3 если цена текущего бара закрылась ниже 2/3 и выше 1/3 его спреда 
{
return ( 2 / 3 );
}

if (( iClose ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara)>( iHigh ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara))* 2 )/ 3 && iClose ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara)< iHigh ( Symbol (), NULL ,nomer_bara)- iLow ( Symbol (), NULL ,nomer_bara)) //возвращает 1 если цена текущего бара закрылась выше 2/3 его спреда
{
return ( 1 );
}
}

}

 if (close_price( 1 )== 1 / 3 ) // в случае если цена закрылась внизу то нарисовать линию на этом баре
   {
 SetVLine(Red, "" , Time [ 1 ], STYLE_SOLID , 2 );
   }
и так вся проблема заключается в том что линия рисуется на каждом баре не пойму какого черта... помогите пожалуйста