[아카이브!] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 2. - 페이지 484

 

잘못된 매개변수가 거래 기능에 전달되었습니다(예: 잘못된 기호, 인식할 수 없는 거래 , 음수 가격 허용 오차, 존재하지 않는 티켓 번호 등). 프로그램의 논리를 변경할 필요가 있습니다.


두 번째 매개변수를 0 대신 OrderOpenPrice()로 설정해 보십시오.

 
sergeev :

오류가 발생했을 때 관련될 수 있는 모든 매개변수를 인쇄하는 습관을 들이십시오.

if (!OrderModify(...)) { Print(GetlastError()+.... 매개변수 목록 OrderModify ); }



네, 좋은 습관입니다. 감사해요.)))

해외 거래소 2011년 7월 3일 18:35

두 번째 매개변수를 0 대신 OrderOpenPrice()로 설정해 보십시오.

네 맞습니다. )) 그리고 어떤 이유로 수정할 필요가 없는 매개변수를 설정하는 것은 불가능하다고 확신했습니다. 이렇게 하면 또 다른 오류가 발생하기 때문입니다. 내가 말하는 것과 비슷한 것이 있습니까?

다음과 같은 것이 내 머리에 있습니다.

함수는 매개변수를 동일한 값으로 변경하려고 합니다.

 
tol64 :


그리고 어떤 이유로 수정할 필요가 없는 매개변수를 설정하는 것은 불가능하다고 확신했습니다. 이렇게 하면 또 다른 오류가 발생할 수 있기 때문입니다. 내가 말하는 것과 비슷한 것이 있습니까?

다음과 같은 것이 내 머리에 있습니다.

함수는 매개변수를 동일한 값으로 변경하려고 합니다.


하나의 매개변수만 변경할 수 있고 나머지는 변경하지 않고 모든 곳에서 OrderOpenPrice(), OrdsrStopLoss() 등을 입력할 수 있습니다.
 
안녕하세요! 누군가 특정 단계에서 특정 가격 수준에서 후행하는 예가 있습니까? 고맙습니다!
 

여기에 또 다른 질문이 있습니다. 위에서 인용한 코드의 예(tol64 07/03/2011 18:20).

프로그램이 항상 다른 위치의 정지 손실 을 동기화하지는 않습니다. 즉, 위치가 선택되고 조건이 충족되고 로그에도 기록되지만 손절매는 수정되지 않습니다.

위의 그림에서 티켓 4가 있는 포지션에 대해서는 스톱로스가 수정되었고 티켓 1이 있는 포지션과 같은 값을 취했어야 합니다. 프로그램은 프린트로 이 위치에 도달하지만 실행이 차단된 것처럼 보입니다.

   for (count = 0 ; count < OrdersTotal (); count++)
      {  
         if ( OrderSelect (count,SELECT_BY_POS,MODE_TRADES)) 
            Print ( "Ticket: " ,OrderTicket(), ", Type: " ,OrderType(), ", Magic: " ,OrderMagicNumber(), ", StopLoss: " ,OrderStopLoss());

         double Op_Price = NormalizeDouble (OrderOpenPrice(), Digits );
         double Stp_Loss = NormalizeDouble (OrderStopLoss(), Digits );
         
         if (OrderMagicNumber() == Magic_SP01)
            {   if (OrderType() == OP_SELLSTOP)
                  {   if (Low_1 < SP_Level_01 && new_val > Op_Price && new_val < Open_0)  
                        {  OrderModify(OrderTicket(),new_val,OrderStopLoss(), 0 , 0 , DeepPink );  }

                     if (!(global_trailing_SP < Stp_Loss && global_trailing_SP > High_1)) Print ( "Условие не выполняется!" );   else
                        {  OrderModify(OrderTicket(),OrderOpenPrice(),global_trailing_SP, 0 , 0 , DeepPink );
                           Print ( "Условие ModifyOrder исполнилось: global_trailing_SP: " ,global_trailing_SP, ", Stop Loss: " ,OrderStopLoss());  }
                  }
               if (OrderType() == OP_SELL)
                  {   if (global_trailing_SP < Stp_Loss && global_trailing_SP > High_1)  
                       {  OrderModify(OrderTicket(),OrderOpenPrice(),global_trailing_SP, 0 , 0 , DeepPink );  }
                  }
            }

         ...

조건이 충족되지 않는 옵션도 로그에 표시되지 않기 때문입니다. 다양한 조합을 시도했지만 어느 것도 효과가 없었습니다. 도와주세요.

 

그리고 여기

 if ( OrderSelect (count,SELECT_BY_POS,MODE_TRADES)) 

필요하지 않습니까?

 if ( OrderSelect (count,SELECT_BY_POS,MODE_TRADES)=true) 
 
FOReignEXchange :

그리고 여기

필요하지 않습니까?


필요 없음. he and so bool이 반환됩니다.
 
tol64 :

여기에 또 다른 질문이 있습니다. 위에서 인용한 코드의 예(tol64 07/03/2011 18:20).

프로그램이 항상 다른 위치의 정지 손실을 동기화하지는 않습니다. 즉, 위치가 선택되고 조건이 충족되고 로그에도 기록되지만 손절매는 수정되지 않습니다.

위의 그림에서 티켓 4가 있는 포지션에 대해서는 스톱로스가 수정되었고 티켓 1이 있는 포지션과 같은 값을 취했어야 합니다. 프로그램은 프린트로 이 위치에 도달하지만 실행이 차단된 것처럼 보입니다.

조건이 충족되지 않는 옵션도 로그에 표시되지 않기 때문입니다. 다양한 조합을 시도했지만 어느 것도 효과가 없었습니다. 도와주세요.


제공한 함수에서 직접 global_trailing_SP 변수의 값을 Print() 합니다.

이 변수의 값을 어디에서 읽고 있습니까?

코드에서 0(강조 표시됨)을 바꿉니다.

OrderModify(OrderTicket(),OrderOpenPrice(),global_trailing_SP, 0 , 0 , DeepPink )

OrderTakeProfit() 함수에

 
FOReignEXchange :

조건이 존재하지 않는 경우 이 조건은 어떻게 됩니까? 그리고 이러한 주문은 사용되지 않습니다.


그런 다음 어떤 코드가 더 나은지 알려주세요

 if ( OrderSelect (count,SELECT_BY_POS,MODE_TRADES)) 

다음과 같이 씁니다.

 if (! OrderSelect (count,SELECT_BY_POS,MODE_TRADES)) continue ;
 
abolk :


그런 다음 어떤 코드가 더 나은지 알려주세요

다음과 같이 작성하십시오.


이해하지 못하셨나요? 도움말을 보니 OrderSelect() 가 조건을 사용합니다. 그리고 사실이 없으면 어디에서도 본 적이 없습니다.

if는 조건문입니다. 그리고 괄호 안에 조건이 있어야 합니다. 그게 더 논리적으로 보입니다. 차이가 없더라도.