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

 
Aliaksandr Hryshyn :
1. 뉴스의 백그라운드 로딩
2. 거래에 영향을 미치지 않도록 여러 스트림(서비스 사본 실행)에서 많은 계산.
3. Expert Advisor는 주문서에서 정보를 수집하고 서비스는 주기적으로 이를 zip 아카이브로 압축합니다.
4. 많은 어드바이저의 업무 중 모든 거래 정보를 수집, 처리하여 데이터베이스에 저장하거나 전송합니다.
5. ...
당신의 옵션은 무엇입니까?
1. 파일에 업로드하면 그렇습니다.

2. 할 수 있습니다.

3. 확실하지 않습니다. 서비스에서 Depth of Market 이벤트를 수락합니까? 그렇지 않은 경우 고문으로부터 이전해야 하며 의미를 잃게 됩니다.

4. 각 Expert Advisor가 단순히 보고서를 파일에 쓰고 서비스가 이를 읽고 분석한다면 그렇습니다.

나는 여전히 내 선택에 대해 생각하고 있습니다 ...
 
Roman :

Expert/Script에는 열린 차트가 필요합니다.
차트의 수는 터미널에 의해 제한됩니다.
차트의 각 그리기/업데이트는 시스템 메시지 대기열과 추가 리소스 로드입니다.

동의한다.
 
fxsaber :

2-3은 OBJ_CHART 의 스크립트를 통해 구현할 수 있습니다.

서비스는 터미널 시작 시 시작되며 스크립트는 이를 수행할 수 없습니다.
 
Aliaksandr Hryshyn :
서비스는 터미널 시작 시 시작되며 스크립트는 이를 수행할 수 없습니다.

이 두 작업에는 필요하지 않습니다.

 
Aliaksandr Hryshyn :
1. 뉴스의 백그라운드 로딩
2. 거래에 영향을 미치지 않도록 여러 스트림(서비스 사본 실행)에서 많은 계산.
3. Expert Advisor는 주문서에서 정보를 수집하고 서비스는 주기적으로 이를 zip 아카이브로 압축합니다.
4. 많은 어드바이저의 업무 중 모든 거래 정보를 수집, 처리하여 데이터베이스에 저장하거나 전송합니다.
5. ...
당신의 옵션은 무엇입니까?

이 모든 작업에 대해 조언자 그룹과 서비스 간의 데이터 교환 문제를 해결해야 합니다.

내가 서비스에 대해 제공할 수 있는 최대값은 다른 브로커의 가격이 가는 소켓을 듣고 중재에 참여하기 위해 사용자 지정 차트로 틱을 전달하고 사용자 지정 차트에서 TS 작업을 하는 고문입니다.

 
Igor Makanu :

이 모든 작업에 대해 조언자 그룹과 서비스 간의 데이터 교환 문제를 해결해야 합니다.

이제 리소스가 아닌 데이터베이스가 프로그램 간의 데이터 교환 을 위한 공유 메모리를 제공하여 구현과 상호 작용을 크게 단순화할 수 있습니다.
 
Sergey Lebedev :
서비스의 주요 문제는 여전히 터미널 핸들에 있지 않습니다. 이는 모두 한계 사용 사례입니다.

핸들 없이 자동 재연결기를 구현할 수 없습니다. 실제 거래를 위해서는 매우 필요한 것입니다.

 
스크립트/서비스의 다중 통화 OnTick/OnBookEvent에 대한 구현 옵션입니다.
 //#property service

#include <NewData.mqh> // https://c.mql5.com/3/354/NewData.mqh

// Script/Service main function.
void OnStart ()
{
   const string Symbols[] = { "EURUSD" , "GBPUSD" };
  
  NEWDATA<TICK> Ticks(Symbols);
  NEWDATA<BOOKS> Books(Symbols);

   while (! IsStopped ())
  {
    Ticks.Refresh();
    Books.Refresh();
        
     Sleep ( 50 );
  }
}

void OnTick ( const string &Symb )
{
   MqlTick Tick;
  
   if ( SymbolInfoTick (Symb, Tick))  
     Print (Symb + " - new tick: " + ( string )Tick.time);
}

void OnBookEvent ( const string &Symb )
{
   MqlBookInfo Books[];

   if ( MarketBookGet (Symb, Books))  
     Print (Symb + " - new book: " + ( string ) ArraySize (Books) + " bands." );
}


결과.

 2021.04 . 26 11 : 18 : 38.527 EURUSD - new tick: 2021.04 . 26 11 : 18 : 39
2021.04 . 26 11 : 18 : 38.527 EURUSD - new book: 14 bands.
2021.04 . 26 11 : 18 : 38.904 GBPUSD - new tick: 2021.04 . 26 11 : 18 : 39
2021.04 . 26 11 : 18 : 38.904 GBPUSD - new book: 16 bands.
2021.04 . 26 11 : 18 : 38.965 GBPUSD - new tick: 2021.04 . 26 11 : 18 : 39
2021.04 . 26 11 : 18 : 38.965 GBPUSD - new book: 16 bands.
2021.04 . 26 11 : 18 : 39.029 EURUSD - new tick: 2021.04 . 26 11 : 18 : 39
2021.04 . 26 11 : 18 : 39.029 EURUSD - new book: 14 bands.
2021.04 . 26 11 : 18 : 39.091 GBPUSD - new tick: 2021.04 . 26 11 : 18 : 39
2021.04 . 26 11 : 18 : 39.091 GBPUSD - new book: 15 bands.
2021.04 . 26 11 : 18 : 39.278 GBPUSD - new tick: 2021.04 . 26 11 : 18 : 40
2021.04 . 26 11 : 18 : 39.278 GBPUSD - new book: 16 bands.
2021.04 . 26 11 : 18 : 39.465 GBPUSD - new tick: 2021.04 . 26 11 : 18 : 40
2021.04 . 26 11 : 18 : 39.465 GBPUSD - new book: 16 bands.
2021.04 . 26 11 : 18 : 39.714 GBPUSD - new tick: 2021.04 . 26 11 : 18 : 40
2021.04 . 26 11 : 18 : 39.715 GBPUSD - new book: 16 bands.
2021.04 . 26 11 : 18 : 40.589 GBPUSD - new tick: 2021.04 . 26 11 : 18 : 41
2021.04 . 26 11 : 18 : 40.589 GBPUSD - new book: 16 bands.
파일:
NewData.mqh  2 kb
 
안녕하세요. 이 서비스를 사용하여 모든 차트의 모든 Expert Advisor에서 범용 메시지 발신자(메일, 스크린샷이 있는 텔레그램)를 만들고 싶었습니다. 아이디어는 EA가 차트, 메시지 텍스트 및 기타 매개변수와 함께 사용자 이벤트 를 보내고 서비스가 이벤트를 수신하고 지정된 차트의 스크린샷을 찍고 필요한 메시지를 보내는 것이었습니다. 그러나 서비스가 차트에서 이벤트를 수신할 수 없다는 것을 읽었습니다. 탈출구가 터미널의 전역 변수를 사용하는 것으로 밝혀졌습니다. 그래프가 요소를 추가하고 서비스가 처리(메시지 전송)할 때 요소를 삭제하는 구조의 전역 배열을 가정해 보겠습니다. 그런 아이디어에 대해 어떻게 생각하세요? 다른 생각이 있는 것은 아닐까? 저는 MQL을 처음 사용합니다. 이제는 쓰는 것보다 더 많이 읽습니다. 이 아이디어는 메시지를 보내는 작업에서 EA 스레드를 해제하기 위해 발생했습니다. 또한 표시기로 메시지를 보내는 데 사용할 수 있습니다.
 
Реter Konow # :
리소스를 통해 Expert Advisor에서 서비스로 모든 이벤트를 보낼 수 있습니다. 그리고 이제 데이터베이스를 통해서도.
리소스를 통해 - 파일에 쓰는 것이 어드바이저이고, 리소스 변수로 연결하는 서비스에서입니까?