
双均線反転取引戦略は,短期と長期の2つの異なる周期の単純な移動平均を計算し,価格と移動平均の関係に基づいて取引信号を生成します. 短期均線の上を長期均線に突破すると,多めに行きます. 短期均線を下を長期均線に突破すると,空いて行きます. この戦略は,トレンドフォロー戦略です.
この戦略は,入力パラメータを使用して,2つの異なる周期長さのシンプル移動平均を設定します.短周期線は快線と呼ばれ,長周期線は慢線と呼ばれます. 速線は,短期的なトレンドを捕捉するために価格の変化をより迅速に反応します. 慢線は,短期的な市場のノイズをフィルターして主要なトレンドを捕捉するために価格の変化をよりゆっくりと反応します.
具体的には,戦略はsma () 関数を使用して2つの平均線を計算し,計算結果をxSMA () 慢線と快線に代入する.戦略は,close価格を使用して平均線を計算する.
各取引に対してストップ・ロスを設定し,ストップ・ロスのポイントに達すると即座にストップ・ロスを設定する.同時に,戦略は,barcolor関数を使用して,価格と慢線の関係をK線で表示する:多ければK線は緑;空ければK線は赤;平ければK線は青である.
平均線パラメータを調整し,ストップ・ストップ・ロスを最適化し,時間制限を撤回し,またはより合理的な取引期間を設定することでリスクを軽減することができます. フィルター条件として他の指標と組み合わせることを考慮して,偽信号があまり発生しないようにすることもできます.
双均線反転取引戦略overallは,シンプルで実用的なトレンド追跡戦略である. 均線の平滑な作用を利用してトレンドの方向性を認識し,均線を配合して取引シグナルを生成する. この戦略は,実行しやすく,考えが明確で,初心者向けである. しかし,偽信号や時延の問題が多く発生する可能性がある. 参数最適化,補助指標の導入などの方法によって改善され,戦略がより安定して信頼性が高くなる. この戦略は,使用されれば,安定した収益を生み出すことができ,全面的にテストされ,最適化される.
/*backtest
start: 2023-09-15 00:00:00
end: 2023-10-15 00:00:00
period: 4h
basePeriod: 15m
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/
// © HPotter
// Simple SMA strategy
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors
//@version=4
timeinrange(res, sess) => not na(time(res, sess)) ? 1 : 0
strategy(title="Simple SMA Strategy Backtest", shorttitle="SMA Backtest", precision=6, overlay=true)
Resolution = input(title="Resolution", type=input.resolution, defval="D")
Source = input(title="Source", type=input.source, defval=close)
xSeries = security(syminfo.tickerid, Resolution, Source)
Length = input(title="Length", type=input.integer, defval=14, minval=2)
TriggerPrice = input(title="Trigger Price", type=input.source, defval=close)
TakeProfit = input(50, title="Take Profit", step=0.01)
StopLoss = input(20, title="Stop Loss", step=0.01)
UseTPSL = input(title="Use Take\Stop", type=input.bool, defval=false)
BarColors = input(title="Painting bars", type=input.bool, defval=true)
ShowLine = input(title="Show Line", type=input.bool, defval=true)
UseAlerts = input(title="Use Alerts", type=input.bool, defval=false)
timeframe = input(title="Time Frame", defval="15")
timerange = input(title="Time Range", defval="2300-0800")
reverse = input(title="Trade Reverse", type=input.bool, defval=false)
pos = 0
xSMA = sma(xSeries, Length)
pos := iff(TriggerPrice > xSMA, 1,
iff(TriggerPrice < xSMA, -1, nz(pos[1], 0)))
nRes = ShowLine ? xSMA : na
alertcondition(UseAlerts == true and pos != pos[1] and pos == 1, title='Signal Buy', message='Strategy to change to BUY')
alertcondition(UseAlerts == true and pos != pos[1] and pos == -1, title='Signal Sell', message='Strategy to change to SELL')
alertcondition(UseAlerts == true and pos != pos[1] and pos == 0, title='FLAT', message='Strategy get out from position')
possig =iff(pos[1] != pos,
iff(reverse and pos == 1, -1,
iff(reverse and pos == -1, 1, pos)), 0)
if (possig == 1 and timeinrange(timeframe, timerange))
strategy.entry("Long", strategy.long)
if (possig == -1 and timeinrange(timeframe, timerange))
strategy.entry("Short", strategy.short)
if (timeinrange(timeframe, timerange) == 0)
strategy.close_all()
if (UseTPSL)
strategy.close("Long", when = high > strategy.position_avg_price + TakeProfit, comment = "close buy take profit")
strategy.close("Long", when = low < strategy.position_avg_price - StopLoss, comment = "close buy stop loss")
strategy.close("Short", when = low < strategy.position_avg_price - TakeProfit, comment = "close buy take profit")
strategy.close("Short", when = high > strategy.position_avg_price + StopLoss, comment = "close buy stop loss")
nColor = BarColors ? strategy.position_avg_price != 0 and pos == 1 ? color.green :strategy.position_avg_price != 0 and pos == -1 ? color.red : color.blue : na
barcolor(nColor)
plot(nRes, title='SMA', color=#00ffaa, linewidth=2, style=plot.style_line)