引き上げと停止損失を伴う引き下げの購入

作者: リン・ハーンチャオチャン開催日:2023年11月23日16時50分01秒
タグ:

img

概要

この戦略は,価格の下位を動的に追跡し,価格の下位後も長期に渡り続け, 適応的な利益とストップロスを通して 利益とリスクを制御します.

原則

この戦略の主な論理は,ATR指標を使用して動的なテイク・プロフィットとストップ・ロスのポジションを計算することである.特に,閉店価格が過去n日の最低値以下 (7日に設定されているコード) のとき,ロング・シグナルが起動される.ロング・ポジションでは,テイク・プロフィットとストップ・ロスの価格がATR指標 (ATR倍数で設定されている) に基づいて動的に計算され,リアルタイムでチャートに表示される.価格がテイク・プロフィットまたはストップ・ロスのポイントに達すると,プロフィットテイクまたはリスク制御を達成することができる.

この戦略は,最もシンプルな買い下げアプローチとダイナミックストップ・ロース/テイク・プロフィートのアイデアを組み合わせて,リスクを制御しながら,機会を適時に把握します.

利点

この戦略の主な利点は以下の通りです.

  1. ダイナミックなATR指標を使用してストップ・ロスを設定し,利益を引き出すことは,市場の変動に基づいてP/Lレベルを調整し,不要な損失を避け,または過剰に固定されたストップ・ロスト/利益を引き出すためにより大きな利益の機会を逃すことができます.これは戦略の最大のハイライトです.

  2. 価格がサポートレベルを下回り,反発する可能性が高いとき,市場統合中に,買い下げ戦略はより高い勝率を持つ傾向があります.

  3. ATR の値で取利益/停止損失比を推定することは合理的で,市場条件と個人のリスク容量に応じて柔軟に設定できます.

  4. コードロジックはシンプルで明確で,分かりやすい.パラメータ設定も直感的です.学習のための例の戦略として適しています.

リスク

この戦略の主なリスクは,

  1. ダウン後のリバウンドの幅と強さを決定することができない.利益予想が不足するリスクがある.これは,異なる利益範囲を設定するためにATRパラメータを調整することによって対処することができます.

  2. 価格がサポートを突破し,引き続き下落し,より大きな損失に直面するときに損失に陥るリスクは,ポジションサイズを減らすことと,ストップロスのATR倍数を上限損失に低下させることによって軽減できます.

  3. ストップ損失が狭すぎると,必要なくノックアウトされる可能性があります.必要のないストップアウトを避けるために,ATR倍数をより緩やかに設定する必要があります.

  4. バックテスト 過剰なフィットリスク.適切な滑り/起動設定で,異なる市場条件下でテストする必要があります.

強化

戦略は以下の側面で強化できる:

  1. サポートレベルとシグナル決定を最適化.KDJやボリンジャー帯のようなより洗練された指標を使用して逆転信号をより信頼的に判断することができます.

  2. ポジションサイズを最適化する.市場の変動などに基づいてポジションサイズを動的に調整する.

  3. トレイリングストップ・ロスのモジュールを実行します 価格が一定の範囲で上昇した後,ストップを締め,部分的な利益をロックします.

  4. 合流フィルターを追加する.対応するセクター/広範囲市場もサポートに達した場合にのみロングを入力し,信号の信頼性を確認します.

結論

この戦略は,リスク制御のために利益/ストップ損失を伴う買い下げを通じて平均逆転の機会を捉える.より洗練された余地があるにもかかわらず,初心者が理解し学ぶのに十分なシンプルである.さらなる改善は強度と適応性を向上させる.


/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © racer8
//@version=4
strategy("Buy-The-Dip", overlay=true)

atn = input(15, "ATR Period")
atr = sma(tr,atn)[1]
bought = strategy.position_size[0] > strategy.position_size[1]

slm = input(2.0,"ATR SL Multiple",minval=0)
StopPrice  = strategy.position_avg_price - slm*atr              // determines stop loss's price 
FixedStopPrice = valuewhen(bought,StopPrice,0)                  // stores original StopPrice  
plot(FixedStopPrice,"Stop Loss",color=color.red,linewidth=2,style=plot.style_cross)

tpm = input(1.0,"ATR TP Multiple",minval=0)
TakePrice  = strategy.position_avg_price + tpm*atr              // determines Take Profit's price 
FixedTakePrice = valuewhen(bought,TakePrice,0)                  // stores original TakePrice  
plot(FixedTakePrice,"Take Profit",color=color.green,linewidth=2,style=plot.style_cross)

nn = input(7,"Channel Length")
ll = lowest(low,nn)

if close<ll[1]
    strategy.entry("Buy",strategy.long)
if strategy.position_size > 0
    strategy.exit(id="XL SL", stop=FixedStopPrice, limit=FixedTakePrice)    // commands stop loss order to exit!

plot(ll,color=color.orange)

もっと