勢いを逆転させる戦略

作者: リン・ハーンチャオチャン,日付: 2024-01-03 17:14:15
タグ:

img

概要

この戦略は,移動平均値と相対強度指数 (RSI) をベースとしたモメンタム逆転戦略である.入口と出口を決定するために,高速と遅い移動平均値と過剰購入および過剰販売信号のクロスオーバーを使用する.

戦略の論理

この戦略は,快速信号線として14日間の移動平均値と,スローラインとして28日間の移動平均値を使用しています.また,市場が過買いまたは過売れているかどうかを測定するために,RSIインジケーターを組み込みます.

14日間MAが28日間MAを超越し,RSIが30以下またはRSIが13以下になると,長引入を促す上向きのインパクトの逆転を示します.14日間のMAが28日間のMAを下回ると,インパクトの逆転が失敗し,部分的な利益の出口を促します.

さらに,この戦略には部分的な利益の引き上げメカニズムがあります.開かれたポジションの利益が設定された利益の引き上げレベル (8%のデフォルト) に達すると,部分的な利益 (50%のデフォルト販売) を引き上げます.

利点分析

この戦略は,移動平均値の利点を組み合わせて,ウィップソー損失を回避します.

  1. 移動平均値の速度が遅い場合は 騒音をフィルタリングします

  2. RSIは高値を追いかけるのを避けるために 過剰購入と過剰販売のレベルを示します

  3. 部分的な利益は 利益の一部を固定し リスクを軽減します

リスク分析

  1. 二重移動平均のクロスオーバーは,ウィップソウを生み,損失につながる.この戦略は,いくつかのウィップソウ信号をフィルタリングすることで,追加の確認を提供するためにRSIを使用する.

  2. 部分的な利益占拠は,より大きな動きを逃す結果になる可能性があります. リスクと報酬をバランスするために利益占拠レベルを調整することができます.

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

  1. 移動平均値の異なるパラメータ組み合わせをテストして最適な設定を見つけます.

  2. 異なるRSIの値をテストする.

  3. リスク/リターンをバランスさせるため,部分的利益の取得の利益のレベルと売却比を調整する.

結論

一般的に,これは典型的な平均逆転戦略である.市場ターンを決定するために,RSIによってシグナルをフィルタリングするために補完された高速/遅いMAクロスを使用する.また,一部の利益をロックするために部分的な利益を取ることを実装する.戦略はシンプルでも実用的です.パラメータは異なる市場状況に合わせて調整することができます.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-02 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "14/28 SMA and RSI", shorttitle = "14/28 SMA and RSI", overlay = false, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, currency = currency.USD)
src = close, len = input(14, minval=1, title="Length")
take_Profit=input(8, title="Take Profit")
quantityPercentage=input(50, title="Percent of Quantity to Sell")
closeOverbought=input(true, title="Close Overbought and Take Profit")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
longCondition = 0
sellCondition = 0
takeProfit = 0
quantityRemainder = 100
smaSignal = input(14, title="SMA Signal Period")
smaLong = input(28, title="SMA Longer Period")
if ((sma(close, smaSignal) >= sma(close, smaLong) and rsi<= 30) or (rsi<=13)) and strategy.position_size==0
    longCondition:=1

if longCondition==1
    strategy.entry("Buy", strategy.long)
    
profit = ((close-strategy.position_avg_price)/strategy.position_avg_price) * 100

if sma(close, smaSignal) <= sma(close, smaLong) and strategy.position_size>1
    sellCondition := 1

if strategy.position_size>=1
    if closeOverbought == true
        if profit>=take_Profit and takeProfit == 0
            strategy.exit("Take Profit", profit=take_Profit, qty_percent=quantityPercentage)
            takeProfit:=1
            quantityRemainder:=100-quantityPercentage
    if sellCondition == 1 and quantityRemainder<100
        strategy.close("Buy")

    if closeOverbought == false and rsi>70
        strategy.close("Take Profit")
        
plot(longCondition, "Buy Condition", green)
plot(takeProfit, "Partial Sell Condition", orange)
plot(sellCondition, "Sell Condition", red)

もっと