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

 

물론 다음 구매를 열 때 모든 위치에 대해 즉시 양도합니다 ( StopLoss 는 평균 가격 + 50포인트와 동일) .

여기서 그는 때때로 악당이며 최후의 자리를 차지하지 않습니다. 4개의 자리가 3개 열렸습니다. 3개의 StopLoss가 이동되었고 네 번째에 베팅하는 것을 잊었습니다.

아이디어에 따르면 DedZone은 다음과 같이 유지되어야 합니다.

StopLevel = (MarketInfo( Symbol (), MODE_STOPLEVEL)* Point );       // текущий уровень стопов
FreezeLevel = (MarketInfo( Symbol (), MODE_FREEZELEVEL)* Point );         // уровень заморозки
DedZone = MathMax (StopLevel,FreezeLevel);               // Зона запрета розмещения ордеров

DedZone의 계산은 Expert Advisor의 초기화에 있습니다.

 
Limita :

물론 다음 구매를 열 때 모든 위치에 대해 즉시 양도합니다 ( StopLoss 는 평균 가격 + 50포인트와 동일) .

여기서 그는 때때로 악당이며 최후의 자리를 차지하지 않습니다. 4개의 자리가 3개 열렸습니다. 3개의 StopLoss가 이동되었고 네 번째에 베팅하는 것을 잊었습니다.

아이디어에 따르면 DedZone은 다음과 같이 유지되어야 합니다.

DedZone의 계산은 Expert Advisor의 초기화에 있습니다.

StopLevel = (MarketInfo( Symbol (), MODE_STOPLEVEL)* Point );       // текущий уровень стопов
FreezeLevel = (MarketInfo( Symbol (), MODE_FREEZELEVEL)* Point );         // уровень заморозки
DedZone = MathMax (StopLevel,FreezeLevel);               // Зона запрета розмещения ордеров

그리고 저것과 저것이 둘 다 0일 때, 그러면 어떻게 될까요? Alpari에서는 이 경우 스프레드 * 2를 사용합니다.

그리고 당신은 그 라인의 논리에 대한 내 질문에 대답하지 않았습니다.

 
ALXIMIKS :

열거는 다음과 같이 수행하는 것이 더 좋습니다(누군가가 주문을 수정하거나 삭제할 때 열거 옵션에 문제가 있다고 썼습니다).

그리고 왜 오일 버터??? (한 가지만 남겨주세요)


고맙습니다!

전문가와 상담하는 것 같습니다 :)

 
artmedia70 :

그리고 당신은 그 라인의 논리에 대한 내 질문에 대답하지 않았습니다.


아트미디어70 :

조언자 행동의 전체 논리는 조건에 따라 실행되거나 실행되지 않는 논리 블록으로 나눌 수 있습니다.

지금은 그러한 블록이 중괄호로 묶인 여러 줄일 수 있다는 점을 이해하십시오.

If ( condition ) {조건이 true이면 이 괄호로 묶인 블록이 실행됩니다.}

그렇지 않으면 {위 의 조건 이 true가 아닌 경우 이 대괄호로 묶인 블록이 실행됩니다.}

조건 뒤에 중괄호가 없으면 조건이 참일 때 실행되는 블록은 조건 바로 다음에 오는 유일한 행이 됩니다.

If ( condition ) 이 줄이 참

Else 이 행을 실행합니다.

내 예에서 If 는 if이고 Else는 else입니다 .

여기에서 찍은

 
artmedia70 :

그리고 저것과 저것이 둘 다 0일 때, 그러면 어떻게 될까요? Alpari에서는 이 경우 스프레드 * 2를 사용합니다.

그리고 당신은 그 라인의 논리에 대한 내 질문에 대답하지 않았습니다.



Alpari에 대한 정보를 주셔서 감사합니다.

선의 논리에 대해 ALXIMIKS가 대답했습니다.

나는 이 경우 모든 조건이 참인 경우에만 수정이 이루어져야 한다고 덧붙일 것입니다. 하나라도 빠지면 계속 진행합니다.

 
Limita :


Alpari에 대한 정보를 주셔서 감사합니다.

선의 논리에 대해 ALXIMIKS가 대답했습니다.

나는 이 경우 모든 조건이 참인 경우에만 수정이 이루어져야 한다고 덧붙일 것입니다. 하나라도 빠지면 계속 진행합니다.

어째서인지 그는 누군가에게 한 번 쓰여진 내 자신의 말을 보여주었습니다.

나는 또한 당신이 논리에 대한 질문에 대한 답을 얻기를 원했습니다. 해당 코드 블록에 모든 if()가 차례로 있습니다. 그리고 이것은 첫 번째 조건이 참이면 두 번째 조건도 참이 되고, 두 번째 조건이 참이면 세 번째 조건도 참이 되는 식입니다. 하지만 ... 첫 번째 조건이 참이 아니면 두 번째는 사실이 아니지만 세 번째는 다시 확인됩니다.

아마도 다음과 같을 수 있지만 여전히 다음이 필요합니다.

 bool ProfitManagement() {
   double StopLossBuy = BuyAP+Profit* Point ;                             //Вычисляем StopLoss
   double TakeProfitBuy = BuyAP + Profit* Point ;                   //Вычисляем цену TakeProfit
   double StopLossSell = SellAP-Profit* Point ;
   double TakeProfitSell = SellAP - Profit* Point ;
   RefreshRates();
   for ( int good = 0 ; good < OrdersTotal (); good ++) {
       if ( OrderSelect (good, SELECT_BY_POS)) {            
         if (OrderMagicNumber()!=MagicNumber)   continue ;
         if (OrderSymbol()!= Symbol ())           continue ;
//-------------------------Order Buy-----------------------------------------------------  
         if (OrderType()==OP_BUY) {                             
             if (BuyAP < Bid) { 
               if ( MathAbs (OrderStopLoss() - StopLossBuy) >= Tick) { // Профит не равен нужному
                   if (Bid-StopLossBuy>DedZone) {                     // Уровень достаточно удален от цены
                     if (WaitForTradeContext()) {                     // Свободен ли торговый поток?
                         if (!OrderModify(OrderTicket(), 0 , NP(StopLossBuy), 0 , 0 , Lime)) {
                           Alert ( Symbol (), " Хрень со стопами! " ,   GetLastError ());
                           return ( false );
                           }
                        }
                     }
                  }
               }
            }
//-------------------------Order Buy-----------------------------------------------------  
         if (OrderType()==OP_SELL) {                             
             // вся та же хрень...
            }
//-------------------------Order Buy-----------------------------------------------------  
         }
      }
   return ( true );
}

이것들은 단지 내 추측일 뿐입니다. 왜냐하면 저는 모든 것이 어떤 논리로 여러분 안에서 생각되는지 전혀 모르고 일부 변수와 함수가 무엇을 하고 포함/반환하는지 모르기 때문입니다.

 
artmedia70 :

1) 어째서인지 그는 누군가에게 한 번 쓴 내 자신의 말을 보여주었습니다.

2) 논리에 대한 질문에 대한 답변을 듣고 싶었습니다. 해당 코드 블록에 모든 if()가 차례로 있습니다. 그리고 이것은 첫 번째 조건이 참이면 두 번째 조건도 참이 되고, 두 번째 조건이 참이면 세 번째 조건도 참이 되는 식입니다. 하지만 ... 첫 번째 조건이 참이 아니면 두 번째는 사실이 아니지만 세 번째는 다시 확인됩니다.

1) 그것은 당신뿐만 아니라 모든 사람을 위한 것이었습니다.

2) 며칠 전에 이미 이 진술을 한 적이 있지만 귀하를 위해 이 정보를 다시 확인하는 것을 잊었습니다.

이제 간단한 스크립트를 만들었습니다.

 int start(){
 if ( 3 > 3 )
 if ( 5 > 3 )
 if ( 5 > 3 ){ Alert ( "AAAAAAAAAAAAAAAAAAAAAAA" );}
} 

그리고 그것은 당신이 틀렸다는 것이 밝혀졌습니다. 경고가 없을 것입니다 !!!

 
ALXIMIKS :

1) 그것은 당신뿐만 아니라 모든 사람을 위한 것이었습니다.

2) 며칠 전에 이미 이 진술을 한 적이 있지만 귀하를 위해 이 정보를 다시 확인하는 것을 잊었습니다.

이제 간단한 스크립트를 만들었습니다.

그리고 그것은 당신이 틀렸다는 것이 밝혀졌습니다. 경고가 없을 것입니다 !!!

 int start(){
 if ( 3 > 3 )
 if ( 5 > 3 )
 if ( 5 > 3 ){ Alert ( "AAAAAAAAAAAAAAAAAAAAAAA" );}
} 

글쎄, 나는 동의한다. 이 경우 중괄호가 없는 중첩 조건에서 실행되는 내용과 방법에 대해 이전에 작성하여 흥분했습니다. 이 상황에서는 당신이 옳습니다. 왜 그런지 아세요?

그리고 코드에서 else 실행을 시도하십시오.

 
artmedia70 :

글쎄, 나는 동의한다. 이 경우 중괄호가 없는 중첩 조건에서 실행되는 내용과 방법에 대해 이전에 작성하여 흥분했습니다. 이 상황에서는 당신이 옳습니다. 왜 그런지 아세요?

그리고 코드에서 else 실행을 시도하십시오.


 int start(){
 int a= 0 ;
 if ( 3 > 3 )
 if ( 5 > 3 )
 if ( 5 > 3 ){ Alert ( "AAAAAAAAAAAAAAAAAAAAAAA" ); a= 5 ;}
 else Alert ( "a=" , a);
}

이 스크립트의 경고도 없습니다. Else는 " if ( 5 > 3 ){ Alert ( "AAAAAAAAAAAAAAAAAAAAA" ); a= 5 ;} " 조건을 나타냅니다.

확인 사항:

 int start(){
 int a= 0 ;
 if ( 5 > 3 )
 if ( 5 > 3 )
 if ( 3 > 3 ){ Alert ( "AAAAAAAAAAAAAAAAAAAAAAA" ); a= 5 ;}
 else Alert ( "a=" , a);
}

경고: "а=0"이 있습니다.

결과적으로 조건 실패 처리는 특정 조건 집합을 열거하는 동안 중괄호 "{"가 사용되지 않는 경우 마지막 조건에 대해서만 가능합니다.

 
ALXIMIKS :

이 스크립트의 경고도 없습니다. Else는 " if ( 5 > 3 ){ Alert ( "AAAAAAAAAAAAAAAAAAAAA" ); a= 5 ;} " 조건을 나타냅니다.

확인 사항:

경고: "а=0"이 있습니다.

결과적으로 조건 실패 처리는 특정 조건 집합을 열거하는 동안 중괄호 "{"가 사용되지 않는 경우 마지막 조건에 대해서만 가능합니다.


즉, 논리적 분기를 구성하려면 대괄호가 필요합니다. 그것들이 없으면 첫 번째 조건이 필수적입니다. 그것이 사실이 아니라면 나머지 조건은 충족되지 않습니다.

여기에서 알아내십시오.

 if (a>b)
     if (b>c) 
         Alert ( " условие if (a>b && b>c) выполнено " );
if (d>e) 
     if (e>f) 
         Alert ( " условие if (d>e && e>f) выполнено" );

그런 다음 다른 것이 무엇을 의미하는지 알아내십시오.

 if (a>b)
     if (b>c) 
         Alert ( " условие if (a>b && b>c) выполнено " );
else if (d>e) 
     if (e>f) 
         Alert ( " условие if (d>e && e>f) выполнено" );