バイ・ストップ セル・ストップ クラスとしてのグリッド・アドバイザー - ページ 2

 

少しずつですが、機能を追加しています。開始時、ポジションがなく、保留中の注文が ない場合、保留中のストップ注文が発注されます。バージョン表記は、クラスファイルに添付されています。

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//+------------------------------------------------------------------+

ds

 

興味深いことに、CBuyStopSellStopGrid::RefreshRates(void)関数は、asc-bid値がゼロかどうかをチェックします。

本当にあり得る状況なのでしょうか?

一般的には - これ以上の指摘はありません、コードは非常に透明で明確です。

 
George Merts:

興味深いことに、CBuyStopSellStopGrid::RefreshRates(void)関数は、asc-bid値がゼロかどうかをチェックします。

こんな状況、本当にあるのでしょうか?

一般的に、他の指摘はなく、コードは非常に透明で明確です。


そう、これが人生であり、ここでは何でも可能なのです。一般的には、テスターのせいで入力されたゼロ値をチェックします(1年ほど前です:最初のt=few ticksを開始するときにテスターがゼロを与えました)。

少しずつですが、機能を追加しています。OnTradeTransactionでは、ポジションがある場合(「DEAL_ENTRY_IN」)、保留中の注文を削除し、新たに2つのストップ保留注文を設定します。

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//| 1.002:                                                           |
//|   OnTradeTransaction: if DEAL_ENTRY_IN delete all pending orders,|
//|   and, sets Buy stop and sell stop                               |
//+------------------------------------------------------------------+

BuyStopSellStopGrid 1.002

これまではそのような欠点がありました。

  1. 毎ティック、ポジションと注文待ちの量をチェックします。
  2. 取引操作(保留注文)を制御しない - Expert Advisor は保留注文が発注されていない状況を処理しない。
  3. ポジションを持たないポジションのセット - この状況は処理されません。例えば、買いポジションを決済し、その後売りポジションを開設した場合...。
 
Vladimir Karputov:

そう、これが人生であり、何でも可能なのです。一般に、ゼロ値のチェックはテスターの関係で導入されたものです(1年ほど前、最初のt=数ティックを開始するときに、テスターがゼロを出したという事例がありました)。

少しずつですが、機能を追加しています。OnTradeTransactionでは、ポジションがある場合(「DEAL_ENTRY_IN」)、保留中の注文を削除し、新たに2つのストップ保留注文を設定します。


これまではそのような欠点がありました。

  1. 毎ティック、ポジションと注文待ちの量をチェックします。
  2. 取引操作(保留注文)を制御しない - Expert Advisor は保留注文が発注されていない状況を処理しない。
  3. ポジションを持たないポジションのセット - 例えば、買いポジションを開いた後に、売りポジションを開いた...という状況は処理されない。

スクリーンショットに示されたアルゴリズムは動作しません。アルゴリズムを動作させるためには、次のようなことが必要です。

買いシグナルを受信すると、最初のローソク足の高値の上に買いのストップ注文がグリッド状に配置されます。終値以下では、売り逆指値注文が発注されます。注文は利益や損失ではなく、別のシグナルによってクローズされるべきです。多少なりともまともな信号であれば、このシステムは必ず機能します。

これはあくまでバリエーションであり、すべてを別の方法で行うことも可能です。

 
Ibragim Dzhanaev:

信号が多少なりともまともであれば、このようなシステムは必ずうまくいく。

安値で買って高値で売れば、必ず利益が出る」と書いた方がいいだろう。

誰が議論しているのか?問題は、「合理的な信号」を見つけることです。

 

バージョン1.003。

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//| 1.002:                                                           |
//|   OnTradeTransaction: if DEAL_ENTRY_IN delete all pending orders,|
//|   and, sets Buy stop and sell stop                               |
//| 1.003:                                                           |
//|   OnTradeTransaction: DEAL_ENTRY_IN                              |
//|      DEAL_TYPE_BUY => ClosePositions(POSITION_TYPE_SELL)         |
//|      DEAL_TYPE_SELL => ClosePositions(POSITION_TYPE_BUY)         |
//|   PlacesXXXX:                                                    |
//|      "RefreshRates()" is now inside the "PlacesXXXX"             |
//|   OnTradeTransaction:                                            |
//|      a "while" loop for "PlacesXXXX"                             |
//+------------------------------------------------------------------+

  • ポジションがオープンされると、反対側のポジションをすべてクローズするようにしました。
  • 現在の価格取得は、ギャップやスリッページを防ぐため、PlacesBuyおよびPlacesSell機能の中に移動しました。
  • OnTradeTransactionでは、保留中の注文はwhileループで発注されます。つまり、サーバーを殴っているのです:)- ベストな解決策ではありませんが、今のところはこのままです。

実は、今、私たちは考えることができます。

  1. ポジションを増やす方法(ロット数計算)は?
  2. 対立する立場をどうするか...。

 
George Merts:

安値で買って高値で売れば、必ず利益が出る」と書くのがベターでしょう。

誰が議論しているのか?問題は、「合理的な信号」を見つけることです。


最もシンプルでわかりやすい選択肢です。


 
ご一緒してもいいですか?
 

とか、そんな感じです。


 
Artiom Morochin:
ご一緒してもいいですか?

完了しました。ウェアハウスと接続 し、ウェアハウスからプロジェクトファイルを更新する。