초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 91

 
Jenya77769 :

안녕하세요! 두 개의 빼기 s x 숫자 q와 w 를 잘못 비교하여 같을 때 if 연산자는 하나가 다른 것보다 더 큰 것으로 간주합니다. 오류가 무엇입니까? q = -0.0002이고 w도 -0.0002이면 res12=false입니다. 그 이유는 무엇입니까?

왜냐하면 그것은 이중이고 정확히 같지 않기 때문입니다.

CURVED METHOD: 정규화된 값 비교

 
Jenya77769 :

안녕하세요! 두 개의 빼기 s x 숫자 q와 w 를 잘못 비교하여 같을 때 if 연산자는 하나가 다른 것보다 더 큰 것으로 간주합니다. 오류가 무엇입니까? q = -0.0002이고 w도 -0.0002이면 res12=false입니다. 그 이유는 무엇입니까?


그들의 차이를 0과 비교하십시오. 이것이 더 정확하고 모든 유형의 숫자에 대해 작동합니다.

 

여러분, 그런 질문이 있습니다.

하루 길이의 수평선 이 있습니다.

텍스트 레이블, 레이블 개체가 있습니다.

차트 확대/축소와 함께 이 텍스트 레이블이 항상 선의 중간(낮에)에 있도록 하는 방법은 무엇입니까?

 
John Smith :

여러분, 그런 질문이 있습니다.

하루 동안 수평선 이 있습니다.

텍스트 레이블, 레이블 개체가 있습니다.

차트 확대/축소와 함께 이 텍스트 레이블이 항상 선의 중간(낮에)에 있도록 하는 방법은 무엇입니까?

X축을 따라 레이블의 좌표를 변경합니다. 선의 중점으로 계산
 
Renat Akhtyamov :
X축을 따라 레이블의 좌표를 변경합니다. 선의 중점으로 계산

글쎄, 이것은 이해할 수 있지만 어떻게해야합니까?


또한 두 번째 옵션이 있습니다. 레이블이 하루의 시작과 연결되어 있고, 차트 확대/축소에 따라 레이블 값 앞에 공백을 삽입하기 위해 텍스트 변수를 사용합니다.

사실 가까이 확대하면 레이블이 왼쪽에 있고 축소하면 레이블이 가운데로 이동해야 합니다. MT4의 줌 레벨은 표준이므로 각 줌 레벨에 필요한 공간 수를 선택하는 것은 그리 어렵지 않습니다. 그러나 여기에 질문이 있습니다. mql4에 현재 차트 확대/축소 수준을 결정하는 기능이 있습니까?

그러면 모든 것이 간단해집니다. "if chartzoom = 50% then spacenumber = 10" 등입니다.

여기서 spacenumber는 __________1.23456과 같이 레이블 텍스트 앞의 공백 수를 지정하는 문자열 변수 입니다. _ 기호가 있는 공백이 10개 있습니다.

 
John Smith :

글쎄, 이것은 이해할 수 있지만 어떻게해야합니까?


또한 두 번째 옵션이 있습니다. 레이블이 하루의 시작과 연결되어 있고, 차트 확대/축소에 따라 레이블 값 앞에 공백을 삽입하기 위해 텍스트 변수를 사용합니다.

사실 가까이 확대하면 레이블이 왼쪽에 있고 축소하면 레이블이 가운데로 이동해야 합니다. MT4의 줌 레벨은 표준이므로 각 줌 레벨에 필요한 공간 수를 선택하는 것은 그리 어렵지 않습니다. 그러나 여기에 질문이 있습니다. mql4에 현재 차트 확대/축소 수준을 결정하는 기능이 있습니까?

그러면 모든 것이 간단해집니다. "if chartzoom = 50% then spacenumber = 10" 등입니다.

여기서 spacenumber는 __________1.23456과 같이 레이블 텍스트 앞의 공백 수를 지정하는 문자열 변수 입니다. _ 기호가 있는 공백이 10개 있습니다.

여기에서 내 의견을 읽으 십시오
 

안녕하세요! 다시 도움이 필요합니다. 무엇이 잘못되었는지 알 수 없습니다. 다시 트롤. MA에 트롤. 여러 주문을 추적해야 합니다. 락이 있을 수 있습니다. 하나의 열린 주문이 있는 한 모든 것이 완벽하게 작동합니다. 다른 것이 배치되는 즉시 난교가 시작됩니다. 첫 번째 순서의 지속적인 수정(동일한 매개변수 사용)(오류 1을 작성하지 않음)입니다. 동시에 두 번째 순서는 적절한 조건에서 수정되어야 합니다(첫 번째 순서는 조건이 변경되면 매개변수를 변경하고 새 매개변수로 계속 수정). 저도 이유를 못 찾겠습니다. 누가 말할 것인가?

 void TrailingStop()
{
   int i;
   int k          = OrdersTotal (); 
   double Ma      = iAlligator ( NULL , 0 , 13 , 8 , 8 , 5 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN , MODE_GATORLIPS , 1 ); 
   int MinDistans = int ( MarketInfo ( Symbol (), MODE_STOPLEVEL ));
   
   double lips1  = iAlligator ( NULL , 0 , 13 , 8 , 8 , 5 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN , MODE_GATORLIPS , 1 ); 
   double lips2  = iAlligator ( NULL , 0 , 13 , 8 , 8 , 5 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN , MODE_GATORLIPS , 2 );
   double teeth1 = iAlligator ( NULL , 0 , 13 , 8 , 8 , 5 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN , MODE_GATORTEETH , 1 );
   double teeth2 = iAlligator ( NULL , 0 , 13 , 8 , 8 , 5 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN , MODE_GATORTEETH , 2 );
   double jaw1   = iAlligator ( NULL , 0 , 13 , 8 , 8 , 5 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN , MODE_GATORJAW , 1 );
   double jaw2   = iAlligator ( NULL , 0 , 13 , 8 , 8 , 5 , 5 , 3 , MODE_SMMA , PRICE_MEDIAN , MODE_GATORJAW , 2 );
   
   for (i = 0 ; i < k; i++)
   {
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
      {
         if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic)
         {
             if ( OrderType () == OP_BUY )
            {
               if (lips2 < teeth2 && teeth2 < jaw2 && lips1 < teeth1 && teeth1 < jaw1)
                   break ;
               
               if (lips2 > teeth2 && teeth2 > jaw2 && lips1 > teeth1 && teeth1 > jaw1)
               {   
                   if (( OrderStopLoss () + TrailingStep* Point ) < Ma)
                  {
                     double Sl = NormalizeDouble (Ma, Digits );                 
                     
                     if (( Bid - MinDistans) > Sl && ( OrderStopLoss () + TrailingStep* Point ) < Sl)
                     { 
                        OrderModifyX( OrderTicket (), OrderOpenPrice (), Sl, OrderTakeProfit (), OrderExpiration (), 0 );
                     }
                  }
               }
            }
         }
      }     
 
       if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))  
      {
         if ( OrderSymbol () == Symbol () && OrderMagicNumber () == Magic)
         {
             if ( OrderType () == OP_SELL )
            {
               if (lips2 > teeth2 && teeth2 > jaw2 && lips1 > teeth1 && teeth1 > jaw1)
                   break ;
                  
               if (lips2 < teeth2 && teeth2 < jaw2 && lips1 < teeth1 && teeth1 < jaw1)
               {
                   if ( MathAbs ( OrderStopLoss () - TrailingOpen* Point ) > Ma)
                  {
                     double Sl = NormalizeDouble (Ma, Digits );
                 
                     if (( Ask + MinDistans) < Sl && ( OrderStopLoss () - TrailingStep* Point ) > Sl)
                     {
                        OrderModifyX( OrderTicket (), OrderOpenPrice (), Sl, OrderTakeProfit (), OrderExpiration (), 0 );
                     }
                  }
               }
            }
         }
      }
   }
}



 
Youri Lazurenko :

안녕하세요! 다시 도움이 필요합니다. 무엇이 잘못되었는지 알 수 없습니다. 다시 트롤. MA에 트롤. 여러 주문을 추적해야 합니다. 락이 있을 수 있습니다. 하나의 열린 주문이 있는 한 모든 것이 완벽하게 작동합니다. 다른 것이 배치되는 즉시 난교가 시작됩니다. 첫 번째 순서의 지속적인 수정(동일한 매개변수 사용)(오류 1을 작성하지 않음)입니다. 동시에 두 번째 순서는 적절한 조건에서 수정되어야 합니다(첫 번째 순서는 조건이 변경되면 매개변수를 변경하고 새 매개변수로 계속 수정). 저도 이유를 못 찾겠습니다. 누가 말할 것인가?


1. 주기를 반대로 해야 합니다.

2. 왜 휴식을 취합니까?

 
Artyom Trishkin :

1. 주기를 반대로 해야 합니다.

2. 왜 휴식을 취합니까?


안녕하세요.

1 - "반전이 되어야 합니다." - for(i = k; i > 0; i--)를 의미합니까?

2. "왜 끊어?" - 떠나다. 일반적으로 처음 에는 주문의 종류를 선택한 후 추세에 어긋나면 중단합니다. 그런 다음 주문 유형을 다시 선택하고 추세를 따르는 경우 수정합니다.

break가 있는 이 옵션은 그 전에 저를 도왔습니다. MA 후행 계정에 대한 솔루션을 묻는 메시지가 표시되면. 예를 들어 매수 시 스톱이 MA 위에 있는 것으로 판명되면 MA가 스톱 위에 있을 때까지 오류 1을 제공하고 그 후에 오류가 사라집니다. 내가 스톱이 MA 위에 있으면 중단되면 모든 것이 정상으로 돌아온다는 조건을 도입했습니다.

 
Youri Lazurenko :

안녕하세요.

1 - "반전이 되어야 합니다." - for(i = k; i > 0; i--)를 의미합니까?

2. "왜 끊어?" - 떠나다. 일반적으로 처음 에는 주문의 종류를 선택한 후 추세에 어긋나면 중단합니다. 그런 다음 주문 유형을 다시 선택하고 추세를 따르는 경우 수정합니다.

break가 있는 이 옵션은 그 전에 저를 도왔습니다. MA 후행 계정에 대한 솔루션을 묻는 메시지가 표시되면. 예를 들어 매수 시 스톱이 MA 위에 있는 것으로 판명되면 MA가 스톱 위에 있을 때까지 오류 1을 제공하고 그 후에 오류가 사라집니다. 내가 스톱이 MA 위에 있으면 중단되면 모든 것이 정상으로 돌아온다는 조건을 도입했습니다.

break는 루프를 완전히 종료합니다. 그러나 나머지 직책은 어떻습니까?
정류장이 새 레벨에 상대적인 위치를 확인하십시오.
OrdersTotal()-1에서 >=0으로 루프 반전