
この戦略は,5日目指数移動平均 ((EMA) と20日目簡易移動平均 ((SMA) の交差を計算して取引シグナルを生成する. 5日目EMA上で20日目SMAを突破すると,看板を取って多項に入ります. 価格の変化が5%または-5%に達すると,平仓を外します. この戦略は,取引量指数 ((TII) を補助判断指標として併用します.
双指数移動平均線は,広く使用される技術指標である。5日間のEMAは近期価格変化の傾向を表し,20日間のSMAは中期価格の動きを表している。短期平均線上を穿越すると,価格の動きが下向きから転がり,入場を余裕とする.逆に,短期平均線下を穿越すると,価格が下向きから転がり,出場を考慮する。
この戦略は5日EMAと20日SMAを取引信号として設定する. 5日EMAが20日SMAを突破する時に長所シグナルを生成する. 持仓価格の変化が5%または-5%に達すると,利益またはストップ・ローズとして処理する. さらに,TII指標を組み合わせて,補助判断基準として扱う.
詳細は以下の通りです.
この戦略は,移動平均の黄金のクロス取引シグナルを利用し,以下の利点があります.
全体として,この戦略は,規則が明確で,理解しやすく,実行可能で,移動平均の交差などの成熟した技術指標を利用し,リスク管理の措置はより包括的で,初心者向けに適した量化取引戦略です.
この戦略にはいくつかのリスクがあります.
これらのリスクは以下の方法で改善できます.
この戦略をさらに改善する余地があります.
この戦略は以下の点で最適化できます.
移動平均のパラメータを最適化する.より短時間またはより長時間のEMAとSMAのパラメータの組み合わせをテストして,よりよいパラメータのペアを見つける.
他の指標のフィルタを追加する.MACD,KDJなどの指標の補助判断は部分的な誤信号を回避する.
機械学習アルゴリズムを適用する. 統計的方法またはニューラルネットワークを使用して,歴史データをモデル化し,より優良なパラメータを自動的に探す.
ダイナミックなストップ・ストップを設定する.市場の波動度や個々の株の特性に応じてストップ・ストップ幅を調整することで,リスクをよりよくコントロールできる.
外国為替,デジタル通貨などの他の品種にも同じ戦略のルールが適用されます.
戦略の安定性や収益性を大幅に向上させることができる.
この戦略は,全体として,理解し,実行しやすい二重移動平均クロス戦略である.移動平均信号の優位性を利用し,TII指標を補助して,誤った信号をフィルターしようとする.ストップロスを設定することでリスクを制御する.この戦略は,初心者向けの学習であり,大きな最適化スペースがある.パラメータ設定をさらに完善し,信号フィルターと動的ストップロスを追加すれば,非常に実用的な量化取引戦略になることができる.
/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA-SMA Crossover Strategy", shorttitle="EMA-SMA Cross", overlay=true)
// Define the moving averages
ema5 = ta.ema(close, 5)
sma20 = ta.sma(close, 20)
smaVolume10 = ta.sma(volume, 50)
majorLength = input(60, title="Major Length")
minorLength = input(30, title="Minor Length")
src = input(close, title="Source")
smaValue = ta.sma(src, majorLength)
positiveSum = 0.0
negativeSum = 0.0
for i = 0 to minorLength - 1
price = na(src[i]) ? 0 : src[i]
avg = na(smaValue[i]) ? 0 : smaValue[i]
positiveSum := positiveSum + (price > avg ? price - avg : 0)
negativeSum := negativeSum + (price > avg ? 0 : avg - price)
tii = 100 * positiveSum / (positiveSum + negativeSum)
// Buy condition: 5 EMA crosses above 20 SMA
buyCondition = ta.crossover(ema5, sma20) and tii > 0 and tii >= tii[1]
//and volume > smaVolume10 //
// Track entry price
var entryPrice = 0.0
if (buyCondition)
entryPrice := close
// Calculate percentage change from entry price
priceChange = close / entryPrice - 1
// Plotting the moving averages on the chart
plot(ema5, color=color.blue, title="5 EMA")
plot(sma20, color=color.red, title="20 SMA")
// Highlighting buy signals and exit signals on the chart
// plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, size=size.small, style=shape.labelup, text="Buy")
// Strategy entry and exit
if (buyCondition)
strategy.entry("Buy", strategy.long)
// Exit conditions
if (strategy.opentrades > 0)
if (priceChange >= 0.05 or priceChange <= -0.05)
strategy.close("Buy")