価格のガラスはどうあるべきか? - ページ 12

 
タンブラーの発売が遅れているのは、新しいタイプのエンジンを作る必要があるためです。Beakerは、独立したエンジンとして動作するスタンドアローンアプリケーションとして、ユーザーAPIを提供する必要があり、そうでなければ、閉じたプログラムとして、その価値はずっと低くなってしまいます。これまで作ってきたエンジンは、完全にユーザーのコマンドに依存していて、自分では何の機能も持っていなかったんです。新しいタイプのエンジンは、外部からの制御だけでなく、独立して動作する必要があります。今、この問題を解決しているところです。
 

今日、また一つ重要な一歩を踏み出しました。これにより、エンジンはスタンドアロンアプリケーションとして動作し、接続されたユーザーアプリケーションとパラメータ値を同期させることができるようになりました。アプリケーションは以前と同様に接続されていますが、エンジン機能によって設定された値を要求できるようになりました。このように、これはプログラム間の新しいレベルの相互作用への移行である。 スタンドアローンのプログラムとしてのエンジンは、その機能を蓄積し、アプリケーションに提供されるAPIを拡張することができるのである。

プライススタックの 場合は、-スタンドアロンアプリケーション(明日、明後日には完成する予定)になっており、インジケーターとして機能しています。この接続を利用して、ユーザーはこのカップの値を取得し、それを上書きして、変更した形でカップに返すことができる。例えば、こんな感じです。グラスフィールドの1つの価格がユーザーコードによって分析され、ある重要な指標のレベルであることが判明しました。ユーザーがそのフィールドに文字列マーカーを送ると、その価格の横に表示されます。これにより、エンジンとユーザープログラムの双方に、興味深い新しい開発の可能性が広がっています。

SZZ. これまでアプリにしか送られなかったGUIスライダーのイベントが、エンジン内部でも受け取れるようになり、エンジン側(私のコードによる)とユーザーアプリケーション側(ユーザーコードによる)の両端でイベントの並行処理が行われるようになりました。ボタンをクリックすると、エンジンの機能と接続されたアプリケーションの機能の両方が起動します。
 
カップに欠けているもう一つは、あなたが市場で今閉鎖した場合の利益、すなわちカップ充填のための会計 - 小さなもの(例えば100から150ロット)よりもわずかに大きい位置に関連します。
 
ホットキーはあるのでしょうか?
 
Andrey Gladyshev:
ホットキーはあるのでしょうか?
もちろんです。
 
Aleksey Vyazmikin:
カップから欠落しているもう一つは、あなたが市場で今閉じている場合、すなわち、カップを埋める利益である - 小さなよりもわずかに大きい位置に関連する(例えば、100から150ロット)。
カップの中身を説明する。遅れないように基本編発売後に考えたいと思います。
 
プライスカップが 出来上がります。API接続のドキュメントが非常に遅れていた。独自のマークアップ言語でドキュメントを書くのは、非常に時間がかかる。そして、タンブラーのドキュメンテーションも行わなければならない。そして、ガラスそのものも。そして同時に、コードやコンストラクターの最適化、バグの修正、機能の追加を行います。だから、こんなに長いんです。でも、そうすれば、すべてが速く、早くなります。
 
プログラムは何語で書かれているのですか?
実際に入力されるデータの処理速度はどのくらいですか?
価格帯へのデータの割り振りはどうなっているのか?
forループなのか、各レベルのデータを持つ変数があるのか?
欧米の端末のようにガラスを見るタイプを選択したのは正解です。
カップに追加して、3段階までリンクしたOCOオーダーを管理することを提案します。
そして一般的には、どんな機能的なウェスタン・マーケット・ドックでも、その中に実装されているものを見ることができます。
また、QScalpのスキャルパードライブがどのように実装されているかをご覧ください。
 
Roman:
プログラムは何語で書かれているのですか?
実際に入力されるデータの処理速度はどの程度なのでしょうか?
価格帯別のデータ分布は?
forループやfor各レベルは、データを持つ独自の変数を持つ?
欧米の端末のようにガラスを見るタイプを選択したのは正解です。
ガラスに追加して、リンクしたOCOの入札を3段階まで管理することを提案します。

1.プログラムは2ヶ国語で書かれています。ベースとなる言語は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)からascとbid側に分配し、ascとbid側に最も近い価格をあらかじめ計算しておくのです。