オーダーを探すという作業

 

基本的に、要点は以下の通りです。私は注文を検索するためのコードオプションを捜しています。

タスクは以下の通りです。

1 :

価格別、注文種別(買い/売り)別の最大注文数の情報を取得する。

価格別、注文種別(買い/売り)別の最低注文数の情報を取得する。

時間別、注文種別(買い/売り)別に最終注文情報を取得する。

最初の注文に関する情報を時間別、注文の種類別(買い/売り)に取得する。

2 :

直近の最高値と注文種別(買い/売り)の情報を取得する。

直近の最小注文(買い/売り)の情報を価格別、注文種別(買い/売り)別に取得する。

直近の1件以外の注文について、時間別、注文の種類別(買い/売り)に情報を取得する

2回目の注文の時刻と注文の種類(買い/売り)の情報を取得する。

この情報には、注文に関するすべての情報(シンボル、ロット、価格......)が含まれます。

手続き型プログラミングでとっくに解決しているので、今度はそれを簡略化してクラスを作りたいのですが、便利なものが思いつきません......。

 
Vladimir Pastushak:

とにかく、ポイントはこうです:私は注文を検索するためのコードオプションを捜しています。


アクティブな注文をモニターしたいですか?

MQL4かMQL5か?

 
Михаил:
アクティブな注文をモニターしたいですか?
全てではありませんが、価格別の最大・最小、時間別の最初と最後、つまり最後と最後を2つずつ...。
 
Vladimir Pastushak:

基本的に、要点は以下の通りです。私は注文を検索するためのコードオプションを捜しています。

タスクは以下の通りです。

1 :

価格別、注文種別(買い/売り)別の最大注文数の情報を取得する。

価格別、注文種別(買い/売り)別の最低注文数の情報を取得する。

時間別、注文種別(買い/売り)別に最終注文情報を取得する。

最初の注文に関する情報を時間別、注文の種類別(買い/売り)に取得する。

2 :

直近の最高値と注文の種類(買い/売り)の情報を取得する。

直近の最小注文(買い/売り)の情報を価格別、注文種別(買い/売り)別に取得する。

直近の1件以外の注文について、時間別、注文の種類別(買い/売り)に情報を取得する

2回目の注文の時刻と注文の種類(買い/売り)の情報を取得する。

この情報には、注文に関するすべての情報(シンボル、ロット、価格......)が含まれます。

手続き型プログラミングでとっくに解決しているので、今度はそれを簡略化してクラスを作りたいのですが、便利なものが思いつきません......。

はい、ウラジミール - それはグレイトな仕事です!:-)

どこに行けばいいのか、教えてください。

 
Vladimir Pastushak:
全てではなく、価格別の最大/最小、時間別の最初と最後、つまり最後と最後尾の2つずつのみ...。

注文をつけるのですから、難しいことではありません。

だから、過去2回のBUYと過去2回のSELLを覚えておくとよいでしょう

そして、何も探さなくてよくなります。

struct MEM_ORDER
{
  ulong ticket;
  long ord_type;
  double price;
};
struct MEM_ORDERS
{
  bool      is_first_buy;
  bool      is_first_sell;
  MEM_ORDER buy_oders[2];
  MEM_ORDER sell_oders[2];
};
 
Михаил:

注文をつけるのですから、難しいことではありません。

だから、過去2回のBUYと過去2回のSELLを覚えておくとよいでしょう

そして、何も探さなくてよくなります。

そのような解決策も考えましたが、EA/端末を再読み込みすると再初期化され、過去の作業データが全て消えてしまうのが不満でした。

EAが動作しているときの環境に関するデータを収集するのが、最も確実な動作方法だと思います。

 
Vladimir Pastushak:

そのような解決策も考えましたが、EA/端末をリロードすると再利用され、前作のデータがすべて失われることが不満でした。

EA運用時の環境に関するデータを収集することが、確実な運用方法だと考えています。

また、EAを終了するときにデータをファイルに保存し、ロードするときにファイルからロードすることを妨げるものは何ですか?

//| Expert Load setings function                                     |
//+------------------------------------------------------------------+
void LoadSettings()
{
  string file_name = _Symbol + ".dat";
  int file_handle;
//---  
  if ( FileIsExist( file_name, 0 ) )
  {
    file_handle = FileOpen( file_name, FILE_READ|FILE_BIN );
    
    if ( file_handle != INVALID_HANDLE )
    {
      e_high = FileReadLong( file_handle );
      a_profit = FileReadLong( file_handle );
      e_low = FileReadLong( file_handle );
      ord_delta_high = FileReadLong( file_handle );
      ord_delta_low = FileReadLong( file_handle );
      order_delta = FileReadLong( file_handle );
      exit_delta = FileReadLong( file_handle );
      FileClose( file_handle );
    }
  } 
}

//+------------------------------------------------------------------+
//| Expert Save settings function                                    |
//+------------------------------------------------------------------+
void SaveSettings()
{
  string file_name = _Symbol + ".dat";
  int file_handle;
  bool file_found = true;
//---  
  if ( FileIsExist( file_name, 0 ) )
  {
    if ( FileDelete( file_name, 0 ) ) file_found = false;
  }
  else
  {
    file_found = false;
  }
//---
  if ( ! file_found )
  {
    file_handle = FileOpen( file_name, FILE_WRITE|FILE_BIN );
    
    if ( file_handle != INVALID_HANDLE )
    {
      FileWriteLong( file_handle, e_high );
      FileWriteLong( file_handle, a_profit );
      FileWriteLong( file_handle, e_low );
      FileWriteLong( file_handle, ord_delta_high );
      FileWriteLong( file_handle, ord_delta_low );
      FileWriteLong( file_handle, order_delta );
      FileWriteLong( file_handle, exit_delta );
      FileClose( file_handle );
    }
  } 
}
 
Михаил:

EAを離れるときにデータをファイルに保存し、EAをロードするときにファイルから読み込むことを妨げるものは何ですか?

もちろんこれは良いことなのですが、再起動中に環境が変わることもあるので、確実ではありません。
 
Vladimir Pastushak:
もちろんこれは良いことなのですが、再起動中に環境が変わることもあるので、確実ではありません。

終了する前にすべての注文をクローズしてください。

まだ必要なんですね。

 
Михаил:

終了する前にすべての注文をクローズしてください。

とにかく面倒なんです。

予期せぬ再スタートはトラブルの元...。

授業で書いた...

 
Vladimir Pastushak:

予期せぬリセットはトラブルの元...

クラスを書きました...

人を笑わせてはいけない...。

不測の事態が起きたとき、どんな授業もあなたを救ってはくれないのです

ワインドアップやターミナルが「クラッシュ」した場合、EAが再初期化されます。

アクティブな注文を「見て」、閉じるだけで、コントロールはできないからです。

理由: