MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1166

 

OrdersTotal() 에 대한 기호로 주문 선택을 설정하는 방법을 알려주시겠습니까?

   int total= OrdersTotal ();

   if (total== 0 &&Bid>=OrderBuy&&Bid<=OrderBuy+ 10 * Point )
    {
     if ( OrderSend ( Symbol (),OP_BUY,Lot,Ask, 5 , 0 , 0 , NULL , 0 , 0 , clrNONE )){:: Alert ( " Order Open " );}
    }

이제 한 쌍에 미결 주문이 있으면 다른 쌍에서는 열리지 않습니다.

 
MakarFX :

OrdersTotal()에 대한 기호로 주문 선택을 설정하는 방법을 알려주시겠습니까?

이제 한 쌍에 미결 주문이 있으면 다른 쌍에서는 열리지 않습니다.

코드 베이스를 보면 각 어드바이저에 예제가 있습니다.

 
Vladimir Pastushak :

코드 베이스를 보면 각 어드바이저에 예제가 있습니다.

나는 프로그래머가 아니다

저에게는 복잡합니다.

 
MakarFX :

나는 프로그래머가 아니다

저에게는 복잡합니다.

어렵지 않다

기본 EA 작성을 위한 모든 기능은 다음과 같습니다. https://www.mql5.com/ru/forum/131859

주제별 OrdersTotal() - 터미널에서 모두 열린 주문(0부터 번호 지정)이므로 OrderSelect()를 사용하여 하나씩 선택하고(루프에서 정렬) 필요한 주문으로 조작해야 합니다.

 for (i= OrdersTotal ()- 1 ; i>= 0 ; i--)
{
   if ( OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) 
  {
   // проверим символ ордера, проверим магикномер ордера....
  }
}
Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
MakarFX :

OrdersTotal()에 대한 기호로 주문 선택을 설정하는 방법을 알려주시겠습니까?

이제 한 쌍에 미결 주문이 있으면 다른 쌍에서는 열리지 않습니다.

필요에 따라 주기적으로 주문을 확인(계산)하십시오.
중요한 작업 전에 호출되는 각 EA에 루프(무거운 메서드)가 있습니다.

for(int pos=OrdersTotal()-1; pos>=0;pos--) {

        if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {

                selectFailed=true; /* не удалось "выбрать" ордер - статистика может быть неверной */
                continue;

        }

        if (OrderCloseTime()!=0) { /* ордер закрыт но ещё не удалён из списка*/ continue; }

        if (OrderMagicNumber()==0) { /* ордер выставлен юзером */ } continue;
        else if (OrderMagicNumber()!=_Magic) { /* ордер выставлен другим советником */ continue; }

        if (OrderSymbol()!=_Symbol) { /* ордер с правильным Magic но на другом символе */ continue; }

       /// обработка рабочих ордеров, с правильным Magic на символе советника (то есть наш ордер)

       /// проверяются несработки, считается кол-во, статистика, позиции и прочее 

}

기호로 주문 확인이 색상으로 강조 표시됩니다.

 
Maxim Kuznetsov :

필요에 따라 주기적으로 주문을 확인(계산)하십시오.
중요한 작업 전에 호출되는 각 EA에 루프(무거운 메서드)가 있습니다.

for(int pos=OrdersTotal()-1; pos>=0;pos--) {

        if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {

                selectFailed=true; /* не удалось "выбрать" ордер - статистика может быть неверной */
                continue;

        }

        if (OrderCloseTime()!=0) { /* ордер закрыт но ещё не удалён из списка*/ continue; }

        if (OrderMagicNumber()==0) { /* ордер выставлен юзером */ } continue;
        else if (OrderMagicNumber()!=_Magic) { /* ордер выставлен другим советником */ continue; }

        if (OrderSymbol()!=_Symbol) { /* ордер с правильным Magic но на другом символе */ continue; }

       /// обработка рабочих ордеров, с правильным Magic на символе советника (то есть наш ордер)

       /// проверяются несработки, считается кол-во, статистика, позиции и прочее 

}

기호로 주문 확인이 색상으로 강조 표시됩니다.

이 주제에 대해 내가 이해하는 것처럼 역사적 주문 티켓이 손실될 수 있습니다. 문제는 MT4의 주문 티켓( SELECT_BY_TICKET )과 MT5의 거래 및 위치 티켓이 변경될 수 있는지 여부입니다.

또한 티켓으로 OrderSelect 후 시간이 지남에 따라 주문이 변경될 수 있습니다. 예를 들어 다음 날. 어드바이저가 꺼지지 않습니다.

보류 중인 주문이 시장 주문이 된 경우 주문 유형별로 확인할 수 있습니다. 시장이 마감된 경우 주문 마감 시간을 확인합니다. 이는 0이 아닙니다. OrderCloseTime()!=0

보류 중인 주문이 평생 마감된 경우 주문 티켓을 추적하는 방법.

그리고 문제는 시장 주문(MT4)에 평생이 있습니까? 작동합니까?

 
MakarFX :

OrdersTotal()에 대한 기호로 주문 선택을 설정하는 방법을 알려주시겠습니까?

이제 한 쌍에 미결 주문이 있으면 다른 쌍에서는 열리지 않습니다.

질문이 제거되었습니다. 모두에게 감사합니다.

 
안녕! 무엇이 잘못되었는지 이해가 되지 않습니다. 왜 Alert: time3-time1 = wrong datetime이라고 작성합니까?
 datetime time1 = iTime ( NULL , 0 , 1 );
datetime time3 = iTime ( NULL , 0 , 3 );
datetime delta3 = (time3-time1);   Alert ( "time3-time1 = " ,delta3); 


 
novichok2018 :
안녕! 무엇이 잘못되었는지 이해가 되지 않습니다. 왜 Alert: time3-time1 = wrong datetime이라고 작성합니까?


숫자가 음수로 밝혀졌기 때문입니다 :-)

위의 논리에 따르면 time1 __always__는 time3보다 큽니다.

 
Maxim Kuznetsov :

숫자가 음수로 밝혀졌기 때문입니다 :-)

위의 논리에 따르면 time1 __always__는 time3보다 큽니다.

고맙습니다! 뇌는 때때로 꺼집니다.