
モメンタム・アベアー・インバース・リリーフ・プルバック・ストラテジー (MOM) は,移動平均線の近くで反転操作を行う簡単な戦略である.この戦略は50期指数移動平均を主要トレンド判断指標として採用し,形質学の吸収ルールを組み合わせて反転の機会を探している.移動平均線を突破した後,第2根または第3根の反転K線が形成されるのを待って,もし反転形状に合致するならば,次のK線が閉じる時に反転開仓を行い,1分間のストップ・タイマーを設定する.
この戦略は主に2つの仮定に基づいています.
50期EMAは,市場トレンドの方向を効果的に判断できます.価格が上昇すると,多頭行進と見なされ,下落すると,空頭行進と見なされます.
トレンドがEMAを突破した後に,しばしば短期的な調整反転が発生し,反転K線の吸収の形状特性を利用して,反転が終了するタイミングを捕捉して,反転操作を行うことができる.
具体的には,戦略はまず50期EMAを計算し,その後価格がEMAを突破するかどうかを判断する. 多頭突破すると,下向き陰線K線2-3本待ち,次のK線が多頭吞食すると,そのK線が閉じる時に多行する. 空頭突破すると,上向き陽線2-3本待ち,次のK線が空頭吞食すると,そのK線が閉じる時に空行する.
この戦略の利点は以下の通りです.
操作ロジックはシンプルでわかりやすく,理解しやすい実装で,初心者にも適しています.
移動平均のトレンド判断とK線形状の特性を充分利用し,取引シグナルをより効率的にします.
ストップ・ロスの時間設定により,単一取引の損失を制御できます.
規則は明確で,主観的な判断は避けられ,戦略はより信頼性が高くなります.
この戦略にはいくつかのリスクがあります.
50日 EMAはトレンドを正確に判断できず,誤判の可能性もある.
K線形判定は,同様に誤判の可能性がある.
ストップ・タイムが正しく設定されていない場合,損失が増加したり,利益が減少したりする可能性があります.
機械取引には滑り点,串単等の問題があり,利益に影響する可能性がある.
対策として
移動平均の周期パラメータを最適化して,より適切な値を見つける.
他の指標と組み合わせて判断し,信号の信頼性を高めます.
停止時間パラメータをテストして最適化し,最適なパラメータを見つけます.
スライド・コントロールを戦略に設定して,重大なスライド・損失を回避する.
この戦略は以下の点で最適化できます.
移動平均の周期パラメータを最適化して,最適なパラメータを見つけます.
移動平均の他のタイプ,加重移動平均などに置き換える.
音量や波幅などのフィルターを追加して,誤った信号を回避する.
ストキャスティクス,MACDなどの他の指標と組み合わせた戦略で信号の質を向上させる.
各種の特徴と取引時期に応じて最適なストップ・タイムを設定する.
収益が一定水準に達したときに,積極的に停止するストップ・ストップ戦略を追加します.
動量平均逆数救済引き戻し戦略は,シンプルで実用的なショートライン取引戦略で,主に移動平均を使用してトレンドを判断し,K線を吸収して反転の機会を発見してショートライン操作を行う.この戦略は,操作の明確さと実現の簡素さの利点がありますが,いくつかのパラメータの最適化スペースもあります.ある程度のテストと調整を経て,この戦略は,初心者向けの量化取引の良い出発点になります.
/*backtest
start: 2023-02-11 00:00:00
end: 2024-02-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("LinoR EMA Pullback Strategy", shorttitle="EPS", overlay=true)
// Define EMA period
emaPeriod = input(50, title="EMA Period")
// Calculate 50 EMA
ema50 = ta.ema(close, emaPeriod)
// Calculate engulfing conditions
engulfingBullish = close[1] < open[1] and close > open and close > close[1] and open < open[1]
engulfingBearish = close[1] > open[1] and open > close and open > open[1] and close < close[1]
// Define a 1-minute timer
var timer = 0
if bar_index > 0
timer := timer[1] + 1
// Long condition
longCondition = ta.crossover(close, ema50) and engulfingBullish
if longCondition
strategy.entry("Buy", strategy.long)
// Short condition
shortCondition = ta.crossunder(close, ema50) and engulfingBearish
if shortCondition
strategy.entry("Sell", strategy.short)
// Exit after 1 minute
if timer >= 1
strategy.close("Exit")
plotshape(series=longCondition, title="Long Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=shortCondition, title="Short Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)