記事"クロスプラットフォームEA: カスタムストップ、ブレイクイーブン、トレーリング"についてのディスカッション

 

新しい記事 クロスプラットフォームEA: カスタムストップ、ブレイクイーブン、トレーリング はパブリッシュされました:

この記事では、クロスプラットフォームEAでのカスタムストップレベルの設定方法について説明します。 また、時間の経過とともにストップレベルを設定するメソッドについても説明します。

次は上記の損益の計算の図を示しています。 このフローチャートに基づいて、3つの値のアクティベーション、非アクティブ化、および新しいストップレベルが事前に計算されます。 現在の価格レベルが初期段階 (ストップロス ~ 損益) に必要な最安値レベル以上の場合は、計算された新しいストップレベルがトレードの新しいストップレベルとして使用されます。 そうでない場合、出力はゼロになります。 次の手順では、新しいストップレベルが現在のストップレベル内にあるかどうかを確認し、前の条件が満たされた場合は常に true を返し、計算されたストップレベルを最終出力として返す必要があります。


ブレイクイーブン

作者: Enrico Lambino

 

こんにちは、エンリコ。あなたの素晴らしい仕事は続いている。疲れることなく、素晴らしい仕事を続けてください。

 

こんにちは、

トレイリング・ストップに特定の数量(パーセント)を設定することはできないようですね。

 

2つ以上のTSを使用するには?

これは私のコードです:

//--- トレーリング・ストップ
   CTrails *trails=new CTrails();
   //--- 損益分岐点の設定
   CTrail *trail_be=new CTrail();
   trail_be.Set(BELevel,BEOpenPriceDist,0);   
   trails.Add(trail_be);
   //--- トレーリングストップの設定
   CTrail *trail=new CTrail();
   trail.Set(trail_value,trail_start,trail_step);
   trails.Add(trail);
   //--- 
   main.Add(trails);

この場合、ブレークイーブンは機能しません。トレーリングストップ(トレールオブジェクト)を削除 すると、ブレークイーブンはうまく機能します。

 
mbjen:

こんにちは、

トレイリング・ストップに特定の数量(パーセント)を設定することはできないようですが?

はい、できません。CTrailとCTrailsはストップレベルの変更専用です。出来高についてはCStopで設定する必要があります。
mbjen:

2つ以上のTSを使用する方法を教えてください。

これは私のコードです:

この場合、ブレークイーブンは機能しません。トレーリング・ストップ(トレール・オブジェクト)を削除すると、ブレークイーブンはうまく機能します。

これは、2つのTS(ブレークイーブンとトレール)に設定したアクティベートと距離によります。しかし、トレーリングがブレイクイーブンより先に発動した可能性が高い。ストップレベルがすでに設定したブレイクイーブン価格を上回っている場合、ブレイクイーブンは適用されなくなります。
 
Enrico Lambino:
はい、それはできません。CTrailとCTrailsはストップ・レベルの変更専用です。ボリュームについては、CStopに設定する必要があります。これは、2つ(ブレイクイーブンとトレール)に設定した作動と距離によります。しかし、トレーリングがブレイクイーブンより先に発動している可能性が高い。ストップ・レベルがすでに設定したブレイクイーブン価格を上回っている場合、ブレイクイーブンは適用されなくなります。
以下は私が使用している設定です。ブレイクイーブンは機能しません。私の理解では、2番目のトレールは距離500でアクティブにする必要がありますよね?つまり、ブレークイーブンはその前に有効になっていなければなりません。ではなぜ機能しないのでしょうか?
   //--- トレーリング・ストップ
   CTrails *trails=new CTrails();
   //--- 損益分岐点の設定
   CTrail *trail_be=new CTrail();
   //trail_be.Set(BELevel,BEOpenPriceDist,0); 
   trail_be.Set(230,250,0);   
   trails.Add(trail_be);
   //--- トレーリングストップの設定
   CTrail *trail=new CTrail();
   //trail.Set(trail_value,trail_start,trail_step);
   trail.Set(200,500,10);
   trails.Add(trail);
   //--- 
   main.Add(trails);
 
//--- トレーリング・ストップ
   CTrails *trails=new CTrails();
   //--- 損益分岐点の設定
   CTrail *trail_be=new CTrail();
   //trail_be.Set(BELevel,BEOpenPriceDist,0); 
   trail_be.Set(230,250,0);   
   trails.Add(trail_be);
   //--- トレーリングストップの設定
   CTrail *trail=new CTrail();
   //trail.Set(trail_value,trail_start,trail_step);
   trail.Set(400,500,10);
   trails.Add(trail);
   //--- 
   main.Add(trails);

どっちもダメだ。

 
mbjen:

どちらもダメだ。

ブレイクイーブン/トレーリング起動目標を下げてみる。ブレイクイーブンやトレイリングを設定したからといって、市場がそれにヒットする義務があるわけではない。

 
Enrico Lambino:

ブレイクイーブン/トレーリング起動目標を下げてみる。ブレイクイーブンやトレイリングを設定したからといって、市場がそれにヒットする義務があるわけではありません。


バック テストで同じ市場履歴期間をチェックしています。TS(通常のトレーリング・ストップ)とBEの両方を有効にすると、TSだけが機能し、BEは機能しません(ストップ・ラインが表示されません)。TSを無効にするとBEは問題なく機能します。バックテストでテストし、ストップラインを確認します。

 
mbjen:

バック テストで同じ市場履歴の期間をチェックしています。TS(通常のトレイリング・ストップ)とBEの両方を有効にすると、TSだけが機能し、BEは機能しません(ストップ・ラインが表示されません)。TSを無効にするとBEは問題なく機能します。私はバックテストでテストし、ストップラインを確認します。

takeprofitの値は何ですか?BEの発動価格(ポイント)と同じかそれ以上ですか?
 
mbjen:

どちらも機能しない。

最初のコードはトレーリングストップではなくブレイクイーブンをアクティブにします。SLをさらに修正するとすれば、それはtakeprofitでしょう。しかし、もしTPが500ポイントなら、トレーリングは500ポイントでは全く有効化されないでしょう。

あなたの2番目のコードはトレーリングストップを使いますが、ブレイクイーブンは使いません。なぜなら、ブレイクイーブンが適用される前でさえ、SLはすでにブレイクイーブン価格の上に移動しているからです。