記事"MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第28部): 指値取引リクエストの決済、削除、変更"についてのディスカッション

 

新しい記事 MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第28部): 指値取引リクエストの決済、削除、変更 はパブリッシュされました:

これは、保留中リクエストの概念に関する3番目の記事です。ここでは、ポジションの決済、指値注文の削除、ポジションと指値注文パラメータの変更のためのメソッドを作成することにより、指値取引リクエストのテストを完了します。

これは保留中リクエストの概念に関する3番目の記事です。本稿では、ポジションの決済、注文の削除、およびポジション、ストップ注文と変更可能な指値注文パラメータの変更のためのメソッドを作成することにより、コンセプトのテストを完了します。

さらに、2つの注文とポジションのプロパティ値(注文の執行と有効期限タイプ)の戻り値を追加することにより、抽象注文クラスをわずかに改善します。基本的なクロスプラットフォーム取引オブジェクトのすべての取引方法のコードは、わずかに最適化されています。ここでこの変更について説明する意味はありません。代わりに、変更されたメソッドの一例を表示します。

作者: Artyom Trishkin

 

Artyomさん、以下の作業を行うためにポインタにダイナミック・メモリを割り当てる のは、何か特別な理由があるのでしょうか?

int CTrading::GetIndexPendingRequestByOrder(const ulong ticket)
  {
   CPendingReq *req=new CPendingReq();
   if(req==NULL)
      return WRONG_VALUE;
   req.SetOrder(ticket);
   this.m_list_request.Sort(SORT_BY_PEND_REQ_TICKET);
   int index=this.m_list_request.Search(req);
   delete req;
   return index;
  }

私の率直な意見では、単純なローカル変数を 使用した方が、メソッドがシンプルになり、上の余計なポインタ処理コードが なくなると思います。

int CTrading::GetIndexPendingRequestByOrder(const ulong ticket)
  {
   CPendingReq req;
   req.SetOrder(ticket);
   this.m_list_request.Sort(SORT_BY_PEND_REQ_TICKET);
   int index=this.m_list_request.Search(req);
   return index;
  }

前者のアプローチを選択する理由を理解したいのですが...もしかしたら、私はベストプラクティスを見逃しているのでしょうか?

/ディマ

 
ddiall :

Artyomさん、以下の作業を行うためにポインタにダイナミック・メモリを割り当てる のは、何か特別な理由があるのですか?

私の率直な意見としては、単純なローカル変数を 使用した方がメソッドがシンプルになり、上の余計なポインタ処理コードが なくなると思います。

前者のアプローチを選択する理由を理解したいのですが......もしかしたら、私はベストプラクティスを見逃しているのでしょうか?

/ディマ

Search()メソッドは オブジェクトへのポインタで動作します:

 int Search(
   CObject*  element       // サンプル 
   ) const 
 
Artyom Trishkin:

Search()メソッドは、オブジェクトへのポインタで動作する:

でも、メソッドを呼び出して、代わりにローカル変数のポインタを渡すことはできないのですか?

int index=this.m_list_request.Search(GetPointer(req));
 
ddiall :

でも、メソッドを呼び出して、代わりにローカル変数のポインターを渡すことはできないの?

いろんなやり方があるよね.僕はこうしたよ.)

 
Artyom Trishkin:

いろいろな方法でできる.僕はこれをやったんだ.)

まだ記事を読んだりコードを勉強している最中なので、自分の理解を確認するためだったんだ ;-)
 
ddiall:
まだ記事を読んだりコードを勉強している最中なので、私の理解を確認するためだったんだ。)
ありがとう。どういたしまして :)
 
   CEventsCollection*GetObject(void)                                                                     { return &this;