서비스. 이미 작업 중이신가요? - 페이지 21

 

레나트, 서비스에 커스텀 글라스 구현이 가능할까요?
설명서에 따르면 OnBookEvent 핸들러는 표시기 및 Expert Advisors에서 호출됩니다 .
그러나 서비스는 어떻습니까? 서비스에서 안경을 시작하는 방법은 무엇입니까?
서비스에서 맞춤형 안경을 출시하고 싶습니다.
당신에 따르면 서비스는 OnStart 이외의 다른 핸들러를 지원하지 않으며 이것이 문제가됩니다.
사실 서비스는 지표 및 Expert Advisors 에서 시스템 OnTimer보다 훨씬 빠르게 처리됩니다.
그리고 커스텀 오더북을 만들기 위해서는 서비스를 이용하는 것이 좋습니다.

추신
지점을 읽었는데 존경하는 프로그래머가 서비스 신청을 찾을 수 없다는 사실에 놀랐습니다.
서비스는 전체 프로젝트의 비동기 실행에 이르기까지 많은 것을 구현할 수 있고 서비스 간에 작업 논리를 분산할 수 있는 멋진 것입니다.
그러나 Thread(params) 함수를 언어에 추가하는 것이 더 논리적일 것입니다. 이 함수는 함수에 전달된 인수에 대한 스레드 병렬화를 구현합니다.
글쎄, 쓰레드가 있다면, 프로세스는 프로세스(params) 함수의 형태로 그들과 함께 간다.

중요한 이점 중 하나는 서비스가 시스템 시간보다 빠르게 처리된다는 것입니다. 단 1ms 만에 처리되며 그 이하일 수도 있습니다.
While() 루프에서 강제로 Sleep (1) 제약 조건을 설정했기 때문입니다.
그리고 Expert Advisors 및 표시기에서 EventSetMillisecondTimer(1) 이벤트가 있는 시스템 OnTimer()는 ~ 20ms 내에 처리됩니다.
처리 성능 측면에서 서비스의 이러한 증가는 미약하지 않습니다.
서비스가 전문가 처리기를 지원하지 않아 가능한 솔루션이 크게 제한되는 것이 안타깝습니다.
얼마 전에 사용자가 차트 없이 Expert Advisors의 출시를 구현하도록 요청했는데 서비스가 이 문제를 해결할 것입니다.
서비스 메뉴의 '자동거래' 버튼으로 판단하여 거래 가능성이 있습니다.
그러나 하나의 OnStart 핸들러로는 본격적인 거래 솔루션을 구축할 수 없습니다.

 
fxsaber :

사실, 매우 편리합니다.

컴퓨터를 재부팅하고 RAMDrive를 잊어버렸습니다. MT5를 실행하고 즉시 문제를 보고합니다.

자동마운트+접합+동적할당 기능으로 램디스크를 사용하는게 더 간편하지 않나요?
PC가 시작되면 자동으로 모든 것을 마운트하고 연결하며 디스크에 공간이 충분하지 않으면 RAM에서 자동으로 추가합니다.

 
Sergey Dzyublik :

자동마운트+접합+동적할당 기능으로 램디스크를 사용하는게 더 간편하지 않나요?
PC가 시작되면 자동으로 모든 것을 마운트하고 연결하며 디스크에 공간이 충분하지 않으면 RAM에서 자동으로 추가합니다.

항상 필요한 것은 아니므로 파이 생성이 시작되지 않았습니다.

 

재부팅 시 터미널 은 사용자 지정 기호 의 속성을 변경하는 것을 좋아합니다. 예를 들어, 해당 통화.

서비스가 구출할 수 있는 곳입니다. 시작 시 테스터의 승인되지 않은 동작이 수정됩니다.

 
서비스 프로그램의 활성 차트에 대한 설명을 어떻게 표시할 수 있습니까?
그리고 일반적으로 다른 그래픽을 표시할 수 있습니까?

 //+------------------------------------------------------------------+
//| Service program start function                                   |
//+------------------------------------------------------------------+

int OnStart ()
{
   Comment ( "text" );

   return ( 0 );
}
 

나는 스스로 대답한다))

 int OnStart ()
{
   ChartCommentSet( "Hello Service" , ChartFirst ());
   
   
   return ( 0 );
}

//+------------------------------------------------------------------+ 
//| Функция устанавливает текст комментария в левом верхнем углу     | 
//| графика.                                                         | 
//+------------------------------------------------------------------+ 
bool ChartCommentSet( const string str, const long chart_ID= 0 ) 
{ 
   //сбросим значение ошибки 
   ResetLastError (); 
   
   //установим значение свойства 
   if (! ChartSetString (chart_ID, CHART_COMMENT , str)) 
   { 
       //выведем сообщение об ошибке в журнал "Эксперты" 
       Print ( __FUNCTION__ + ", Error Code = " , GetLastError ()); 
       return ( false ); 
   } 
   
   //успешное выполнение 
   return ( true ); 
}
 
어드바이저로부터 서비스를 시작하는 방법은 무엇입니까?
 
Roman :

나는 스스로 대답한다))

예, 모든 것이 왼쪽 상단 모서리 에 기록됩니다.

 //+------------------------------------------------------------------+
//| Service program start function                                   |
//+------------------------------------------------------------------+
void OnStart ()
  {
//---
   ChartCommentSet( "Hello Service" , ChartFirst ());


   return ;
  }
//+------------------------------------------------------------------+
//| Функция устанавливает текст комментария в левом верхнем углу     |
//| графика.                                                         |
//+------------------------------------------------------------------+
bool ChartCommentSet( const string str, const long chart_ID= 0 )
  {
//сбросим значение ошибки
   ResetLastError ();

//установим значение свойства
   if (! ChartSetString (chart_ID, CHART_COMMENT , str))
     {
       //выведем сообщение об ошибке в журнал "Эксперты"
       Print ( __FUNCTION__ + ", Error Code = " , GetLastError ());
       return ( false );
     }

//успешное выполнение
   return ( true );
  }
//+------------------------------------------------------------------+ 

스냅 사진

 
fxsaber :

다시 시작할 때 터미널은 사용자 정의 기호의 속성을 변경하는 것을 좋아합니다. 예를 들어, 해당 통화.

서비스가 구출할 수 있는 곳입니다. 시작 시 테스터의 승인되지 않은 동작이 수정됩니다.

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

사용자 정의 기호. 오류, 버그, 질문, 제안.

fxsaber , 2019.09.15 22:30

터미널을 다시 시작한 후 사용자 지정 기호의 통화가 자동으로 변경되는 문제를 해결합니다.

 // Сервис корректирует валюты всех кастомных символов.
#property service

bool CorrectCurrency( const string Symb, const string Currency )
{  
   return ( SymbolInfoInteger (Symb, SYMBOL_CUSTOM ) && 
         CustomSymbolSetString (Symb, SYMBOL_CURRENCY_BASE , Currency) &&
         CustomSymbolSetString (Symb, SYMBOL_CURRENCY_MARGIN , Currency) &&
         CustomSymbolSetString (Symb, SYMBOL_CURRENCY_PROFIT , Currency));
}

void CorrectSymbols( void )
{
   const string Currency = AccountInfoString ( ACCOUNT_CURRENCY );
  
   for ( int i = SymbolsTotal ( false ) - 1 ; i >= 0 ; i--)
    CorrectCurrency( SymbolName (i, false ), Currency);
    
   return ;
}

void OnStart ()
{
  CorrectSymbols();
}
 

서비스에 Expert Advisors의 자동 최적화 를 실행하는 기능을 추가합니다.

글쎄요, 예를 들어 최적화/실행이 완료된 것을 알 수 있도록 기능이 다릅니다.