초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1050

[삭제]  

시간별로 Expert Advisor의 작업 블록에 분을 추가하는 방법은 무엇입니까?

 //input parametrs
input uchar                 InpStartHour            = 1 ;           // Start hour
input uchar                 InpEndHour              = 23 ;           // End hour

//---------------------------

void OnTick ()
  { 
   MqlDateTime STimeCurrent;
   TimeToStruct ( TimeCurrent (),STimeCurrent);
  
   if (STimeCurrent.hour<InpStartHour || STimeCurrent.hour>InpEndHour)
       return ;
   }

 
Vladimir Baskakov :

시간당 고문의 작업 블록에 분을 추가하는 방법은 무엇입니까?

높음 낮음 전략 정시 2 :

bool TimeControl() - 시간 확인을 담당하는 함수입니다. 두 가지 상태에서 작동할 수 있습니다. 둘 다 하루 내의 날짜 또는 격일로 날짜 전환입니다.

 //--- input parameters
***
input bool      InpTimeControl       = true ;         // Use time control
input uchar     InpStartHour         = 10 ;           // Start Hour 
input uchar     InpStartMinute       = 01 ;           // Start Minute 
input uchar     InpEndHour           = 15 ;           // End Hour 
input uchar     InpEndMinute         = 02 ;           // End Minute 
***
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   if (!TimeControl())
       return ;
  }
//+------------------------------------------------------------------+
//| TimeControl                                                      |
//+------------------------------------------------------------------+
bool TimeControl( void )
  {
   if (!InpTimeControl)
       return ( true );
   MqlDateTime STimeCurrent;
   datetime time_current= TimeCurrent ();
   if (time_current== D'1970.01.01 00:00' )
       return ( false );
   TimeToStruct (time_current,STimeCurrent);
   if ((InpStartHour* 60 * 60 +InpStartMinute* 60 )<(InpEndHour* 60 * 60 +InpEndMinute* 60 )) // intraday time interval
     {
/*
Example:
input uchar    InpStartHour      = 5;        // Start hour
input uchar    InpEndHour        = 10;       // End hour
0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
_  _  _  _  _  +  +  +  +  +  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  +  +  +  +  +  _  _  _  _  _  _
*/
       if ((STimeCurrent.hour* 60 * 60 +STimeCurrent.min* 60 >=InpStartHour* 60 * 60 +InpStartMinute* 60 ) && 
         (STimeCurrent.hour* 60 * 60 +STimeCurrent.min* 60 <InpEndHour* 60 * 60 +InpEndMinute* 60 ))
         return ( true );
     }
   else if ((InpStartHour* 60 * 60 +InpStartMinute* 60 )>(InpEndHour* 60 * 60 +InpEndMinute* 60 )) // time interval with the transition in a day
     {
/*
Example:
input uchar    InpStartHour      = 10;       // Start hour
input uchar    InpEndHour        = 5;        // End hour
0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
_  _  _  _  _  _  _  _  _  _  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  _  _  _  _  _  +  +  +  +  +  +
*/
       if (STimeCurrent.hour* 60 * 60 +STimeCurrent.min* 60 >=InpStartHour* 60 * 60 +InpStartMinute* 60 || 
         STimeCurrent.hour* 60 * 60 +STimeCurrent.min* 60 <InpEndHour* 60 * 60 +InpEndMinute* 60 )
         return ( true );
     }
   else
       return ( false );
//---
   return ( false );
  }
 

말해봐 플리즈

MQL5에서는 포지션의 절반을 청산해야 하는데, 만약 그 포지션의 절반이 최소 랏보다 적으면 체크로 하고 나서 전체 볼륨을 청산하는 것이겠죠?

 double volume= MathMax ( PositionGetDouble ( POSITION_VOLUME )/ 2 , SymbolInfoDouble ( _Symbol , SYMBOL_VOLUME_MIN )/ AccountInfoInteger ( ACCOUNT_LEVERAGE ));
 
Evgeny Dyuka :

말해봐 플리즈

MQL5에서는 포지션의 절반을 청산해야 하는데, 만약 그 포지션의 절반이 최소 랏보다 적으면 체크로 하고 나서 전체 볼륨을 청산하는 것이겠죠?

로트가 최소 2배 미만이면 단말을 괴롭힐 필요가 없을까?

 

시장에 대한 Expert Advisor 테스트를 통과할 수 없습니다. 오류를 반환하지만 보고서에 오류가 없습니다.

어떻게 될 것인가?


 
Evgeny Dyuka :

시장에 대한 Expert Advisor 테스트를 통과할 수 없습니다. 오류를 반환하지만 보고서에 오류가 없습니다.

어떻게 될 것인가?


나중에 다시 시도하세요.
 

주문의 종가(거래, 포지션 - 무엇이든)를 얻는 방법은 무엇입니까?

주문의 경우 ORDER_PRICE_OPEN만 사용할 수 있고 ORDER_PRICE_CLOSE는 사용할 수 없습니다.

또한 직책에는 POSITION_PRICE_OPEN 만 있습니다.

거래는 일반적으로 추상적인 DEAL_PRICE를 이해하지 못합니다.

포럼을 검색했는데 찾지 못했습니다.

 
secret :

주문의 종가(거래, 포지션 - 무엇이든)를 얻는 방법은 무엇입니까?

주문의 경우 ORDER_PRICE_OPEN만 사용할 수 있으며 ORDER_PRICE_CLOSE는 사용할 수 없습니다.

또한 직책은 POSITION_PRICE_OPEN 만 있습니다.

거래는 일반적으로 추상적인 DEAL_PRICE를 이해하지 못합니다.

포럼을 검색했는데 찾지 못했습니다.

MQL5에서 더 쉽게 이해하고 작업하려면 다음을 수행하십시오.

하나. ***

2. 종가가 필요한 경우 거래내역을 참조하지 않고는 할 수 없습니다. HistorySelect 는 거래 내역 요청을 담당합니다.

3. 정보를 파일이나 "전문가" 탭으로 출력하는 기록 작업의 예는 거래 및 주문 기록 코드에 있습니다.

4. 또한 이것이 어떤 거래인지 이해하려면 다음을 알아야 합니다.

ENUM_DEAL_ENTRY - 거래 방향 - 시장 진입, 시장 퇴출 또는 반전

ENUM_DEAL_ENTRY

식별자

설명

DEAL_ENTRY_IN

시장 진입

DEAL_ENTRY_OUT

시장 출구

DEAL_ENTRY_INOUT

반전

DEAL_ENTRY_OUT_BY

반대 위치로 닫기


ENUM_DEAL_TYPE - 거래 유형

ENUM_DEAL_TYPE

식별자

설명

DEAL_TYPE_BUY

구입

DEAL_TYPE_SELL 판매

***



맞습니다. 기본입니다.

 
Vladimir Karputov :

답변 감사합니다. 설명서와 귀하의 예제를 모두 살펴보았지만 여전히 MT4에서 OrderClosePrice()와 유사한 매개변수를 얻는 방법을 찾지 못했습니다.

 
secret :

답변 감사합니다. 설명서와 귀하의 예제를 모두 살펴보았지만 여전히 MT4에서 OrderClosePrice()와 유사한 매개변수를 얻는 방법을 찾지 못했습니다.

또는 https://www.mql5.com/en/code/16006 을 엽니다.

@fxsaber 의 구현을 참조하십시오.

또는 지정된 라이브러리를 연결하고 어드바이저 코드를 MT4에서 MT5로 전송하면 99%의 경우 아무 것도 조정할 필요가 없으며 모든 것이 MT4에서와 같이 작동합니다.

MT4Orders
MT4Orders
  • www.mql5.com
Данная библиотека позволяет работать с ордерами в MQL5 (MT5-hedge) точно так же, как в MQL4. Т.е. ордерная языковая система (ОЯС) становится идентичной MQL4. При этом сохраняется возможность параллельно использовать MQL5-ордерную систему. В частности, стандартная MQL5-библиотека будет продолжать полноценно работать. Выбор между ордерными...