
この戦略は,123反転戦略とSTARC波段戦略を組み合わせて,より正確な取引信号を生成します.123反転戦略は,K線反転形態によって底部反転の機会を判断します.STARC波段戦略は,価格突破波段の上下軌道を使用して,トレンドの方向を判断します.両戦略の組み合わせを使用すると,取引信号がより信頼性が高くなり,両戦略の優位性を利用することもできます.
この戦略は,ウルフ・ジェンセンの”将来市場で3倍利益を得る方法”の183ページに由来する.その取引思想は,価格が下方逆転したときに,底部反転の機会として入場し,多額の取引を行うこと,価格が上方逆転したときに,トレンドの逆転の機会として入場し,空きをすることである.具体的ルールは,
多頭シグナル:閉盘価格が前日の閉盘価格より2日連続で高く,そして9日の移動平均のゆっくりとしたK線が50未満であるとき,多頭する. 空頭シグナル:閉盘価格が前日の閉盘価格より2日連続で低い場合,そして9日の移動平均速度のK線が50以上であるとき,空売りする.
この戦略は,価格の短期簡易移動平均の上下波段を描画してトレンド方向を判断する.上線は,移動平均に平均実際の波動範囲 ((ATR) を加えることで構成される.下線は,移動平均からATRを減算することによって構成される.価格が上線を突破するときに多見,下線を突破するときに空見である.
STARCは,マニング・ストラー (Manning Stoller) の発明者から名付けられた,ストラー平均範囲チャネルである.
123反転策とSTARC波段策の組み合わせにより,取引信号の正確性が向上する.123反転策は反転の機会を捕捉する.STARC波段策は価格トレンドの方向を判断する.両者は互いを補完し,偽信号を減少させ,勝率を向上させる.
さらに,123反転策は,市場が新高や新低を突破した後に高殺し落下を避けるように策略を可能にします.STARC波段策略は,ATRを波段範囲に自律的に適応して市場の変化に対応するために利用できます.
この戦略の最大のリスクは,単発的損失と連続的な損失の発生を完全に回避することができないことである.二つの戦略を組み合わせることで偽信号を減らすことができるが,特定の市場状況下で戦略が誤判断を生むことは排除できない.このとき,損失を制御するために時宜で止損が必要である.
もう一つのリスクは,パラメータを正しく設定しないことが,戦略の効果を損なう可能性があることです.異なる品種と周期に応じてパラメータをテストし,最適化して,その品種の特性に合わせてパラメータをテストし,最適化する必要があります.
この戦略は,さらに改善できる余地があります.
価格の停止や指標の停止を設定して,大きな単一損失を回避するストップ・ストップ戦略の追加.
ポジション開設条件の追加,例えば,量値確認の追加,不利な価格での開設を避ける.
パラメータを最適化して,その品種と周期に最も適したパラメータの組み合わせを探し出す.
市場変化に応じてポジションを調整する.
この戦略は,123反転戦略とSTARC波段戦略を組み合わせて使用し,トレンド反転と方向を判断する二つの戦略の優位性を統合しています.偽信号を効果的に軽減し,取引効率を向上させることができます.また,任意の戦略を使用するだけで存在する問題を最適化します.継続的な最適化により,この戦略は,安定した信頼性の高い量化取引戦略になることができます.
/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-03 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 28/07/2021
// This is combo strategies for get a cumulative signal.
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50.
// The strategy sells at market, if close price is lower than the previous close price
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// A type of technical indicator that is created by plotting two bands around
// a short-term simple moving average (SMA) of an underlying asset's price.
// The upper band is created by adding a value of the average true range
// (ATR) - a popular indicator used by technical traders - to the moving average.
// The lower band is created by subtracting a value of the ATR from the SMA.
// STARC is an acronym for Stoller Average Range Channels. The indicator is
// named after its creator, Manning Stoller.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
vFast = sma(stoch(close, high, low, Length), KSmoothing)
vSlow = sma(vFast, DLength)
pos = 0.0
pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0)))
pos
STARC(LengthMA,LengthATR,K) =>
pos = 0.0
xMA = sma(close, LengthMA)
xATR = atr(LengthATR)
xSTARCBandUp = xMA + xATR * K
xSTARCBandDn = xMA - xATR * K
pos := iff(close > xSTARCBandUp, 1,
iff(close < xSTARCBandDn, -1, nz(pos[1], 0)))
pos
strategy(title="Combo Backtest 123 Reversal & STARC Bands", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- STARC Bands ----")
LengthMA = input(5, minval=1)
LengthATR = input(15, minval=1)
K = input(1.33, minval=0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posSTARC = STARC(LengthMA,LengthATR,K)
pos = iff(posReversal123 == 1 and posSTARC == 1 , 1,
iff(posReversal123 == -1 and posSTARC == -1, -1, 0))
possig = iff(reverse and pos == 1, -1,
iff(reverse and pos == -1 , 1, pos))
if (possig == 1 )
strategy.entry("Long", strategy.long)
if (possig == -1 )
strategy.entry("Short", strategy.short)
if (possig == 0)
strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )