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

 

MQL4:

MODE_LOTSTEP

24

부지 변경 단계


Print ("Step for changing lots=", MarketInfo ( Symbol (), MODE_LOTSTEP ));

MQL5:

SYMBOL_VOLUME_STEP

거래 실행을 위한 최소 볼륨 변경 단계

더블


Print ( " Step: " , SymbolInfoDouble ( Symbol (), SYMBOL_VOLUME_STEP );

따라서 로트 크기가 0.01이면 로트가 0.01, 0.02, 0.03, 0.04 등에 동의해야 합니다.

0.1이면 로트 크기의 변경이 0.1 다음 0.2 다음 0.3 등을 충족해야 합니다.

그래서 나는 당신을 이해하지 못합니다:

   if (lotsize>=(lotstep* 100 ))
     {
      lotstep=lotstep* 100 ;
       Print ( "lot step: " ,lotstep);
     }

아마도 당신은 다른 로트 단계를 의미합니까?

일반적으로 각 기호에 대해 고정되어 있으므로 값을 변경하지 않습니다.

 
Max Enrik :
// lot plus
if (sparam==lotbuttonplus)
  {
   if (lotsize>=(lotstep* 100 ))
     {
      lotstep=lotstep* 100 ;
       Print ( "lot step: " ,lotstep);
     }

직관적으로 명명된 변수의 값을 변경하면 상황이 혼란스러워질 수 있습니다. 나는 lotstep이 항상 lotstep이며 다른 것은 없다고 제안합니다.

이런 건 어때?

   double increment = (lotsize < lotstep* 100 ) ? lotstep : lotstep*100;
   lotmaxdivide=lotmax/lotmax *(lotvalue* 10 );
   lotsize= fmin (lotmaxdivide,lotsize+(( ctrlfalse) ? increment * 10 : increment ));
편집: 죄송합니다. 방금 Marco의 답변을 보았습니다. 나는 re: lotstep 명명에 동의합니다.
 

Marco vd Heijden :

그래서 나는 당신을 이해하지 못합니다:

   if (lotsize>=(lotstep* 100 ))
     {
      lotstep=lotstep* 100 ;
       Print ( "lot step: " ,lotstep);
     }

아마도 당신은 다른 로트 단계를 의미합니까?
일반적으로 각 기호에 대해 고정되어 있으므로 값을 변경하지 않습니다.

응! 다른 로트 단계를 의미하므로 로트 크기가 EURUSD의 로트 크기 1.00에 도달했을 때. 그런 다음 로트 크기를 1.00 늘려야 합니다. 로트 크기가 1.00에 도달하기 전 - 로트 크기가 0.01, 0.02 등으로 증가합니다.
그것이 제가 이 소주제에서 하고 싶은 것입니다.

정말 감사합니다.

 
honest_knave :

직관적으로 명명된 변수의 값을 변경하면 상황이 혼란스러워질 수 있습니다. 나는 lotstep이 항상 lotstep이며 다른 것은 없다고 제안합니다.
이런 건 어때?

   double increment = (lotsize < lotstep* 100 ) ? lotstep : lotstep*100;
   lotmaxdivide=lotmax/lotmax *(lotvalue* 10 );
   lotsize= fmin (lotmaxdivide,lotsize+(( ctrlfalse) ? increment * 10 : increment ));
편집: 죄송합니다. 방금 Marco의 답변을 보았습니다. 나는 re: lotstep 명명에 동의합니다.

( 나는 단지 조금 바뀌지 않았다 - ... ? lotstep : lotstep*100 - ...? lotstep : lotstep*10 )

응! 내 원래 코드에서는 혼란스럽습니다.
당신의 큰 도움 후, 나는 내 문제를 해결합니다. 정말 감사합니다.

저도 이렇게 로트 규모가 컸으면 좋겠습니다.
따라서 로트 크기는 0.99, 1.00, 1. 01 , 1. 11 과 같이 증가합니다.
하지만 0.99, 1.00, 1.10, 1.20 등이 필요합니다.

미리 감사드립니다.

 

제 생각에는 0.99, 1.00, 1. 01 , 1.02 . 가장 좋은 생각일 것입니다.

내가 생각하는 가장 작은 가능한 단계에 충실하십시오.

이러한 ULTRA LARGE 단계를 수행하려는 이유는 무엇입니까?

당신은 그것을 시도 했습니까?

시도하십시오.
 
Marco vd Heijden :

제 생각에는 0.99, 1.00, 1. 01 , 1.02 . 가장 좋은 생각일 것입니다.
내가 생각하는 가장 작은 가능한 단계에 충실하십시오.
이러한 ULTRA LARGE 단계를 수행하려는 이유는 무엇입니까?
당신은 그것을 시도 했습니까?

시도하십시오.

이미 시도했지만 로트 크기 5.00에 도달해야 하는 경우 로트 플러스 버튼( + ctrl )을 40번 클릭해야 한다고 생각합니다.

 

와 왜 5개?

* 대신 +와 -를 사용할 수 있습니다.

lotsize=lotsize+ 0.1 ;
lotsize=lotsize- 0.1 ;

그러나 내 로봇에는 완전한 파괴로부터 로봇을 저장하는 한 줄이 있으며 다음과 같습니다.

static input double lotsmax= 1 ; // Max Lots (please respect the setting)
 
Marco vd Heijden :

그러나 내 로봇에는 완전한 파괴 로부터 로봇을 저장하는 한 줄이 있으며 다음과 같습니다.

그것은 절대적으로 사실이며 물론 나는 그 설정을 존중합니다.

그러나 이것은 단지 문제일 뿐입니다. 언제든지 조정할 수 있습니다.
아마도 그 부지 크기에 대한 약간의 경험이 필요할 것입니다.

지금은 이 하위 주제가 닫힐 수 있다고 생각합니다.

@Marco vd Heijden@honest_knave 에게 감사드립니다.

#로트스텝 - 마감

 

#최대 로트 크기 - 열기

@Marco vd Heijden - 귀하의 최근 의견에 감사드립니다. 제 EA용 코드의 이 부분을 작성하게 된 영감을 받았습니다. (나는 방금 다른 기능을 작성하기 위해 중단했습니다. 다른 기능보다 먼저 작성하려고 합니다.)

그래서 평소와 같이 로트 크기 최대값을 테스트하려고 합니다.
로트 크기가 최대 로트 크기보다 나을 때 인쇄 기능이 거래 모드에 대해 알려주지 않습니다.
이 문제를 해결한 후 이 기능을 판매 및 구매 버튼 기능을 넣어야 합니다.

Q: 무역 모드에 대해 알려주는 인쇄 기능을 어떻게 할 수 있습니까? ( - 로트 크기가 로트 크기보다 크거나 그보다 작거나 )
Q: 이 방법이 최대 로트 크기에 유용합니까?

미리 감사드립니다.

void example()
  {
   string trademode;
   ENUM_ACCOUNT_TRADE_MODE accounttype=( ENUM_ACCOUNT_TRADE_MODE ) AccountInfoInteger ( ACCOUNT_TRADE_MODE );

   if (accounttype== ACCOUNT_TRADE_MODE_DEMO )
     {
       switch (accounttype)
        {
         case ACCOUNT_TRADE_MODE_DEMO :
             if ( lotsize > ( lotstep * lotsizemax ) ) return ;
            trademode= "demo" ;
             break ;
         case ACCOUNT_TRADE_MODE_CONTEST :
            trademode= "contest" ;
             break ;
         default :
            trademode= "live" ;
             break ;
        }
     }
   Print ( "Trade Mode: " ,trademode);
  }
 

아니요 데모 계정 인지 라이브 계정인지 확인하기 위해 콘테스트는 거의 사용되지 않습니다.

Lot max는 매우 쉬울 수 있습니다.

//---
// calculate lotsize here
//---

// check if lotsize is not too high

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