
この戦略は,ビットコインの移動平均の交差原理に基づいて設計されたトレンドフォロー取引戦略である.この戦略は,迅速な移動平均と遅い移動平均の交差を買入と売却の信号として使用する.迅速な移動平均の上部にゆっくりと移動平均を横切るときは,金叉とみなして,多額の取引を行う.迅速な移動平均の下部にゆっくりと移動平均を横切るときは,死叉とみなして,空白を行う.同時に,この戦略は,RSI指標を組み合わせて,夫場を避ける.
この戦略は主に2つの指標に基づいています.
移動平均 (Moving Average,MA):価格の動きと転向のシグナルを判断するために,一定の周期内の閉店価格の平均を計算する.
相対強さ指数 (Relative Strength Index,RSI):特定の周期における株価の急落速度を計算し,超買い超売り領域を判断する.
具体的には,戦略は,短い長さのMAを快線として,長い長さのMAを慢線として使用する. 快線上の慢線を横切るときは,短期価格上昇を加速し,買入シグナルを生成する. 快線下の慢線を横切るときは,短期価格下落を加速し,売り出せシグナルを生成する.
同時に,戦略はRSIの値を設定し,RSIが50を超えると購入シグナルを発信し,RSIが50を下回ると販売シグナルを発信し,価格が激しく変動するときに臆病者が入場するのを避ける.
この戦略の利点は以下の通りです.
この戦略にはいくつかのリスクがあります.
リスクを軽減するために,移動平均の周期パラメータを最適化し,ストップ・ポジションを調整し,ポジションのサイズを適切に縮小することを推奨する.基本面に重大な変化があるときは,この戦略の使用を一時停止する.
この戦略は,以下のいくつかの主要な最適化方向を掲げています.
移動平均周期パラメータを最適化して,最適なパラメータの組み合わせを見つける. 段階的な検索,遺伝的アルゴリズムなどの方法によって最適化することができる.
KDJ,MACDなどの他の技術指標のフィルタを追加し,取引信号の質を向上させる.
価格の変動に対する監視を増やし,変動率に応じてポジションとストップを調整する.
取引量に合わせて,偽の突破を避ける. 取引量が増大した場合にのみ信号を発する.
開発パラメータの自己適応メカニズム. 戦略が異なる市場環境に応じてパラメータの値を取ることを自動的に調整することを許可する.
この戦略は,全体として,より典型的なトレンドフォロー戦略である.移動平均の交差原理に基づいて,取引論理はシンプルで明確で,容易に理解し,実行することができる.同時に,RSI指標を統合することで,非合理的な取引を回避することができる.この戦略は,リスクと利益の共存であり,定量化取引経験のある投資家の使用に適しています.しかし,潜在的な損失のリスクを予防するために注意が必要です.開発者がより多くのフィルタリング条件を追加し,パラメータの自律性を最適化できれば,戦略の安定した収益性をさらに向上させることができます.
/*backtest
start: 2023-11-03 00:00:00
end: 2023-12-03 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//Trading Strategy Warning - Past performance may not equal future performance
//Account Size Warning - Performance based upon default 10% risk per trade, of account size $100,000. Adjust before you trade to see your own drawdown.
//Time Frame - D1 and H4, warning H4 has a lower profit factor (fake-outs, and account drawdown), D1 recommended
//Trend Following System - Profitability of this system is dependent on a STRONG trend in Bitcoin, into the future
strategy("Bitcoin - MA Crossover Strategy", overlay=true)
// User Input
usr_risk = input(title="Equity Risk (%)",type=input.integer,minval=1,maxval=100,step=1,defval=10,confirm=false)
sma_fast = input(title="Fast MA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=20,confirm=false)
sma_slow = input(title="Slow MA (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=40,confirm=false)
rsi_valu = input(title="RSI (Period)",type=input.integer,minval=1,maxval=500,step=1,defval=14,confirm=false)
// Create Indicator's
shortSMA = sma(close, sma_fast)
longSMA = sma(close, sma_slow)
rsi = rsi(close, rsi_valu)
strategy.initial_capital = 50000
// Units to buy
amount = usr_risk / 100 * (strategy.initial_capital + strategy.netprofit)
units = floor(amount / close)
// Specify entry conditions
longEntry = crossover(shortSMA, longSMA)
shortEntry = crossunder(shortSMA, longSMA)
// Specify exit conditions
longExit = crossunder(shortSMA, longSMA)
shortExit = crossover(shortSMA, longSMA)
// Execute long trade
if (longEntry)
strategy.entry("long", strategy.long, units, when = rsi > 50)
// Exit long trade
if(longExit and strategy.position_size > 0)
strategy.order("exit long", strategy.short, abs(strategy.position_size))
// Execute short trade
if (shortEntry)
strategy.entry("short", strategy.short, units, when = rsi < 50)
// Exit short trade
if(shortExit and strategy.position_size < 0)
strategy.order("exit short", strategy.long, abs(strategy.position_size))
// Plot Moving Average's to chart
plot(shortSMA)
plot(longSMA, color=color.black)