내 접근 방식. 코어 - 엔진. - 페이지 166

 
Nikolai Semko :
베드로, 증거가 어디에 있습니까?
하나의 ex5(ex4로 실험하는 것은 의미가 없음)와 두 개의 프로그램에서 한 프로그램의 실행 속도를 비교한 연구 보고서는 어디에 있습니까?
그건 그렇고, 내가 당신의 접근 방식의 장점에 대한 적어도 하나의 공식화를 기다리지 않았을 때 내가 ( 여기 ) 처음으로 표현한 가설적인 가정이었습니다.
당신은 이미 내 가정을 사실로 압도하고 있습니다.
개인적으로, 나는 승리가 있을 수 있다는 것을 인정하지만 순전히 직관(지식이 아닌)에 나는 이것이 어떤 이점도 주지 않을 것이라고 75%를 넣었습니다. 왜냐하면 왜냐하면. 두 프로그램 간의 상호 작용 및 데이터 교환은 자유롭지 않으며 프로세서는 ex5용입니다. 그러나 이 질문에 대한 답은 개발자 자신이나 질적 실험을 통해서만 얻을 수 있습니다.

내가 제공할 수 있는 프로그램 간의 데이터 교환 비용이 저렴하다는 증거. 수천 자의 문자열을 전달할 때도 마찬가지입니다. 실험을 진행했습니다. 테스트 어드바이저 2명을 찾아서 버리겠습니다. 리소스를 통한 통신은 프로세서를 로드하지 않고 다시 그리기만 합니다.

엔진은 자체적으로 광범위한 목적의 기능을 축적할 것이며 사용자 GUI는 작은 부분일 뿐입니다. 즉, 엔진에는 특정 응용 프로그램에서 부분적으로만 필요한 코드가 포함되고 나머지 코드는 다른 차트의 다른 응용 프로그램에서 사용할 수 있습니다. 따라서 엔진은 다른 Expert Advisors가 동시에 사용하는 보조 기능 센터로 바뀌므로 자체 스레드에서 실행되는 별도의 프로그램이어야 합니다.

 

여기. 첫 번째 차트 에 올려 놓으십시오.

 //+------------------------------------------------------------------+
//|                                                       TEST_2.mq4 |
//|                                                      Peter Konow |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Peter Konow"
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict
//+------------------------------------------------------------------+
union Char_Uint{ uchar Char[ 32000 ]; uint Uint[ 8000 ];};
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
   EventSetMillisecondTimer ( 16 );
   //----------------------------------------------
   if (! ObjectCreate ( 0 , "Resource" , OBJ_BITMAP_LABEL , 0 , 0 , 0 )) Print ( "Object is not created!  " , GetLastError ());
   else Print ( "Object created!" );
   //-------------------------------
   if (! ObjectSetString ( 0 , "Resource" , OBJPROP_BMPFILE , "::Resource" )) Print ( "BMPFILE is not created!" );
   else Print ( "BMPFILE created!" );
   //----------------------------------------------
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//--- destroy timer
   EventKillTimer ();
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer ()
  {
   Char_Uint u;
   string String = NULL ;
   int q = MathRand (),w = 0 ;
   if (q > 10000 )q = 10000 ;
   //-------------------------------------------------------
   //Формируем случайную строку.
   //-------------------------------------------------------
   for ( int a1 = 0 ; a1 < q; a1++)
      {
       String += ( string )a1 + "^" ;
       w++;
       if (w == 10 )
         {
          String += "$" ;
          w = 0 ;
         }
      } 
   //-------------------------------------------------------
   //Получаем размер собранной строки.
   //-------------------------------------------------------
   int StrSize = StringLen (String);
   //-------------------------------------------------------
   //Копируем строку в массив Char[].
   //-------------------------------------------------------
   StringToCharArray (String,u.Char);
   //-------------------------------------------------------
   //Cохраняем строку переведенную в байты в ресурсе.
   //-------------------------------------------------------
   if (! ResourceCreate ( "::Resource" ,u.Uint, 8000 , 1 , 0 , 0 , 0 , COLOR_FORMAT_XRGB_NOALPHA )) Print ( "Resource is not created!" );
   //-------------------------------------------------------
  }
//+------------------------------------------------------------------+
 

그리고 이것은 두 번째입니다.

 //+------------------------------------------------------------------+
//|                                              Resource reader.mq4 |
//|                                                      Peter Konow |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Peter Konow"
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict

//+------------------------------------------------------------------+
union Char_Uint
  {
   uchar    Char[ 32000 ];
   uint     Uint[ 8000 ];   
  };
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit ()
  {
//--- indicator buffers mapping
   EventSetMillisecondTimer ( 16 ); 
   
   if (! ObjectSetString ( 0 , "Resource" , OBJPROP_BMPFILE , "\\Experts\\TEST_2.ex4::Resource" )) Print ( "Resource is not connected!" );
   else Print ( "Resource connected!" );
//---
   return ( INIT_SUCCEEDED );
  }


//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer ()
  {
//---
   Char_Uint u;   
   uint width,height;
   string msg[],pars[];
   //-----------------------------
   if (! ResourceReadImage ( "\\Experts\\TEST_2.ex4::Resource" ,u.Uint,width,height)) Print ( "Failed to read resource!  " , GetLastError ());
   //-----------------------------
   string String = CharArrayToString (u.Char);
   //-----------------------------
     ushort Msep = StringGetCharacter ( "^" , 0 );
     int s = StringSplit (String,Msep,msg);
     for ( int a1 = 0 ; a1 < s; a1++)
      {
       ushort Psep = StringGetCharacter ( "$" , 0 );
       StringSplit (msg[a1],Psep,pars);
     }  
   //-----------------------------
   Alert ( "  String  " ,String);
   //-----------------------------
     //------------------------------------------------------------------------------------------------------- 
     ArrayInitialize (u.Char, 0 );
     ResourceCreate ( "\\Indicators\\DRIVE.ex4::EA_2_DRIVE" ,u.Uint, 8000 , 1 , 0 , 0 , 0 , COLOR_FORMAT_ARGB_RAW );
     //-------------------------------------------------------------------------------------------------------      
  }
//+------------------------------------------------------------------+
 
Реter Konow :

내가 제공할 수 있는 프로그램 간의 데이터 교환 비용이 저렴하다는 증거. 수천 자의 문자열을 전달할 때도 마찬가지입니다. 실험을 진행했습니다. 테스트 어드바이저 2명을 찾아서 버리겠습니다. 리소스를 통한 통신은 프로세서를 로드하지 않고 다시 그리기만 합니다.

엔진은 자체적으로 광범위한 목적의 기능을 축적할 것이며 사용자 GUI는 작은 부분일 뿐입니다. 즉, 엔진에는 특정 응용 프로그램에서 부분적으로만 필요한 코드가 포함되고 나머지 코드는 다른 차트의 다른 응용 프로그램에서 사용할 수 있습니다. 따라서 엔진은 다른 Expert Advisors가 동시에 사용하는 보조 기능 센터로 바뀌므로 별도의 프로그램이어야 합니다.

그러나 하나의 엔진이 여러 프로그램을 제공하면 전체 프로세스가 느려질수록 다른 프로그램이 순차적으로 제공되는 반면 각 응용 프로그램의 엔진 클래스 인스턴스는 병렬로 실행됩니다.
 
두 번째 전문가 고문에게 경고가 있습니다. 열려 있는 동안 프로세서가 로드됩니다. 주석 처리하면 로드가 사라집니다.
 
Nikolai Semko :
그러나 하나의 엔진이 여러 프로그램을 제공하면 전체 프로세스가 느려질수록 다른 프로그램이 순차적으로 제공되는 반면 각 응용 프로그램의 엔진 클래스 인스턴스는 병렬로 실행됩니다.

프로그램은 필요에 따라 비동기적으로 엔진을 호출합니다. 하나는 전달 된 배열을 기반으로 그래프를 작성하도록 요청하고 다른 하나는 공식으로 값을 계산하기 위해 세 번째는 다른 것입니다 ...이 모든 것은 단일 연속 프로세스가 아니라 시간이 지남에 따라 한 번입니다.

이 경우 엔진은 응용 프로그램 중 하나의 GUI를 수행하고 필요한 경우 사용자는 다른 응용 프로그램의 GUI로 전환합니다.

 
엔진을 응용 프로그램에 밀어 넣으면 응용 프로그램에 불필요한 것이 많이 생깁니다. 따라서 개별 고문의 특정 요구 사항에 맞게 엔진을 연마해야 합니다. 사용자가 처리할 수 없습니다. 길고 어렵습니다. 그리고 이것은 내가 엔진의 다재다능함을 개발하는 것을 방해할 것입니다.
 
Реter Konow :
엔진을 응용 프로그램에 밀어 넣으면 응용 프로그램에 불필요한 것이 많이 생깁니다. 따라서 개별 고문의 특정 요구 사항에 맞게 엔진을 연마해야 합니다. 사용자가 처리할 수 없습니다. 길고 어렵습니다. 그리고 이것은 내가 엔진의 다재다능함을 개발하는 것을 방해할 것입니다.
아무 의미도 없는 말만 잔뜩.
 
Nikolai Semko :
아무 의미도 없는 말만 잔뜩.

그냥 내 말을 받아. 내가 뭘 하고 있는지 알아

 
Реter Konow :

그냥 내 말을 받아. 내가 뭘 하는지 알아

나는 믿지 않을 것이다. 넌 몰라.