ダウントレンドにおけるショート・トレーディング戦略

作者: リン・ハーンチャオチャン, 日付: 2023年11月7日17時06分59秒
タグ:

img

概要

この戦略は,移動平均値とRSI指標に基づいて,徐々にショートポジションを構築することによって下落傾向を利用します.それは下落する市場での利益を目指します.

戦略の論理

閉じる価格が100日間の単純な移動平均値を下回り,RSIが30を超える場合,ショートします.その後,エントリー価格よりも3%高いストップ損失を設定し,エントリー価格より2%低い利益を取ります.不必要なストップを避けるためにより大きなストップ損失により変動ができます.価格がストップ損失を上回り,または利益を取ること以下に落ちるとき,ポジションを閉じる.

Coinrule プラットフォームでは,ポジションを徐々に構築するために複数の連続販売オーダーを設定します.ダウントレンドが持続すると,ポジションサイズを増やす.オーダー間の時間間隔を設定することは,全体的なポジションサイズを制御するのに役立ちます.

各取引はストップ・ロスト・オーダーと,収益オーダーと結びついています. 割合はミッドキャップコインに最適化されています. 特定のコインに基づいて調整できます. トレンドに沿って取引されるので,ストップ・ロストと収益率1:1.5は動作できます.

ストップ・ロスは入場価格より3%高い 入場価格を下回る2%で利益を得る 少し大きなストップロスは 波動性が高くなります

利点分析

  • MAはトレンドの方向性をよく判断し,ダウントレンドを時間内に捉える
  • RSIフィルターは盲目的に短縮を避ける
  • 徐々にポジション構築は,より良いリスク/報酬比で最大限のリスクを制御する
  • ストップ損失と利益を取って,すべての取引の耐久性を確保します.

リスク分析

  • 鋭いVの逆転は大きな損失につながる可能性があります
  • ストップ・ロストを調整し,利益を得るために価格を注意深く監視する必要があります
  • ポジションのサイズを制御するためにレバレッジは合理的である必要があります.
  • 不安定な市場での一時停止戦略は,不必要な損失を回避します

オプティマイゼーションの方向性

  • 異なるパラメータで試験MA
  • 異なるパラメータで RSI の組み合わせを試験する
  • リスク・リターンを最適化するために,ストップ・ロストとテイク・プロフィートの比率を調整する
  • 位置サイズを制御する命令の間の異なる時間間隔をテスト

概要

この戦略は,MAとRSIをベースにダウントレンドを効果的に捉える. 徐々にポジション構築することでリスクが制御され,ストップ・ロストとテイク・プロフィートは耐久性を確保する.ストップ・ロスト/テイク・プロフィートのパラメータを調整することによってリスク・リワース比をさらに最適化する. パラメータとリスク管理の改善には余地がある. しかし,全体として堅固な短期短期戦略である.


/*backtest
start: 2022-10-31 00:00:00
end: 2023-11-06 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/
// © Coinrule

//@version=4
strategy(shorttitle='Short In Downtrend',title='Short In Downtrend Below MA100', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 10,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2019, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true       // create function "within window of time"

//MA inputs and calculations
inSignal=input(50, title='MASignal')

MA= sma(close, inSignal)

// RSI inputs and calculations
lengthRSI = input(14, title = 'RSI period', minval=1)
RSI = rsi(close, lengthRSI)


//Entry 
strategy.entry(id="short", long = false, when = close < MA and RSI > 30)

//Exit
shortStopPrice  = strategy.position_avg_price * (1 + 0.03)
shortTakeProfit = strategy.position_avg_price * (1 - 0.02)

strategy.close("short", when = close > shortStopPrice or close < shortTakeProfit and window())


plot(MA, color=color.purple, linewidth=2)


もっと