전문 고문 - 기타 질문 - 페이지 30

 
honest_knave :

피상적인 검사는 그것이 작동해야 함을 시사합니다. 하지만 효율성을 높일 수 있습니다.

차트에 얼마나 많은 다른 개체를 그렸는지 생각해 보십시오. 해당 개체 중 *임의*를 클릭하면 모든 단일 주문을 반복하여 일치하는 항목을 찾으려고 합니다. 많은 개체는 아마도 주문과 관련이 없을 것입니다. 이것은 비효율적입니다.

그래서 "#"에 대한 sparam의 첫 번째 문자를 확인하는 것이 좋습니다. 이렇게 하면 개체가 주문과 관련된 것으로 자동 식별됩니다.

또한 주문을 반복할 필요가 없습니다. 개체 이름 및/또는 개체 텍스트에 이미 티켓 번호가 포함되어 있습니다. 그래서 거기에서 티켓 번호를 추출하고 주문을 닫으십시오.

예시:

주문을 엽니다. 티켓 번호 12345 가 부여됩니다.

이름이 " #12345 "인 OBJ_BUTTON 을 만듭니다.

OnChartEvent()의 코드는 다음과 같습니다(컴파일되지 않음, 테스트되지 않음, 늦은 밤...).

if (id== CHARTEVENT_OBJECT_CLICK && StringSubstr (sparam, 0 , 1 )== "#" ) // this is an order button
  {
   int ticket=( int ) StringSubstr (sparam, 1 ); // extract the ticket number
   if ( OrderSelect (ticket, SELECT_BY_TICKET )) // select the order
     {
       if (! OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 3 ,CLR_NONE)) // close the order
        {
         Print ( "# Error " , GetLastError ());
        }
     }
  }
(실패한 경우 OrderSelect도 처리하고 싶을 것입니다.)

우와! 나는 그것에 대해 몰랐다.

그래서, 당신은 두 번 언급, 그리고 나는 그것에 대해 정확히 파악하지 못했습니다.
이제 직접 테스트하고 내 기본 EA 파일로 가져옵니다.

정말 감사합니다.

 

다른 개체에 대해 OrderTicket()을 사용합니다. 이제 해당 개체를 클릭하면 주문이 종료됩니다.
나는 당신이 방법을 좋아했지만 다른 개체에 영향을 미치는 것 같습니다.

여기 이와 같은 다른 개체 이름 이 그 중 하나입니다.

"#" + IntegerToString ( OrderTicket ())+ " -" + "Object HLine"

미리 감사드립니다.

 
Max Enrik :

다른 개체에 대해 OrderTicket()을 사용합니다. 이제 해당 개체를 클릭하면 주문이 종료됩니다.
나는 당신이 방법을 좋아했지만 다른 개체에 영향을 미치는 것 같습니다.

여기 이와 같은 다른 개체 이름 이 그 중 하나입니다.

"#" + IntegerToString ( OrderTicket ())+ " -" + "Object HLine"

미리 감사드립니다.

보다 우아한 솔루션은 이름 지정 시스템을 변경하는 것입니다.

그럼에도 불구하고 여전히 주문 번호를 제거할 수 있습니다. 정확한 명명 형식에 따라 다릅니다.

그러나 그 전에 버튼의 OBJPROP_TEXT는 무엇입니까? 다른 개체에 동일한 OBJPROP_TEXT가 있습니까?

 
honest_knave :

보다 우아한 솔루션은 이름 지정 시스템을 변경하는 것입니다.
그럼에도 불구하고 여전히 주문 번호를 제거할 수 있습니다. 정확한 명명 형식에 따라 다릅니다.
그러나 그 전에 버튼의 OBJPROP_TEXT는 무엇입니까? 다른 개체에 동일한 OBJPROP_TEXT가 있습니까?

응! 버튼 이름을 변경하면 버튼 개체 이름을 변경할 수 있다는 것을 알고 있습니다(또한 Prefix 사용).

아래는 버튼 및 HLine 이름입니다.

"#" + IntegerToString ( OrderTicket ())+ " -" + "Object HLine"
"#" + IntegerToString ( OrderTicket ())+ " -" + "Object Button"

(물론 객체 이름은 조금 더 다르지만 방법은 같습니다)

미리 감사드립니다.

 

시장 폐쇄

찾았을 수도 있지만 확실하지 않습니다.
이것이 좋지 않다면 저에게 알려주십시오.

if (id== CHARTEVENT_OBJECT_CLICK && StringFind (sparam, "close order button" , 0 )>= 0 )

미리 감사드립니다.

//--- 2번째 수정

여기요! 남성!

정말 감사합니다. 지금까지는 문제가 없습니다. 제대로 작동합니다!

 

#크로스오버 개체 - 열기

나는 이 문제에 여러 번 직면했고, 때로는 합격하기도 했고 때로는 포기하기도 했고, 이제는 다시 한 번 포기하고 싶지 않습니다.
나는 2 개의 개체 " HLine 및 Button "이 교차합니다. 즉, 그 중 하나를 클릭하면 둘 다 선택하는 것이 좋지 않습니다. ( 버튼 너비 = 20, HLINE 너비 = 아시다시피 )

Q: BUTTON 개체 를 클릭하면 HLINE 개체가 크로스오버되는 동안 선택되지 않습니다. 어떻게 해야 합니까?
(크로스 오버가 아닌 HLINE을 쉽게 선택할 수 있습니다)

미리 감사드립니다.

(작업중이니 좋은댓글 부탁드립니다. )

 

#Profit in Pips - 열기 | #Profit in Pips - 지금은 폐쇄됨 - 해결했습니다

Mr. William - 나는 당신의 " Pip, Point ... " 계산 코드를 사용합니다.
이제 아래 코드를 사용하여 Profit in pips 값을 얻으려고 합니다. 2개의 주문이 있는데 그 중 하나는 올바르게 표시되고( OP_BUY ), 두 번째는 올바르게 표시되지 않습니다 - 399 - 실제 400( OP_SELL ).

Q: 핍 계산에서 이익을 위해 잘못하고 있습니까?

change_to_pips( OrderTakeProfit () - OrderOpenPrice () )

미리 감사드립니다.

(지난 날 다른 웹사이트에서 포럼을 확인했는데 나에게 도움이 되지 않았습니다.)

 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MetaTrader 4 Build 574(업데이트된 MQL4 언어 및 애플리케이션 시장 출시)

휘더1 , 2014.01.27 14:11

  1. 그런 식으로 읽을 수 없고 이해할 수 없는 코드를 작성하지 마십시오.
    if (MyOrdersTotal() == 0 && ( Hour ()​>=​StartHour ​&& Hour ()​<​EndHour && StartHour​<​EndHour) || ( Hour ()​>=​StartHour || Hour ()​<​EndHour && StartHour​>​EndHour))
    및/또는 혼합 시 읽을 수 있고 단순화하고 항상 괄호로 묶습니다.
     bool     isHourOKnorm = StartHour < EndHour
                         && StartHour <= Hour () && Hour () < EndHour,
            isHourOKwrap = StartHour > EndHour
                         && (StartHour <= Hour () || Hour () < EndHour),
         isHourOK       = isHourOKnorm || isHourOKwrap;
    if (MyOrdersTotal() == 0 && isHourOK)
  2. StartHour == EndHour(즉, 모두 24개)인 경우는 어떻습니까? 내 코드 를 보고 24시간 랩을 피하십시오.

William 씨의 복잡한 조건에 대한 놀라운 " if " 연산자 예 중 하나입니다.
감사합니다!


최근 2일 동안 " if " 연산자의 복잡한 조건을 해결하기 위해 고심했지만 위의 훌륭한 예를 찾을 때까지 문제를 해결할 수 없습니다.

 

누군가 저를 도와주세요. 저는 이 문제를 해결하기 위해 정말 고군분투하고 있습니다.

#296

미리 감사드립니다.

 

아래 코드는 때로는 완벽하게 작동하지만 때로는 작동하지 않습니다. 이 문제를 해결할 수 없습니다. 단일 주문을 사용할 때는 완벽하게 작동하지만 여러 주문을 열면 이 기능 이 제대로 작동하지 않습니다.
저를 도와주세요. 그리고 저에게 더 나은 (아래 코드에서 무엇이 잘못되었는지) 조금 더 설명합니다.

(지금은 작업 중입니다. )

if (id== CHARTEVENT_OBJECT_CLICK && ( StringFind (sparam,Button_1, 0 )>= 0 || StringFind (sparam,Button_2, 0 )>= 0 ))
  {
   ticketnumber=( int ) StringSubstr (sparam, 1 );

   if ( OrderSelect (ticketnumber, SELECT_BY_TICKET ))
     {
       if ( StringFind (sparam,Button_1, 0 )>= 0 )
        {
         // ...
        }

       if ( StringFind (sparam,Button_2, 0 )>= 0 )
        {
         //...
        }

       for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)
        {
         if (! OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) continue ;
         if ( Symbol ()!= OrderSymbol ()) continue ;

         update_1();
         update_2();
         update_3();
        }
     }
  }

미리 감사드립니다.