MaxTradesPerBar를 EA에 추가하는 데 도움 - 페이지 2

 
serpentsnoir :

메가믹스,

당신이 아직 거기에 있다면, 나는 당신이 찾고 있는 것을 할 몇 가지 코드 변경을 제안할 수 있습니다. 여전히 관심이 있다면 알려주세요.

그런 다음 다시 컴파일하여 오류가 없는지 확인합니다. 이 정보가 있을 때 알려주시면 다음 변경 사항을 붙여넣겠습니다.

sns 감사합니다.
 
megamixx :

sns 감사합니다.


좋아, 좋아.

다음으로 다음과 같은 코드 블록이 있습니다.

 int openPositions()
{
//... blah...
}

전체 블록을 복사하고 바로 뒤에 붙여넣고 이름을 OpenTradesOnThisCandle로 바꿉니다.

그런 다음 다시 컴파일하여 오류가 없는지 확인합니다.

나는 지금 일하러 가니까 나중까지 소식을 듣지 못할 것입니다. 막히면 변경 사항을 게시하십시오.

 

이 블록을 복사하고 이름을 바꾸었습니다. 이제 다음과 같습니다.

int OpenTradesOnThisCandle( )
{ 정수 연산 = 0;
for(int i=OrdersTotal()-1;i>=0;i--) // 모든 주문과 위치를 스캔합니다...
{
주문 선택(i, SELECT_BY_POS, MODE_TRADES);
if (OrderMagicNumber() != MagicNumber) 계속;
if ( OrderSymbol()==Symbol() )
{
if ( OrderType() == OP_BUY ) op++;
if ( OrderType() == OP_SELL ) op++;
}
}
리턴(옵);
}

내가 제대로 했길 바랍니다 sn. 컴파일하고 오류는 없지만 경고가 표시됩니다.

"OpenTradesOnThisCandle" 기능 은 참조되지 않으며 exp 파일에서 제거됩니다.
오류 0개, 경고 1개

 

좋은. 이 메시지는 단지 경고일 뿐이며 곧 사라질 것입니다.

이제 생성한 새 서브루틴에서 MODE_TRADES가 표시되는 행을 MODE_HISTORY로 변경합니다.

이제 두 if 문을 모두 OrderType()으로 대체합니다.

 if ( OrderOpenTime () > Time[ 0 ]) op++;

당신이 그것을 가지고 있다면 (그리고 당신은 같은 경고를 받게 될 것입니다) 그것을 컴파일하여 오류가 없는지 확인하십시오.

 
OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
if ( OrderMagicNumber () != MagicNumber) continue ;
if ( OrderSymbol ()== Symbol () )
  1. 함수 반환 값이란 무엇입니까? 어떻게 사용합니까? - MQL4 포럼
  2. 루프에 서버 호출이 있는 경우 카운트다운하고 반환 코드를 확인해야 합니다. Loops and Closing or Deleting Orders - MQL4 forum
 

이제 블록의 모양은 다음과 같습니다.

int OpenTradesOnThisCandle( )
{ 정수 연산 = 0;
for(int i=OrdersTotal()-1;i>=0;i--) // 모든 주문과 위치를 스캔합니다...
{
주문 선택(i, SELECT_BY_POS, MODE_HISTORY);
if (OrderMagicNumber() != MagicNumber) 계속;
if ( OrderSymbol()==Symbol() )
{
if (OrderOpenTime() > 시간[0]) op++;
if (OrderOpenTime() > 시간[0]) op++;
}
}
리턴(옵);
}

컴파일됨, 오류 0개, 경고 1개

 

안녕하세요 메가믹스입니다.

쓰레드를 처음부터 읽지는 않지만...

1. 코드 게시 시 SRC 버튼 사용

2. OrderSelect()의 반환은 true 또는 false이므로 이것이 OrderSelect()를 작성하는 올바른 방법입니다.

 int OpenTradesOnThisCandle( )
  { 
   int op = 0 ;
   for ( int i = OrdersTotal () - 1 ;i >= 0 ; i-- ) // scan all orders and positions...
    {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY) == true   // if order select is true ...
        && OrderMagicNumber () != MagicNumber                   // ... and magic number is our magic number ...
        && OrderSymbol ()      == Symbol () )                   // ... and symbol is chart symbol
        { 
         if ( OrderOpenTime () > Time[ 0 ]) op++;             
         if ( OrderOpenTime () > Time[ 0 ]) op++; 
        }
    } 
     return (op);
  }

:디

 
onewithzachy :

안녕하세요 메가믹스입니다.

쓰레드를 처음부터 읽지는 않지만...

1. 코드 게시 시 SRC 버튼 사용

2. OrderSelect()의 반환은 true 또는 false이므로 이것이 OrderSelect()를 작성하는 올바른 방법입니다.

:디


코드 게시에 대한 팁을 주셔서 감사합니다. 말이된다. 요점 #2에 관해서는 그가 단계를 통해 나를 안내하고 그의 프로세스를 엉망으로 만들고 싶지 않기 때문에 나는 sns를 연기할 것입니다. 매우 감사 !

 
megamixx :


코드 게시에 대한 팁을 주셔서 감사합니다. 말이된다. 요점 #2에 관해서는 그가 단계를 통해 나를 안내하고 그의 프로세스를 엉망으로 만들고 싶지 않기 때문에 나는 sns를 연기할 것입니다. 매우 감사 !


지금은 간단하게 유지하겠습니다. onewithzacky가 맞습니다. 반환 코드를 확인 하는 것은 좋은 습관입니다.

if (OrderOpenTime() > 시간[0]) op++; <<== 한 번만 있으면 됩니다. 그래서 하나를 꺼냅니다.

다음으로 할 일은 이 코드를 찾아 바로 아래에 복사하는 것입니다.

     if (TradesInThisSymbol > 0 ) 
     {
       return ( 0 );
     }

그런 다음 변경

(TradesInThisSymbol > 0)

에게

(OpenTradesOnThisCandle() > MaxTradesPerCandle)

그런 다음 컴파일하십시오. 오류가 사라집니다.

 
serpentsnoir :


지금은 간단하게 유지하겠습니다. onewithzacky는 반환 코드를 확인하는 것이 좋은 습관이라는 것이 맞습니다.

if (OrderOpenTime() > 시간[0]) op++; <<== 이것은 한 번만 있으면 됩니다. 그래서 하나를 꺼냅니다.

다음으로 할 일은 이 코드를 찾아 바로 아래에 복사하는 것입니다.

그런 다음 변경

(TradesInThisSymbol > 0)

에게

(OpenTradesOnThisCandle() > MaxTradesPerCandle)

그런 다음 컴파일하십시오. 오류가 사라집니다.


완료.

삭제된 중복 if (OrderOpenTime() > Time[0]) op++;

발견하고 변경한

(TradesInThisSymbol > 0)

에게

(OpenTradesOnThisCandle() > MaxTradesPerCandle)

이에 대한 도움을 주셔서 감사합니다.