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

 
Ihor Herasko :

네, 알겠습니다. 그리고 https://www.mql5.com/ru/forum/160587/page115#comment_6521492 아래 게시물에 질문에 대한 답변이 있습니다. 즉, 기능이 논리적인 하위 작업으로 구분되지 않는 것이 문제입니다. 주문을 분류하고 거래 행동에 대한 결정을 내리고 거래 작업을 수행하는 등 모든 것을 쌓아 올렸습니다.

이 문제는 세 단계로 해결됩니다.

  1. 프로그램이 모니터링해야 하는 주문에 대한 정보 수집. 이것은 이미 가지고 있는 주문을 반복하는 주기일 뿐입니다. 루프 실행의 결과는 주문 배열의 형성이어야 합니다.
  2. 거래 신호 계산. 계산 결과는 주문을 열거나 닫는 명령입니다. 거래 전략에 따라 다릅니다. 이전에는 열거형이 없었을 때 0 - 신호 없음, 1 - 매수 열기, -1 - 매도 열기, 2 - 매수 닫기, -2 - 매도 닫기 코드를 사용했습니다.
  3. 하나의 거래 작업 실행. 어떤 종류의 거래 신호가 있고 주문 중 하나가 이에 적합하면(포인트 1), 하나의 거래 작업이 수행됩니다. 그 후, 전체 알고리즘이 1단계부터 다시 시작됩니다. 어떤 경우에는 다음 틱에서 모든 것을 계속하기 위해 OnTick이 종료되기도 합니다.

글쎄, 고마워. 적어도 무엇을 해야 하는지는 분명해졌습니다. 나는 방법을 알아 내려고 노력할 것입니다. 사실, 아직 어레이를 만나지 못했습니다. 어쨌든 다시 한 번 감사드립니다.

 

탈출 방법을 알려주세요!!!


for(int i=OrdersTotal()-1; i>=0; i--)

{

주문 선택(i, SELECT_BY_POS );

if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)

부서지다;

경고: 'OrderSelect'의 반환 값을 확인해야 합니다.

이 'OrderSelect' 값은 또 어떻게 확인해야 합니까?

내가 이렇게 하면: j=OrderSelect(); 맞나요?


 
Rewerpool :

탈출 방법을 알려주세요!!!


for(int i=OrdersTotal()-1; i>=0; i--)

{

주문 선택(i,SELECT_BY_POS);

if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)

부서지다;

경고: 'OrderSelect'의 반환 값을 확인해야 합니다.

이 'OrderSelect' 값은 또 어떻게 확인해야 합니까?

내가 이렇게 하면: j=OrderSelect(); 맞나요?


 if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
 
Alekseu Fedotov :

도움이되지 않았습니다!(

(((((

 
나는 그것을 파일 에 썼는데, 모든 것이 정상이지만, "eurusd" "1.2242" 임시 데이터 등과 같은 데이터를 어떻게 구문 분석해야 할까요?
 
Mickey Moose : 파일 에 썼습니다. 모든 것이 정상이지만 이제 "eurusd" "1.2242" 임시 데이터 등과 같은 데이터를 구문 분석하는 방법은 무엇입니까?

문자열 s=파일읽기문자열(F1); // 텍스트 파일의 다음 줄 읽기
StringSplit(s, ",", a); // 쉼표로 구분된 문자열 요소를 배열로 추출
날짜 시간 T1=StrToTime(a[4]); // 다음으로 변형이 있습니다 ...
int ord=StrToInteger(a[8]);
이중 가격=StrToDouble(a[12]);

 
novichok2018 :

글쎄, 고마워. 적어도 무엇을 해야 하는지는 분명해졌습니다. 나는 방법을 알아 내려고 노력할 것입니다. 사실, 아직 어레이를 만나지 못했습니다. 어쨌든 다시 한번 감사드립니다.

적어도 하나의 블록을 작성하고 표시하십시오. 이 경우 더 여기에 프롬프트가 표시됩니다.

 
Rewerpool :

도움이되지 않았습니다!(


다시 잘 읽어보세요

 if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))

전체 코드는 다음과 같습니다

   for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) 
     {
     if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
        {
       if ( OrderMagicNumber ()==Magic && OrderType ()== OP_SELL )
          {
         break ;
          }
        }
      }
 
Rewerpool :

도움이되지 않았습니다!(


그래서 당신은 아무것도하지 않았다. 그들은 위에 썼습니다:

 if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))

그리고 당신은 확인없이 작성했습니다. 다음과 같이 더 읽기 쉽지만:

 for ( int i = OrdersTotal () - 1 ; i >= 0 ; --i)
{
   if (! OrderSelect (i, SELECT_BY_POS ))
       continue ;
   ....
}
 

@Ihor Herasko @Alekseu Fedotov

감사합니다!! 도움이 되었습니다!