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

 
서비스는 차트의 모든 프로그램과 상호 작용할 수 있어야 합니다. 공유 프로그램 메모리.
 
Реter Konow :
서비스는 차트의 모든 프로그램과 상호 작용할 수 있어야 합니다. 공유 프로그램 메모리.
이제 데이터 교환 을 구성할 수 있는 리소스가 있습니다.
 
Renat Fatkhullin :
이제 데이터 교환을 구성할 수 있는 리소스가 있습니다.

string형의 데이터 교환은 매우 필요합니다. 일반 유형. 어떤 목적을 위해.

OnChartEvent() 또는 디스크의 부담 없이 모든 정보를 빠르게 교환하는 데 이상적인 모든 프로그램에 대한 하나의 공통 문자열 배열입니다. 모든 것이 비동기식입니다. 한 프로그램에서 녹음하고 다른 프로그램에서 읽습니다.

 

교환 메커니즘에 대해 생각해 봅시다. 지금이 적기입니다.

문자열 값을 교환하기 위한 전역 변수 가 있습니다.

 
Vladimir Pastushak :

프로젝트는 매우 불편합니다. 모든 것을 폴더로 분류할 방법이 없습니다. 그리고 한 번에 두 개의 플랫폼용 코드를 개발할 수 있는 방법이 없습니다.

이해가 안되는 부분이 있을수도..

예를 들어 프로젝트를 통해 모든 것을 개발합니다. MQL4/5 간에도 교환이 편리합니다. 물론 지금은 처음에는 두 플랫폼 모두에서 한 번에 모든 것을 작성하려고 합니다. 그건 그렇고, MQL5에서는 4-ku에서 쉽게 컴파일할 수 있지만 때로는 글리치가 발생할 수 있습니다. 따라서 컴파일과 함께 어쨌든 퍼뜨리는 것이 좋습니다.

PS 이 프로젝트는 열려 있고, 당신은 볼 수 있습니다.
 
Renat Fatkhullin :

교환 메커니즘에 대해 생각해 봅시다. 지금이 적기입니다.

문자열 값을 교환하기 위한 전역 변수 가 있습니다.

 datetime    GlobalVariableSet ( 
   string   name,       // имя 
   double   value       // устанавлимое значение 
   );

@fxsaber솔루션 이 있지만 명확하지 않으며 즉시 찾을 수 없습니다.

 
Mikhail Dovbakh :

@fxsaber솔루션 이 있지만 명확하지 않으며 즉시 찾을 수 없습니다.

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

라이브러리: TradeTransactions

fxsaber , 2018.12.17 23:48

리소스를 통해 무엇이든 공유할 수 있습니다.

 // Пример обмена любыми данными (включая строковые массивы).

#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166

#define PRINT(A) Print ( #A + " = " + ( string )(A));

void OnStart ()
{    
   // Произвольные данные для примера
   string Str[] = { "123" , "Hello World!" };
   double Num = 5 ;
   MqlTick Tick = { 0 };
  Tick.bid = 1.23456 ;

   const RESOURCEDATA< uint > Resource; // Ресурс для обмена данными
  CONTAINER< uint > Container;         // Создаем контейнер - все будет храниться в массиве простого типа (в примере выбран uint)
  
   // Заполняем контейнер разными данными
  Container[ 0 ] = Str;
  Container[ 1 ] = Num;
  Container[ 2 ] = Tick;
    
   // Распечатаем типы хранимых в контейнере данных
   for ( int i = 0 ; i < Container.GetAmount(); i++)
    PRINT(Container[i].GetType())

  Resource = Container.Data;  // Отправили данные на обмен
  
  CONTAINER< uint > Container2; // Сюда будем получать данные
  
  Resource.Get(Container2.Data); // Получили данные
      
   // Получим данные в исходном виде
   string Str2[];
  Container[ 0 ].Get(Str2);                 // Получили массив
   ArrayPrint (Str2);

  PRINT(Container[ 1 ].Get< double >())       // Получили число
  PRINT(Container[ 2 ].Get< MqlTick >().bid) // Получили структуру   
}

 
Renat Fatkhullin :

OnTimer도 OnTick도 서비스되지 않습니다. 시작 시에만.

이것은 백그라운드 루핑 프로세스(데이터 피드, 분석, 외부 관계 등)를 위한 특별한 유형의 프로그램이며 전문가를 대체하지 않습니다.


베타 1963이 출시되었습니다. 메뉴를 통해 업데이트할 수 있습니다.

당신은 여기 마스터 Yoda와 같습니다.)) OnStart 가 무엇인지, 이 짐승과 같은 OnTick의 차이점은 무엇인지 직접 알고 싶습니다.

 
Renat Fatkhullin :

OnTimer도 OnTick도 서비스되지 않습니다. 시작 시에만.

이것은 백그라운드 루핑 프로세스(데이터 피드, 분석, 외부 관계 등)를 위한 특별한 유형의 프로그램이며 전문가를 대체하지 않습니다.


베타 1963이 출시되었습니다. 메뉴를 통해 업데이트할 수 있습니다.

별도의 차트가 필요하지 않다는 점을 제외하고 서비스와 스크립트의 차이점은 무엇입니까?

 
Renat Fatkhullin :

OnTimer도 OnTick도 서비스되지 않습니다. 시작 시에만.

이것은 백그라운드 루핑 프로세스( 데이터 피드 , 분석, 외부 관계 등)를 위한 특별한 유형의 프로그램입니다.

데이터 피드로 작업할 때 이벤트 모델 이 없다는 것은 목발처럼 보입니다.

이러한 목발의 예로 공식 기호의 현재 구현을 고려할 수 있습니다. 이는 이벤트 모델이 아니라 타이머(루프)를 기반으로 합니다. 따라서 누락 된 틱.


앞서 서비스의 다중 문자 OnTick에 대해 언급했습니다. 그들은 왜 좋은 아이디어를 거부하고 잘라냈습니까?

사유: