초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 19

 
Vitalie Postolache :
글쎄, 당신은 모방 할 필요가 없습니다
mql4가 아닌 이유
 
Vitalie Postolache :

조금 그런 식으로 작동하지 않습니다. 이 함수에 대한 인수로 지정됨 1) 검색할 문자열. 2) 찾을 문자의 조합; 3) 검색 시작(기본값 - 항목 1에 따른 문자열의 null 문자부터).

검색된 하위 문자열이 시작되는 문자열의 위치 번호를 반환하거나 하위 문자열을 찾을 수 없는 경우 -1을 반환합니다.

즉, 다음과 같이 작성해야 합니다.

if ( StringFind ( OrderComment (), "[tp]" , 0 )>- 1 ) {действие при нахождении признака закрытия по TP}

답변 감사합니다 ... 그게 다입니다. 매개 변수가 있는 StringFind 함수가 나타납니다( string string_value , string match_substring, int start_pos= 0 )은 공통 코드에서 다음과 같이 한 줄로 작성됩니다.

함수 매개변수의 데이터에 해당하는 인수: OrderComment () , 문자열 "[tp]" , 정수 0 이고 이 표현식( 괄호 로 묶음)이 -1 보다 크면 다음 { 중괄호로 묶인 r } 코드가 실행 됩니다.

if ( StringFind ( OrderComment (), "[tp]" , 0 )>- 1 )

{

이중 OrderTakeProfit();

if(주문 선택(12, SELECT_BY_POS)==true)

Print("주문 번호",OrderTicket()," 이익: ", OrderTakeProfit());

또 다른

Print("OrderSelect()가 오류를 반환했습니다 - ",GetLastError());

bool 플레이사운드(

string payment // 여기서 " payment"는 Sound MT4 폴더의 파일 이름입니다.

);

}

... 그러한 코드가 MQL4에서 작동합니까? ...

 
bablusut :

답변 감사합니다 ... 그게 다입니다. 매개 변수가 있는 StringFind 함수가 나타납니다( string string_value , string match_substring, int start_pos= 0 )은 공통 코드에서 다음과 같이 한 줄로 작성됩니다.

함수 매개변수의 데이터에 해당하는 인수: OrderComment () , 문자열 "[tp]" , 정수 0 이고 이 표현식( 괄호 로 묶음)이 -1 보다 크면 다음 { 중괄호로 묶인 r } 코드가 실행 됩니다.

if ( StringFind ( OrderComment (), "[tp]" , 0 )>- 1 )

{

이중 OrderTakeProfit();

if(주문 선택(12, SELECT_BY_POS)==true)

Print("주문 번호",OrderTicket()," 이익: ", OrderTakeProfit());

또 다른

Print("OrderSelect()가 오류를 반환했습니다 - ",GetLastError());

bool 플레이사운드(

string payment // 여기서 " payment"는 Sound MT4 폴더의 파일 이름입니다.

);

}

... 그러한 코드가 MQL4에서 작동합니까? ...

이중 OrderTakeProfit(); - 여기에서 아이디어를 맹세하기 위해 컴파일해야합니다.

내가 이해하는 한 (나는 여전히 스스로 알아내고 있다) - OrderTakeProfit(); 플랫폼에서 이익 주문을 요청합니다. 따라서 이 몇 줄에서 EA는 OrderTakeProfit()을 2번 요청합니다. 이 줄은 제거하면 되는 것 같습니다( double OrderTakeProfit(); ).

 
bablusut :

답변 감사합니다 ... 그게 다입니다. 매개 변수가 있는 StringFind 함수가 나타납니다( string string_value , string match_substring, int start_pos= 0 )은 공통 코드에서 다음과 같이 한 줄로 작성됩니다.

함수 매개변수의 데이터에 해당하는 인수: OrderComment () , 문자열 "[tp]" , 정수 0 이고 이 표현식( 괄호 로 묶음)이 -1 보다 크면 다음 { 중괄호로 묶인 r } 코드가 실행 됩니다.

if ( StringFind ( OrderComment (), "[tp]" , 0 )>- 1 )

{

이중 OrderTakeProfit();

if(주문선택(12, SELECT_BY_POS)==true)

Print("주문 번호",OrderTicket()," 이익: ", OrderTakeProfit());

또 다른

Print("OrderSelect()가 오류를 반환했습니다. - ",GetLastError());

bool 플레이사운드(

string payment // 여기서 " payment"는 Sound MT4 폴더의 파일 이름입니다.

);

}

... 그러한 코드가 MQL4에서 작동합니까? ...

그들은 이미 그것에 대해 말했습니다: double OrderTakeProfit() - 그렇게 하지 마십시오. 이 함수는 오토마톤에 의해 선언되며 다시 선언할 수 없으며 컴파일러에서 오류가 발생합니다. 표준 함수는 미리 선언할 필요가 없습니다.

if(OrderSelect(12, SELECT_BY_POS)==true) - 이렇게 하면 기껏해야 다른 주문이 될 것이며 위에서 주석이 처리된 주문이 아닙니다. if ( StringFind ( OrderComment (), "[tp]" , 0 )>- 1 ) 이전에 맨 처음에 주문이 이미 선택되어 있어야 하며 주문 번호의 인수로 루프 카운터를 대체해야 합니다. 상수, 그렇지 않으면 모든 시계 반복 12번째 순서가 됩니다.

 
Vitalie Postolache :

그들은 이미 그것에 대해 말했습니다: double OrderTakeProfit() - 그렇게 하지 마십시오. 이 함수는 오토마톤에 의해 선언되며 다시 선언할 수 없으며 컴파일러에서 오류가 발생합니다. 표준 함수는 미리 선언할 필요가 없습니다.

if(OrderSelect(12, SELECT_BY_POS)==true) - 이렇게 하면 기껏해야 다른 주문이 될 것이며 위에서 주석이 처리된 주문이 아닙니다. 주문은 맨 처음부터 if ( StringFind ( OrderComment (), "[tp]" , 0 )>- 1 ) 전에 이미 선택되어 있어야 합니다.

A1엑스핏 :

이중 OrderTakeProfit(); - 여기에서 아이디어를 맹세하기 위해 컴파일해야합니다.

내가 이해하는 한 (나는 여전히 스스로 알아내고 있다) - OrderTakeProfit(); 사이트에서 수익 주문 요청을 합니다. 따라서 이 몇 줄에서 EA는 OrderTakeProfit()을 2번 요청합니다. 이 줄은 제거하면 되는 것 같습니다( double OrderTakeProfit(); ).

의견 주셔서 감사합니다. 당신이 옳았습니다.
 
"Vitalie Postolache :

그들은 이미 그것에 대해 말했습니다: double OrderTakeProfit() - 그렇게 하지 마십시오. 이 함수는 오토마톤에 의해 선언되며 다시 선언할 수 없으며 컴파일러에서 오류가 발생합니다. 표준 함수는 미리 선언할 필요가 없습니다.

if(OrderSelect(12, SELECT_BY_POS)==true) - 이렇게 하면 기껏해야 다른 주문이 될 것이며 위에서 주석이 처리된 주문이 아닙니다. if ( StringFind ( OrderComment (), "[tp]" , 0 )>- 1 ) 이전에 맨 처음에 주문이 이미 선택되어 있어야 하며 주문 번호의 인수로 루프 카운터를 대체해야 합니다. 상수, 그렇지 않으면 모든 시계 반복 12번째 순서가 됩니다.

답변 감사합니다... 이중 OrderTakeProfit() 함수의 선언과 함께, 우리는 그것을 삭제합니다.

"... 주문 번호의 인수로 주기 카운터를 대체해야 합니다." - 이전 코드의 OrdersHistoryTotal 함수에서 for 주기 연산자와 본문 (i=0;i <accTotal;i++), 따라서 연산자의 본문은 OrderSelect 함수 의 본문 으로 대체되어야 하며 다음을 얻습니다.

  if ( StringFind ( OrderComment (), "[tp]" , 0 )>- 1 )

{

if(주문 선택 (i=0;i<accTotal;i++) ==true)

Print("주문 번호",OrderTicket()," 이익: ", OrderTakeProfit());

또 다른

Print("OrderSelect()가 오류를 반환했습니다. - ",GetLastError());

bool 플레이사운드(

string payment // 여기서 " payment"는 Sound MT4 폴더의 파일 이름입니다.

);

}

... 그러한 코드가 MQL4에서 작동합니까? ...




 
bablusut :

답변 감사합니다... 이중 OrderTakeProfit() 함수의 선언과 함께, 우리는 그것을 삭제합니다.

"... 주문 번호의 인수로 주기 카운터를 대체해야 합니다." - 이전 코드의 OrdersHistoryTotal 함수에서 for 주기 연산자와 본문 (i=0;i <accTotal;i++), 따라서 연산자의 본문은 OrderSelect 함수 의 본문 으로 대체되어야 하며 다음을 얻습니다.

다시. 주문으로 작업할 때 OrderSelect가 첫 번째 위치에 있어야 합니다. 그런 다음 다른 모든 것.

주문을 통해 정렬하는 주기로 작업하는 경우 절차는 다음과 같습니다.

1. 확인(OrderSelect())

2. 이것이 주문인지 확인하는 경우 일반적으로 기호와 마법을 확인한 다음 필요한 경우 유형을 확인합니다. if(OrderSymbol()==_Symbol && OrderMagicNumber()==Magic && OrderType()<2) - 이 시장 기호만 현재 상품에 지정된 마법으로 처리된 주문인 경우

3. OrderComment(), OrderProfit() 등과 같은 기타 데이터 처리

다음과 같이 보일 것입니다.

for ( int i= OrdersHistoryTotal ()- 1 ; i>= 0 ; i--) //перебираем историю торгов
{
       if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY )) //если ордер выбран то работаем дальше, иначе смысла нет
      {
         if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==Magic && OrderType ()< 2 ) //Если ордер тот, что нам нужен (эту проверку можно и опустить, если нужно обработать все ордера в истории)
         {
             if ( StringFind ( OrderComment (), "[tp]" , 0 )>- 1 ) //если найден признак закрытия профитом
             Print ( "Order #" , OrderTicket (), " profit: " , OrderTakeProfit ());
             if ( StringFind ( OrderComment (), "[sl]" , 0 )>- 1 ) //если найден признак закрытия стоплосс
             Print ( "Order #" , OrderTicket (), " loss: "OrderTakeProfit ());
         }
      }
}
 
누군가에게 스레드를 알려주십시오: iCustom 표시기의 특정 버퍼에서 신호 값의 존재를 확인하는 방법은 무엇입니까?
 
Vitalie Postolache :
다시. 주문으로 작업할 때 OrderSelect가 첫 번째 위치에 있어야 합니다. 그런 다음 다른 모든 것.

그들은 시행 착오를 통해 결정했습니다. 분명히 전류가 비쌀 것입니다. 그는 자신이 이것을 겪었습니다 ...

솔직히 귀가 멍멍...

 
atik441 :
누군가에게 스레드를 알려주십시오: iCustom 표시기의 특정 버퍼에서 신호 값의 존재를 확인하는 방법은 무엇입니까?
링크를 따라가면 게시물에서 강조표시됩니다.