
この戦略は,二重均等線の判断で市場の逆転を判断するショートラインの取引戦略である.これは,前3つのK線の閉鎖関係を判断して,現在上昇傾向にあるか下降傾向にあるかを判断し,トレンドが転じることを検知すると,適切な多空操作を行う.同時に,戦略は,単純な移動平均を使用して,空白信号をフィルターして,取引リスクを軽減する.
この戦略の主な判断指標は,前3つのKラインの閉店価格関係である. 前3つのKラインが陰線であるならば,現在下落傾向にあると判断する. 前3つのKラインが陽線であるならば,現在上昇傾向にあると判断する. 下降傾向に続いて大陽線が現れたとき,多行する. 上昇傾向に続いて大陰線が現れたとき,空行する.
オーバーの具体的な判断論理は,前3つのK線が陰線であり,最後のK線が大陰線である場合,オーバーする.平仓判断論理は,価格が前K線の最高点を破るとき平仓する.
空白の具体的な判断論理は,前3つのK線が陽線であり,最後のK線が大陽線であり,価格が単純移動平均より低いとき空白する.平仓判断論理は,価格が前K線の最低点に落ちるとき平仓する.
移動平均の長さと大陽大陰線の幅の大きさは,ユーザが設定する入力である.
K線形を使って市場の逆転点を判断し,トレンドで互いに追いつかないようにし,損失を減らす.
移動平均のフィルタリング信号と組み合わせて,ターゲット上の行に早すぎる空白を避ける.
戦略の論理はシンプルで明快で,理解し,修正しやすい.
異なる品種と時間周期に対応するカスタマイズ可能なパラメータ.
短期的な調整の機会を 適時に捉えられるようにする.
市場では,連続した3つの大陰線または大陽線の偽反転が起こり,入場は閉じ込められる.このリスクを軽減するために,より厳しい反転条件を設定することができます.
逆転失敗後,追及されやすい落.リスクをコントロールするためにストップ・ロスを設定できます.
パラメータを正しく設定しない場合,出場頻度が高くなり,好機が逃れることがあります.パラメータの最適化を繰り返しテストする必要があります.
大盘が振動する時は,容易に套りつけられる。陽線陰線判定基準を高め,誤判を避ける。
より複雑な指標を組み合わせてK線形状判断の逆転,例えばBOLL,MACDなどを使用して判断の正確性を向上させることができる.
取引量や波動度などの指標をK線形状と組み合わせ,Volume空頭を避ける.
ストップロジックを追加する. 固定ポイントストップまたはストップトラッキングを設定する.
パラメータを最適化して,最適なパラメータの組み合わせを見つけます.
種や周期のデータをテストし,最適な環境を探します.
この戦略は,概して,簡単な指標を使用して,市場の短期逆転を捕捉する比較的一般的なショートライン戦略である.その優点は,理解しやすいこと,論理が明確で,ある程度の最適化によって良い効果を得ることができる.しかし,いくつかの典型的な逆転戦略のリスクも存在し,止損設定,厳格な逆転条件判断などの手段によってリスクを制御する必要がある.この戦略は,量化取引の入門戦略として学び,実践することができる.
/*backtest
start: 2023-12-07 00:00:00
end: 2023-12-14 00:00:00
period: 5m
basePeriod: 1m
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/
// © stormis
// Based on strategy by hackertrader (original idea by QuantpT)
//@version=5
strategy(title="Mean reversion", shorttitle="MeanRev", precision=16 , overlay=true)
moveLimit = input(70)
maLength = input(200)
ma = ta.sma(close, maLength)
downBar = open > close
isThreeDown = downBar and downBar[1] and downBar[2]
isThreeUp = not downBar and not downBar[1] and not downBar[2]
isBigMoveDown = ((open - close) / (0.001 + high - low)) > moveLimit / 100.0
isBigMoveUp = ((close - open) / (0.001 + high - low)) > moveLimit / 100.0
isLongBuy = isThreeDown and isBigMoveDown
isLongExit = close > high[1]
isShortBuy = isThreeUp and isBigMoveUp
isShortExit = close < low[1]
strategy.entry("Entry Long", strategy.long, when=isLongBuy)
strategy.close("Entry Long", when=isLongExit)
strategy.entry("Entry Short", strategy.short, when=close < ma and isShortBuy)
strategy.close("Entry Short", when=isShortExit)
plot(ma, color=color.gray)