뎁스 오브 마켓은 어떻게 해야 할까요? - 페이지 12

 
새로운 유형의 엔진을 만들어야 할 필요성으로 인해 유리 출시가 지연되었습니다. Glass - 독립 엔진으로 작동하는 독립 실행형 응용 프로그램으로서 사용자 지정 API를 제공해야 합니다. 그렇지 않으면 폐쇄형 프로그램으로서 그 가치가 훨씬 낮아집니다. 내가 이전에 만든 엔진은 완전히 사용자 명령에 의존하고 자체 기능이 없었습니다. 새로운 유형의 엔진은 독립적으로 작동하고 외부에서 제어해야 합니다. 이제 이 문제를 해결하고 있습니다.
 

오늘은 또 다른 중요한 진전을 의미합니다. 이제 엔진은 독립 실행형 응용 프로그램으로 작동하여 매개 변수 값을 연결된 사용자 응용 프로그램과 동기화할 수 있습니다. 응용 프로그램은 이전과 같이 연결되었지만 이제 엔진의 기능에 의해 설정된 값을 요청할 수 있습니다. 따라서 이것은 프로그램 간의 새로운 수준의 상호 작용으로의 전환입니다. 엔진은 독립적인 프로그램으로서 기능을 축적하고 애플리케이션에 제공되는 API를 확장할 수 있습니다.

Depth of Market 의 경우 독립적인 애플리케이션(내일 또는 모레 완료 예정)이 되어 지표 역할을 합니다. 연결을 사용하여 사용자는 이 오더북의 값을 가져와 재정의하여 수정된 형태로 오더북으로 되돌릴 수 있습니다. 예: DOM 필드 중 하나의 가격이 사용자 정의 코드로 분석되었으며 일부 중요한 지표의 수준으로 판명되었습니다. 사용자가 문자열 마커를 해당 필드로 보내면 해당 가격 옆에 표시됩니다. 이것은 엔진과 사용자 프로그램의 개발을 위한 새롭고 흥미로운 기회를 열어줍니다.

추신. 이전에 응용 프로그램으로만 전송된 GUI 엔진의 이벤트는 이제 엔진의 내부 기능으로 이동하고 이벤트의 병렬 처리는 한 번에 두 끝에서 수행됩니다. 엔진(내 코드에 따라)과 사용자 . 응용 프로그램(사용자 코드에 따라). 버튼을 누르십시오 - 엔진의 기능과 연결된 응용 프로그램의 기능이 모두 작동합니다.
 
유리에있는 또 다른 칩은 이익과 같이 충분하지 않습니다. 지금 시장에서 문을 닫는다면, 즉 유리 채우기 고려 - 작은 것보다 약간 더 많은 위치(예: 100-150 로트)와 관련이 있습니다.
 
단축키는?
 
Andrey Gladyshev :
단축키는?
꼭.
 
Aleksey Vyazmikin :
유리에있는 또 다른 칩은 이익과 같이 충분하지 않습니다. 지금 시장에서 문을 닫는다면, 즉 유리 채우기 고려 - 작은 것보다 약간 더 많은 위치(예: 100-150 로트)와 관련이 있습니다.
유리 채우기에 대한 설명. 미루지 않도록 베이직 버전 출시 이후에 고민하겠습니다.
 
Depth of Market 이 준비됩니다. API 연결 문서가 크게 지연되었습니다. 마크업 언어로 문서를 작성하는 것은 매우 시간이 많이 걸립니다. 그리고 유리 문서화도 수행해야 합니다. 그리고 유리 그 자체. 그리고 동시에 코드, 생성자를 최적화하고, 버그를 수정하고, 기능을 추가합니다. 그래서 너무 길다. 그러나 모든 것이 점점 더 빨라질 것입니다.
 
프로그램은 어떤 언어로 작성되었습니까?
들어오는 데이터의 실제 처리 속도는 얼마입니까?
데이터는 가격 수준에 어떻게 분산됩니까?
for 루프에 각 수준에 대한 자체 데이터 변수가 있습니까?
유리의 디스플레이 방식을 서부터미널처럼 선택했다는 점은 맞다.
관련 OCO 주문을 최대 3단계까지 관리하여 주문서에 추가하는 것이 좋습니다.
일반적으로 기능적인 서양식 유리를 가져 와서 구현 된 내용을 볼 수 있습니다.
또는 QScalp 스캘핑 드라이브가 구현되는 방법을 참조하십시오.
 
Roman :
프로그램은 어떤 언어로 작성되었습니까?
들어오는 데이터의 실제 처리 속도는 얼마입니까?
데이터는 가격 수준에 어떻게 분산됩니까?
for 루프에 각 수준에 대한 자체 데이터 변수가 있습니까?
유리의 디스플레이 방식을 서부터미널처럼 선택했다는 점은 맞다.
관련 OCO 주문을 최대 3단계까지 관리하여 주문서에 추가하는 것이 좋습니다.

1. 프로그램은 두 가지 언어로 작성되었습니다. 기본 MQL5 언어 , 그리고 그 위에 내 마크업 언어.

2. 보낸 것과 같은 방식으로 배포합니다. 올바른 세포에서 말입니다. 말로 설명하기 어렵네요. 나중에 코드를 게시하겠습니다. 물론 데이터를 올바른 셀에 가져오기 위해 거기에서 땀을 흘려야 했지만 이 문제는 해결되었습니다.

3. 예, 요청되고 의미 있고 중요한 모든 것을 추가하겠습니다.
 

다음은 내 주문서의 셀 간에 데이터를 배포하는 코드입니다.

 void On_DOM_Event()
{
 int t = 0 ;
 //----------------------------
 MqlTick last_tick;
 SymbolInfoTick ( Symbol (),last_tick);
 //----------------------------
 MarketBookGet ( NULL ,priceArray); 
 //----------------------------
 double p = 0 ;
 long    ask_size = 0 , bid_size = 0 ;
 int     s = ArraySize (priceArray);
 //----------------------------
 if (s > 0 )
   {
     //-------------------------   ---
     for ( int i1 = 0 ; i1 < 100 ; i1++)prices[i1]  = NULL ;
     for ( int i1 = 0 ; i1 < 100 ; i1++)ask_vol[i1] = NULL ;
     for ( int i1 = 0 ; i1 < 100 ; i1++)bid_vol[i1] = NULL ; 
     //----------------------------
     int Closest_to_ask = 0 ;
     //----------------------------
     for ( int a1 = 0 ; a1 < s; a1++)
      {
       if (
              priceArray[a1].price == last_tick.ask
          || (priceArray[a1].price < last_tick.ask && (((a1 + 1 < s) && priceArray[a1 + 1 ].price >= last_tick.bid) || (a1 + 1 == s)))
         )
         {
          Closest_to_ask = a1;
           break ;
         } 
      } 
     //----------------------------
     for ( int a2 = Closest_to_ask; a2 >= 0 ; a2--)
      { //Alert("t ",t,"  a2  ",a2);
       prices[ 49 -t]  =  Normalize_Double(priceArray[a2].price, _Digits , _Point );
       ask_size     +=  priceArray[a2].volume;
       ask_vol[ 49 -t] =  ( string )priceArray[a2].volume;
       t++;
      }
     //--------------------------------  
    t = 0 ;
     //Alert("_Digits   ",_Digits);
     //--------------------------------  
     for ( int a3 = Closest_to_ask + 1 ; a3 < s; a3++)
      { 
       prices[ 50 +t]  =   Normalize_Double(priceArray[a3].price, _Digits , _Point );
       bid_size      +=  priceArray[a3].volume;
       bid_vol[ 50 +t] =   ( string )priceArray[a3].volume;
       t++;
      }         
 //------------------------------------------------       
 //------------------------------------------------ 
 E_DOM_1_Price(prices[ 40 ]);    E_DOM_1_Ask_size(ask_vol[ 40 ]);
 E_DOM_2_Price(prices[ 41 ]);    E_DOM_2_Ask_size(ask_vol[ 41 ]); 
 E_DOM_3_Price(prices[ 42 ]);    E_DOM_3_Ask_size(ask_vol[ 42 ]); 
 E_DOM_4_Price(prices[ 43 ]);    E_DOM_4_Ask_size(ask_vol[ 43 ]); 
 E_DOM_5_Price(prices[ 44 ]);    E_DOM_5_Ask_size(ask_vol[ 44 ]);
 E_DOM_6_Price(prices[ 45 ]);    E_DOM_6_Ask_size(ask_vol[ 45 ]);
 E_DOM_7_Price(prices[ 46 ]);    E_DOM_7_Ask_size(ask_vol[ 46 ]);
 E_DOM_8_Price(prices[ 47 ]);    E_DOM_8_Ask_size(ask_vol[ 47 ]);  
 E_DOM_9_Price(prices[ 48 ]);    E_DOM_9_Ask_size(ask_vol[ 48 ]); 
 E_DOM_10_Price(prices[ 49 ]);   E_DOM_10_Ask_size(ask_vol[ 49 ]);
 //-------------------------------------------------
 E_DOM_11_Price(prices[ 50 ]);  E_DOM_11_Bid_size(bid_vol[ 50 ]);
 E_DOM_12_Price(prices[ 51 ]);  E_DOM_12_Bid_size(bid_vol[ 51 ]);
 E_DOM_13_Price(prices[ 52 ]);  E_DOM_13_Bid_size(bid_vol[ 52 ]); 
 E_DOM_14_Price(prices[ 53 ]);  E_DOM_14_Bid_size(bid_vol[ 53 ]); 
 E_DOM_15_Price(prices[ 54 ]);  E_DOM_15_Bid_size(bid_vol[ 54 ]); 
 E_DOM_16_Price(prices[ 55 ]);  E_DOM_16_Bid_size(bid_vol[ 55 ]); 
 E_DOM_17_Price(prices[ 56 ]);  E_DOM_17_Bid_size(bid_vol[ 56 ]); 
 E_DOM_18_Price(prices[ 57 ]);  E_DOM_18_Bid_size(bid_vol[ 57 ]);    
 E_DOM_19_Price(prices[ 58 ]);  E_DOM_19_Bid_size(bid_vol[ 58 ]); 
 E_DOM_20_Price(prices[ 59 ]);  E_DOM_20_Bid_size(bid_vol[ 59 ]);
 //------------------------------------------------- 
 }
 RMSG( 1 );
}


들어오는 데이터를 기록하기 위해 100개의 셀 배열을 만들었습니다. 나는 그 센터(셀 49)에서 들어오는 데이터를 매도 및 매수 쪽으로 패키징하여 매도 및 매수에 가장 가까운 가격을 미리 계산합니다.