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

 
Marco vd Heijden :

아니요 데모 계정 인지 라이브 계정인지 확인하기 위해 콘테스트는 거의 사용되지 않습니다.
Lot max는 매우 쉬울 수 있습니다.

신속한 응답에 감사드립니다.

로트 크기 최대 데모 계정만 적용하면 됩니다.
(하지만 물론 실제로 라이브 계정 - 이것은 단지 테스트용입니다 - 로트 크기가 더 나은 경우 로트 크기 최대 가 판매 및 구매 주문을 열지 않을 경우 데모 계정을 시도하고 싶습니다. 하지만 라이브 계정 또는 컨테스트 계정인 경우 - 그래서 이 로트 최대 크기는 둘 모두에 적용되지 않습니다 (라이브 또는 컨테스트))

스위치 연산자를 사용할 수 있습니까?

정말 감사합니다.
(나중에 시도해 보겠습니다. )

 
예, 스위치 연산자를 사용할 수 있습니다.
 
Marco vd Heijden :
//---
// calculate lotsize here
//---

// check if lotsize is not too high

if (lotsize>lotsize_max)
{
  lotsize=losize_max;
}

데모 계정 에 대해 "lotsize > lotsize_max" 로트 크기가 "lotsize = lotsize_max"여야 하는지 묻고 싶습니다. 제대로 이해해 주시겠습니까?

정말 감사합니다.
(나는 그것을 위해 노력하고있다)

 
Max Enrik :

데모 계정 에 대해 "lotsize > lotsize_max" 로트 크기가 "lotsize = lotsize_max"여야 하는지 묻고 싶습니다. 제대로 이해해 주시겠습니까?

정말 감사합니다.
(나는 그것을 위해 노력하고있다)

노력하다
if(IsDemo() && lotsize>lotsize_max) lotsize=lotsize_max;
 
honest_knave :
노력하다
if(IsDemo() && lotsize>lotsize_max) lotsize=lotsize_max;

오! 멋진! 정말 감사합니다.

----
기능 이 판매 및 구매 주문을 열면 또는 아니요 - 현재로서는 이것이 더 나을 수 있다고 생각합니다. (나는 데모(물론 라이브) 계정에서 이 기능이 어떻게 작동하는지에 대한 경험이 필요합니다. 월요일에 이 기능을 테스트할 것입니다. 코드의 이 부분을 마칠 수 있다면)
(지금은 이 기능에 대해 충분히 알지 못합니다 - 내일까지 할 수 있기를 바랍니다)

좋은 의견은 저에게 가장 큰 도움이 될 것입니다.
미리 감사드립니다.

 

예, 물론 반드시 lotmax 없이 사용하고 나중에 전략을 미세 조정하거나 위험을 제한하고 싶다면 사용할 수 있으므로 현재로서는 필요하지 않습니다.

당신은 그것을 제거할 수 있습니다 나는 단지 당신에게 나의 보안 메커니즘의 몇 줄을 보여주고 싶었습니다.


확인을 원하면 다음을 사용할 수 있습니다.

MessageBox ()

https://docs.mql4.com/common/messagebox


int result= MessageBox ( " This is a Messagbox, Do you want to proceed?" , "Warning" , MB_YESNO );

if (result== IDYES )
{
   // Yes Pressed
   Print ( "OK" );
}

if (result== IDNO )
{
   // No Pressed
}

다음은 메시지 뒤에 messagebox 함수에서 설정한 주요 플래그입니다.

끊임없는

설명

MB_OK

0x00000000

메시지 창에는 확인 버튼 하나만 있습니다. 기본

MB_OKCANCEL

0x00000001

메시지 창에는 확인 및 취소의 두 가지 버튼이 있습니다.

MB_ABORTRETRYIGNORE

0x00000002

메시지 창에는 Abort, Retry 및 Ignore의 세 가지 버튼이 있습니다.

MB_YESNOCANCEL

0x00000003

메시지 창에는 예, 아니오 및 취소의 세 가지 버튼이 있습니다.

MB_YESNO

0x00000004

메시지 창에는 예 및 아니오의 두 가지 버튼이 있습니다.

MB_RETRYCANCEL

0x00000005

메시지 창에는 두 개의 버튼이 있습니다: 재시도 및 취소

MB_CANCELTRYCONTINUE

0x00000006

메시지 창에는 취소, 다시 시도, 계속의 세 가지 버튼이 있습니다.


반환 값은 다음과 같습니다.

끊임없는

설명

이독

1

"확인" 버튼을 눌렀습니다

IDCANCEL

2

"취소" 버튼을 눌렀습니다

아이다보트

"중단" 버튼을 눌렀습니다

이드리트리

4

"다시 시도" 버튼을 눌렀습니다

무시하다

5

"무시" 버튼을 눌렀습니다

IDYES

6

"예" 버튼을 눌렀습니다

아이디노

7

"아니오" 버튼을 눌렀습니다

IDTRAGAIN

10

"다시 시도" 버튼을 눌렀습니다.

ID계속

11

"계속" 버튼을 눌렀습니다


테스터에서 Messagebox()가 작동하지 않습니다.

MessageBox - Common Functions - MQL4 Reference
MessageBox - Common Functions - MQL4 Reference
  • docs.mql4.com
MessageBox - Common Functions - MQL4 Reference
 
Marco vd Heijden :

예, 물론 반드시 lotmax 없이 사용하고 나중에 전략을 미세 조정하거나 위험을 제한하고 싶다면 사용할 수 있으므로 현재로서는 필요하지 않습니다.
당신은 그것을 제거할 수 있습니다 나는 단지 당신에게 나의 보안 메커니즘의 몇 줄을 보여주고 싶었습니다.

큰 도움을 주셔서 정말 감사합니다.

그래서 저는 그냥 아래 방법대로 해봤는데 잘 하고 있는건가요?
(내 주요 .mq4 파일로 가져오기 전에 물어봐야 했습니다. 작업 중입니다.)

미리 감사드립니다.

if (sparam==SellButton)
{
  result_message= MessageBox ( "Do you want to proceed?" , "Warning" , MB_YESNO );

   if (result_message== IDYES )
    {
     ordersell(); // Send Order function here
     Print ( "Clicked YES" , " Sell Order Applied" );
    }

   if (result_message== IDNO )
    {
     Print ( "Clicked NO" , " Sell Order Canceled" );
    }
   ObjectSetInteger ( 0 ,sparam, OBJPROP_STATE , false );
}
 

코드 실행을 (매우, 아주 약간) 더 효율적으로 만드는 스타일 팁입니다... 하지만 이 모든 것이 추가됩니다!

2개의 버튼이 있는 메시지 상자가 있습니다. IDYES가 아니면 IDNO여야 합니다(또는 기능 이 성공적으로 완료되지 않은 경우).

따라서 result_message를 두 번 테스트 할 필요가 없습니다.

if (sparam==SellButton)
{
  result_message= MessageBox ( "Do you want to proceed?" , "Warning" , MB_YESNO );

   if (result_message== IDYES )
    {
     ordersell(); // Send Order function here
     Print ( "Clicked YES" , " Sell Order Applied" );
    }
    else
    {
     Print ( "Clicked NO" , " Sell Order Canceled" );
    }
   ObjectSetInteger ( 0 ,sparam, OBJPROP_STATE , false );
}

기록된 것을 보고 싶다면 'else if' 문을 사용하세요.

if (sparam==SellButton)
{
  result_message= MessageBox ( "Do you want to proceed?" , "Warning" , MB_YESNO );

   if (result_message== IDYES )
    {
     ordersell(); // Send Order function here
     Print ( "Clicked YES" , " Sell Order Applied" );
    }

   else if (result_message== IDNO )
    {
     Print ( "Clicked NO" , " Sell Order Canceled" );
    }
   ObjectSetInteger ( 0 ,sparam, OBJPROP_STATE , false );
}
 
honest_knave :

코드 실행을 (매우, 아주 약간) 더 효율적으로 만드는 스타일 팁입니다... 하지만 이 모든 것이 추가됩니다!
2개의 버튼이 있는 메시지 상자가 있습니다. IDYES가 아니면 IDNO여야 합니다(또는 기능 이 성공적으로 완료되지 않은 경우).
따라서 result_message를 두 번 테스트 할 필요가 없습니다.

모든 것에 대해 더 많이 감사합니다.
이제 메인 EA에 넣을 수 있습니다.
(또한 MessageBox()에 대한 경험이 필요합니다)

 
Max Enrik :

모든 것에 대해 더 많이 감사합니다.
이제 메인 EA에 넣을 수 있습니다.
(또한 MessageBox()에 대한 경험이 필요합니다)

다른 방식으로 쓴 것은 아무 문제가 없었습니다. 단지 개인의 취향일 뿐입니다. 잘 정리되셨다니 다행입니다.