移動平均とRSIに基づく片側ロング戦略


作成日: 2023-12-18 10:28:10 最終変更日: 2023-12-18 10:28:10
コピー: 1 クリック数: 660
1
フォロー
1621
フォロワー

移動平均とRSIに基づく片側ロング戦略

概要

この戦略は,エンリコ・マルヴェルティ (Enrico Malverti) の文章を基に改訂され,主に単純な移動平均 (SMA) と相対的に強い指標 (RSI) を使って,多頭入場と平和ポジションの信号を識別する.戦略は,空白ではなく,多頭入場を行うのみである.

戦略原則

入場シグナルは,閉店価格に長い周期のSMA平均線が穿越されたときに多ポジションを開くことです.

平仓信号には以下の種類があります.

  1. RSIが70を下回ったり75を超えた時,平仓;
  2. 閉店価格の下の短い周期のSMA平均線を破るときのストップ;
  3. 閉店価格の下の短い周期のSMA平均線が止まる.

ストップのSMA平均線とストップのSMA平均線が描かれています.

優位分析

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

  1. シンプルでわかりやすい指標の組み合わせで,理解し,実行しやすい.
  2. 余分な仕事をして空白の余分なリスクを避ける
  3. 明確な入場ルール,ストップ・ロズル,ストップ・ストップ・ルールがあり,リスクはコントロールできます.
  4. 比較して最適化しやすく,SMA周期などのパラメータを調整できます.

リスク分析

この戦略にはいくつかのリスクがあります.

  1. 心理的な影は,複数の損失を伴い,信号を追跡する自信を失ってしまう.
  2. SMA平均線の誤差はリスクを生じます.
  3. RSIは散発しやすく,超買い超売り信号は信頼できない.

対応方法:

  1. 心理的な影響を受けないよう,追跡を継続する仕組みを確立する.
  2. SMA平均線のパラメータを調整し,最適化周期;
  3. 他の指標と組み合わせてRSI信号をフィルターする.

最適化の方向

この戦略は以下の方向から最適化できます.

  1. 異なるパラメータのSMA設定を試す
  2. 他の指標を追加し,出入り信号をフィルタリングする.
  3. 傾向を判断する指標,トレンドの区分,並べ替えを追加する.
  4. パラメータを自律的に最適化してみてください.

要約する

この戦略の整体構想は明快で分かりやすく,基本指標を使用し,制御性が強く,中長線操作に適しています.しかし,パラメータ設定と指標フィルタリングは,戦略をより安定して信頼できるようにするために繰り返しテストと最適化が必要です.考え方がシンプルな戦略は,本当に使用可能な取引システムを形成するために多くの最適化調整と豊富な組み合わせを必要とします.

ストラテジーソースコード
/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version= 4
// form the original idea of Enrico Malverti www.enricomalverti.com , trading system 2015  
// https://sauciusfinance.altervista.org
strategy(title="MAs & RSI strategy long only", overlay = true, max_bars_back=500)

///********FROM EMAS TO SIMPLE MA *****
// NON AGGIUNTO SCHAFF INDICATOR, che serve per discriminare quali titoli scegliere dallo screener (segnale già aperto o il primo o, a parità,
//quello più alto) ==> Tolte le bande di Bollinger (che filtrano "poco")

// INPUTS 
emapf = input(14, title ="Ma periodo veloce",  minval=1, step = 1)
emapl = input(14, title ="Ma periodo lungo",  minval=1, step = 1)
emaps = input(7, title ="Ma periodi stop",  minval=1, step = 1)
rsi_period = input(14, title="RSI period", minval = 1, step = 1) 
// CALCULATIONS
maf = sma(close, emapf)
mal = sma(close, emapl)
// rsi
myrsi = rsi(close, rsi_period)
//ema stop long ed ema stop short
//Ema7 messo da "massimo" a "chiusura" come target per posizioni short. Il limite è, in questo caso, sempre ema20 (più restringente - asimmetria)
// in questo t.s., lo short viene soltanto indicato come "rappresentazione grafica", non agito
mass = sma(close, emaps)
masl = sma(low, emaps)
ma200=sma(close,200)
/// Entry
strategy.entry("Long", true, when = crossover(close,mal))

rsi1 = crossunder(myrsi,70)
rsi2 = myrsi > 75
// previously, 80
st_loss_long = crossunder(close,masl)// **chiusura sotto EMA7**
target_long= crossunder(close,maf) //* Chiusura sotto EMA14*
// exits. *RSI**Long: Target if over bandamax, loss if under bandamin. Viceversa, for short
strategy.close("Long", when = rsi1, comment="crossunder RSI")
strategy.close("Long", when = rsi2, comment ="RSI MAX")
strategy.close("Long", when = st_loss_long, comment = "Stop loss")
strategy.close("Long", when = target_long, comment = "target_long" )

plot(masl, title="ma stop long", color=#363A45, linewidth= 1, style=plot.style_cross)
plot(maf, title="MA FAST", color=#FF0000,  linewidth= 1)
plot(mal, title="MA SLOW", color=#0000FF,  linewidth= 2)
plot(mass, title="ma stop short", color=#787B86,linewidth= 1, style=plot.style_cross)
plot(ma200, title="ma200", color=color.black,  linewidth= 1)