서비스, MT5 아키텍처의 새로운 기능인 MT4의 죽음이 코앞에 다가왔습니다. - 페이지 5

 
Petros Shatakhtsyan :


흥미롭게도 어제 MarketBookAdd 및 OnBookEvent의 기능을 사용하여 다중 통화 전문가 고문을 만들고 싶었습니다.

그러나 어떤 이유로 MarketBookAdd는 테스터에서 작동하지 않습니다. 오류 4901 발생 - 시장 깊이를 추가할 수 없습니다.

그래서 실시간으로 만 작동합니다 ...
 
Alexey Kozitsyn :
그래서 실시간으로 만 작동합니다 ...


그리고 나는 한 잔의 가격 이 아니라 다음과 같은 간단한 기능을 가질 필요가 있습니다.

1. Market Watch의 내용을 지웁니다.

2. 거기에 필요한 문자를 추가합니다.

3. 함수나 이벤트를 이용하여 각 심볼에서 Market Watch에 표시되는 모든 틱을 가져오거나 OnTick과 Multi-tick 기능을 공동으로 만듭니다.

 
Petros Shatakhtsyan :


그리고 나는 한 잔의 가격 이 아니라 다음과 같은 간단한 기능을 가질 필요가 있습니다.

1. Market Watch의 내용을 지웁니다.

2. 거기에 필요한 문자를 추가합니다.

3. 함수나 이벤트를 이용하여 각 심볼에서 Market Watch에 표시되는 모든 Tick을 얻거나 OnTick과 Multi-tick 기능을 공동으로 만듭니다.

시장 개요 및 틱으로 작업하려는 경우 왜 Depth of Market을 진행하기로 결정했는지 완전히 명확하지 않습니까?
 
Alexey Kozitsyn :
시장 개요 및 틱으로 작업하려는 경우 왜 Depth of Market을 진행하기로 결정했는지 완전히 명확하지 않습니까?

그리고 Market Watch에 표시되거나 추가된 모든 시세에서 데이터를 어디서 얻을 것입니까?
 
Petros Shatakhtsyan :

그리고 Market Watch에 표시되거나 추가된 모든 시세에서 데이터를 어디서 얻을 것입니까?
음... OnTimer(), OnTick(), OnCalculate() ...
 
Petros Shatakhtsyan :

그리고 Market Watch에 표시되거나 추가된 모든 시세에서 데이터를 어디서 얻을 것입니까?

 MqlTick tickEUR;
MqlTick tickGBP;
MqlTick tickEURGBP;

GetSymbolByName( string symbol)   {    string symbol_name= "" ;   // Имя символа на сервере //--- Если передали пустую строку, вернем пустую строку    if (symbol== "" )        return ( "" ); //--- Пройтись по списку всех символов на сервере    for ( int s= 0 ; s< SymbolsTotal ( false ); s++)      {        //--- Получим имя символа       symbol_name= SymbolName (s, false );        //--- Если искомый символ есть на сервере        if (symbol==symbol_name)         {          //--- Выберем его в окне "Обзор рынка"          SymbolSelect (symbol, true );          //--- Вернем имя символа          return (symbol);         }      } //--- Если искомого символа нет, вернем пустую строку    Print ( "Символ " +symbol+ " не найден на сервере!" );    return ( "" );   } int OnInit()   { //---    GetSymbolByName("EURUSD"+SymbolSuffix);    GetSymbolByName("GBPUSD"+SymbolSuffix);    GetSymbolByName("EURGBP"+SymbolSuffix); }

void OnTimer() // или OnTick   {       if(!SymbolInfoTick("EURUSD"+SymbolSuffix,tickEUR)) {Print("EURUSD price has not been received"); return;}    if(!SymbolInfoTick("GBPUSD"+SymbolSuffix,tickGBP)) {Print("GBPUSD price has not been received"); return;}    if(!SymbolInfoTick("EURGBP"+SymbolSuffix,tickEURGBP)) {Print("EURGBP price has not been received"); return;} if(tickEUR.ask!=0 && tickEUR.bid!=0) {} // ну и все в этом духе }

 
Maxim Dmitrievsky :

어떤 종류????? 여러 게시물에 어떻게 그렇게 바보가 될 수 있습니까?
유용한 것을 제공하는 사람들은 등 뒤로 튀어나온 화살로 알아볼 수 있습니다. 새로운 것은 언제나 적대감으로 받아들입니다. 특히 hrenfx에서 복사한 차익거래 고문의 판매로 돈을 버는 사람들은 이 DC의 반대로 인해 시장에서 직접 사용이 불가능하기 때문입니다.
 
Maxim Dmitrievsky :


타이머가 밀리초를 사용하더라도 EA가 모든 틱 을 처리하는 경우 비효율적으로 작동합니다.

시장 시계에서 모든 틱을 바로 얻을 수 있는 더 쉬운 방법이 필요합니다.

OnTick을 통한 A는 어드바이저가 있는 곳에 다음 틱이 올 때만 작동하기 때문에 불가능합니다.

 
Petros Shatakhtsyan :

여기서 여전히 타이머를 통해 해야 합니다. 마지막 틱이 이전 틱과 다르지 않으면 요청하지 않는 방식으로 타이머에 알고리즘을 작성하면 됩니다.

BookEvent는 여기에서 당신을 돕지 않을 것입니다.

 
Alexey Kozitsyn :

여기서 여전히 타이머를 통해 해야 합니다. 마지막 틱이 이전 틱과 다르지 않으면 요청하지 않는 방식으로 타이머에 알고리즘을 작성하면 됩니다.

BookEvent는 여기에서 당신을 돕지 않을 것입니다.


예, 하지만 타이머가 하나뿐이라는 점을 고려해야 합니다. 그렇지 않으므로 VC ++입니다. 임시 섹션에 대한 검사가 많으면 단순히 많은 틱을 잃을 수 있으며 모든 것이 엉망.