mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 45

 
알렉세이 빅토로프 :

어쩌면 이것이 효과가 있을까요? 외환이 항상 올바르게 표시되는 것은 아니지만.

예를 들어 SBRF-9.17의 경우 분 차트에 따르면 금요일의 거래 세션 종료 시간 == 23:45:00이고 이 기능은 00:00:00을 표시합니다. 거래소, 저녁 거래 세션 종료 시간 23:50

하지만 그게 요점이 아닙니다. 우리가 있는 곳에서 수표를 만들고 상수로 대체할 수 있지만 누군가가 자신의 자전거를 쓰지 않기 위해 이미 이 기능을 구현했을 수도 있습니다.
 
알렉세이 빅토로프 :

의존도 없고 있을 수도 없습니다. 따라서 특별한 코드가 있을 수 없습니다.

개발자는 이러한 경우에 RNG를 사용하지 않습니다. 알고리즘은 명확하고 재현 가능합니다.

 
콘스탄틴 :

현재 시간 간격을 찾는 다양한 방법으로 파생 상품 시장에서 마지막 날 시장의 마감 시간 을 결정하는 방법:

1. 우리는 토요일-일요일 사이 에 있으며 금요일 저녁 거래 세션 의 마감 시간이 필요합니다.
2. 우리는 월요일-금요일 휴장장 사이에 있으며 월요일-목요일 저녁 세션의 마감 시간이 필요합니다.
3. 우리는 월요일의 거래 간격에 있습니다. 금요일 저녁 거래 세션의 마감 시간이 필요합니다.
4. 우리는 화요일~금요일 거래 간격에 있습니다. 월요일~목요일 저녁 세션의 마감 시간이 필요합니다.

누군가 비슷한 기능을 작성했을 수도 있습니다. 그렇지 않으면 휠을 재발명하고 싶지 않습니다))

아마도 상수를 제외하고는 다음을 생각해내는 것이 더 유연하지 않을 것입니다.

 /*!
   \brief   Расчет конечной даты запроса
*/
datetime CVolumeCluster::CalcStopDate( void ) {
   MqlDateTime _date;
   datetime _time_t = TimeTradeServer (_date);

   if (_date.hour == 23 && _date.min >= 44 ) {           // определяем время окончания торговой сессии
      _date.hour = 23 ;
      _date.min  = 44 ;
      _date.sec  = 59 ;
      _time_t    = StructToTime (_date);
   } else {
       TimeToStruct (_time_t - 86400 , _date);
      _date.hour = 23 ;
      _date.min  = 44 ;
      _date.sec  = 59 ;
       if (_date.day_of_week == 0 || _date.day_of_week == 6 )
         _date.day_of_week = 5 ;
      _time_t = StructToTime (_date);
   }
//---
   return _time_t;
}
 

누가 CCanvas 클래스로 작업하는지 알려주십시오. 그래픽 레이블 업데이트를 리소스 집약적으로 만드는 방법을 알려주세요. 예를 들어 그래픽 레이블에 수십만 라인이 있고 크기를 조정할 때 그래픽 레이블에 각 라인을 다시 그려야 합니다. 왜냐하면 단순 크기 조정으로 그리지 않으면 그래픽 레이블 개체 자체의 크기가 조정되지만 차트의 선은 표시되지 않습니다.

 
콘스탄틴 :

아마도 상수를 제외하고는 다음을 생각해내는 것이 더 유연하지 않을 것입니다.

더 쉽지 않니?

 /********************Script program start function*******************/
void OnStart ()
{
 datetime timeArray[ 1 ], barArray[ 1 ];
 CopyTime ( _Symbol , PERIOD_D1 , 0 , 1 , timeArray);
 CopyTime ( _Symbol , PERIOD_M1 , timeArray[ 0 ]- 1 , 1 , barArray);
 Print (barArray[ 0 ];
} /*******************************************************************/
 
알렉세이 빅토로프 :

더 쉽지 않니?

 CopyTime ( _Symbol , PERIOD_D1 , 0 , 1 , timeArray);               // время текущего дня 00:00:00
 CopyTime ( _Symbol , PERIOD_M1 , timeArray[ 0 ]- 1 , 1 , barArray);   // время открытия - 1 секунду

결과는 기본적으로 정확합니다)) ATP

 
지금 (1626)은 쟁기질하지 않습니다

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

mql5 언어의 특징, 미묘함 및 작업 방법

fxsaber , 2017.05.05 23:48

 // Возвращает текущее количество объектов классов
int GetAmountObjects( void )
{
   const class CLASS_TMP {} Tmp;
  
   return (( int ):: StringFormat ( "%d" , &Tmp) - 1 );
}
적용 예
 int OnInit ()
{
   if (GetAmountObjects() > 0 )
     Print ( "До " + __FUNCSIG__ + " были вызваны конструкторы!" );

   return ( INIT_SUCCEEDED );
}
 
// Советник возвращает полностью сформированные торговые запросы ( включая ручные )
#define TOSTRING(A)   #A + " = " + ( string )(A) + "\n"
#define TOSTRING2(A) #A + " = " + EnumToString (A) + " (" + ( string )(A) + ")\n"

string ToString( const MqlTradeRequest &Request )
{
   return (TOSTRING2(Request.action) + TOSTRING(Request.magic) + TOSTRING(Request.order) +
         TOSTRING(Request.symbol) + TOSTRING(Request.volume) + TOSTRING(Request.price) + 
         TOSTRING(Request.stoplimit) + TOSTRING(Request.sl) +  TOSTRING(Request.tp) + 
         TOSTRING(Request.deviation) + TOSTRING2(Request.type) + TOSTRING2(Request.type_filling) +
         TOSTRING2(Request.type_time) + TOSTRING(Request.expiration) + TOSTRING(Request.comment) +
         TOSTRING(Request.position) + TOSTRING(Request.position_by));
}

void OnTradeTransaction (   const MqlTradeTransaction &, const MqlTradeRequest & Request, const MqlTradeResult & )
{
   if (Request.action)
     Print (ToString(Request));
}

동일한 필링에 문제가 있는 경우 이 Expert Advisor를 실행하여 수동으로 필요한 주문을 생성합니다(터미널에서 F9). 생성된 거래 요청은 EA에서 인쇄합니다.

불행히도 실제 계정에서 이 작업을 수행하는 것은 문제가 있습니다. 개발자 제안을 거부했습니다.

 
fxsaber :

동일한 필링에 문제가 있는 경우 이 Expert Advisor를 실행하여 수동으로 필요한 주문을 생성합니다(터미널에서 F9). 생성된 거래 요청은 EA에서 인쇄합니다.

누락된 유일한 것은 예입니다

 
라시드 우마로프 :

누락된 유일한 것은 예입니다

수동으로 설정


로그에서 생성된 거래 요청을 받습니다.

Request.action = TRADE_ACTION_PENDING ( 5 )
Request.magic = 0
Request.order = 157092716
Request.symbol = EURUSD
Request.volume = 0.01
Request.price = 1.13941
Request.stoplimit = 0.0
Request.sl = 1.13926
Request.tp = 1.13955
Request.deviation = 0
Request.type = ORDER_TYPE_BUY_LIMIT ( 2 )
Request.type_filling = ORDER_FILLING_RETURN ( 2 )
Request.type_time = ORDER_TIME_SPECIFIED ( 2 )
Request.expiration = 2017.07 . 11 12 : 08 : 00
Request.comment = 
Request.position = 0
Request.position_by = 0
실제로 이것은 불행히도 매우 비쌉니다. 그래서 제안을 하게 되었습니다.
사유: