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

 
다중 문자 OnTick의 빠른 구현

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

MetaTrader 5 전략 테스터의 테스트 결과 분석 및 최적화

fxsaber , 2018.01.28 12:25

지시자

 #property indicator_chart_window
#property indicator_plots 0

input long Chart = 0 ; // идентификатор графика-получателя события
input int Index = 0 ;

int OnCalculate ( const int rates_total, const int prev_calculated, const int , const double &[] )
{
   if (prev_calculated)
     EventChartCustom (Chart, 0 , Index, 0 , NULL );
  
   return (rates_total);
}


조언자

 input int AmountSymbols = 1 ;

const string Symbols[] = { "EURUSD" , "GBPUSD" , "AUDUSD" , "USDJPY" , "USDCAD" };

void OnInit ()
{
   for ( int i = 0 ; i < AmountSymbols; i++)
     if (Symbols[i] != _Symbol )
       iCustom (Symbols[i], PERIOD_W1 , "Spy.ex5" , ChartID (), i); // MQL5\Indicators\Spy.ex5
}

void OnTick ()
{
   OnTick ( _Symbol ); 
}

void OnChartEvent ( const int id, const long &lparam, const double &, const string & )
{
   if (id == CHARTEVENT_CUSTOM )
     OnTick (Symbols[( int )lparam]);
}

// Мультисимвольный OnTick
void OnTick ( const string &Symb )
{
}
 
fxsaber :
다중 문자 OnTick의 빠른 구현
타이머 대신 사용할 수 있습니까? 우리는 볼 것이다
 
블라디슬라프 안드루셴코 :
타이머 대신 사용할 수 있습니까? 우리는 볼 것이다

예, OnInit는 배열의 문자를 구독합니다.

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

Init() 및 DeInit() 실행 순서

슬라바 , 2017.04.14 10:21

서비스에는 OnTick(문자열 기호)이 있습니다. 그러나 특정 기호의 눈금을 구독해야 합니다.
 

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

MetaTrader 5 전략 테스터의 테스트 결과 분석 및 최적화

fxsaber , 2018.01.29 15:24

최적화 속도는 패스 순서에 따라 다릅니다. 단일 문자 패스가 먼저 발생한 다음 다중 문자 패스가 있는 경우 실행 시간은 최적화 패스의 역순보다 짧습니다.
성능 향상을 위한 필수 MQL5 코드 최적화 후, 이런 식으로 클라우드에 저장해 보세요.


ZY 아마도 정상적인 코드 작성으로 클라우드 비용의 90%를 절약할 수 있을 것입니다. 그러나 이것이 저자가 생각하는 마지막 것입니다.

 
fxsaber :
다중 문자 OnTick의 빠른 구현

시원한!!!
오랫동안 기다려온 서비스가 없어도 실제로 작동합니다.

매우 감사합니다!

그리고 아무리 노력해도 MQL4에서는 작동하지 않았습니다. iCustom의 표시기는 iCustom을 마지막으로 호출한 후 약 10밀리초 동안 사용자 메시지를 시뮬레이션한 다음 "무음으로 전환"합니다.

파일:
 
니콜라이 셈코 :

MQL4에서는 아무리 노력해도 작동하지 않았습니다. iCustom의 표시기는 iCustom을 마지막으로 호출한 후 약 10밀리초 동안 사용자 메시지를 시뮬레이션한 다음 "무음으로 전환"합니다.

MT4에서 표시기 "핸들"의 수명은 터미널 자체에서 모니터링됩니다. 따라서 이 솔루션은 적합하지 않습니다.


ZY 방법은 7년 이상 전에 설명되었습니다.

Реализация мультивалютного режима в MetaTrader 5
Реализация мультивалютного режима в MetaTrader 5
  • 2011.01.10
  • Konstantin Gruzdev
  • www.mql5.com
В настоящее время мультивалютных торговых систем, индикаторов и экспертов разработано огромное количество. Тем не менее, до сих пор создатели этого "огромного количества" сталкивались со специфическими для мультивалютных систем трудностями. С выпуском в свет терминала MetaTrader 5 и языка программирования MQL5 появилась возможность  реализации...
 
수동으로 주문을 보낼 때 항상 OrderCheck가 먼저 호출됩니다. 그리고 통과되지 않으면 거래 주문 이 전송되지 않습니다.
 
OnTradeTransaction 을 사용하면 계정에서 실행되는 거래 "복제" Expert Advisor의 존재를 모니터링하는 비거래 Expert Advisor(서비스)를 작성할 수 있습니다. 이러한 상황은 때때로 부주의로 인해 발생합니다.
 
MT5에서는 주문을 삭제할 때도 그 기능을 고려해야 합니다. SB의 예

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

전문가 고문: VR---ZVER v.2

fxsaber , 2018.02.06 11:29

 void DeleteAllOrders()
  {
   for ( int i= OrdersTotal ()- 1 ;i>= 0 ;i--)
       if (m_order.SelectByIndex(i) && (m_order.State() == ORDER_STATE_PLACED ) )
         if (m_order. Symbol ()==m_symbol.Name() && m_order.Magic()==m_magic)
            m_trade. OrderDelete (m_order.Ticket());
  }
그리고 물론 OrderDelete 이후에 다시 주기를 거치는 것이 바람직합니다.
 
fxsaber :
다중 문자 OnTick의 빠른 구현
건너뛴 틱이 있을 수 있습니다.
사유: