
双要素循環取引戦略は,量的な取引戦略である.それは,市場動向を追跡し,余剰利益を得るために,取引信号を生成するために,二つの異なるタイプの技術指標を組み合わせている.
この戦略の優点は,異なる要因を組み合わせて取引機会を探し出すこと,二重確認が信号の信頼性を高め,誤った取引の確率を減らすことです.同時に,この戦略は,タイムリーなストップ・ロスと逆転開設という循環取引の優位性を十分に活用し,リスクを効果的に制御できます.
この戦略は2つの部分から構成されています.
123 逆転戦略 この戦略は,ウルフ・ジェンセンによる”私はどのように先物市場で資金を3倍に翻り替えるか”という本から派生した.その取引論理は,閉盘価格が前日の閉盘価格より2日連続で高く,そして9日ゆっくりK線が50を下回ったときに多めにすること.閉盘価格が前日の閉盘価格より2日連続で低く,そして9日ゆっくりK線が50を超えたときに空にする.
フォローアップ/フォローダウン サポート/レジスタンス 戦略 この戦略は,価格が重要なサポートまたはレジスタンスを破るか否かを判断してシグナルを生成します. 価格が前の取引日の最高値を破るときに看守になり,価格が前の取引日の最低値を破るときに下落します.
上記の2つの戦略を統合したシグナルで,両者のシグナルが一致するときにポジションに入ると,そうでない場合は清算する.同時に,市場変化の時に損失を一時停止し,取引を逆転させるため,資金の循環動作を実現するために,逆転ポジション開設モードを設定する.
この2要素循環取引戦略は以下の利点があります.
多要素設計により,信号信頼性が高くなる.123反転戦略とサポート抵抗戦略は相互検証され,誤信号を減らすことができる.
循環取引メカニズムは,戦略を市場の変化に順応させ,一方的な損失を効果的に制御できるようにする.
9日制ストカスティクス指標は,市場の雑音をフィルターして,信号をより明確にする.
単一因子戦略よりもリスクが低く,撤退が少ない.多因子は合力を形成し,不合理な波動が戦略に与える影響を抑制する.
この戦略にはいくつかのリスクがあります.
震動の状況ではトレンドをうまく捉えられないため,頻繁に止損を逆開設して取引コストを増加させる. 止損ラインを適切に緩和して対応する.
ストキャスティクスパラメータの設定は信号品質に影響する。パラメータを正しく設定しない場合,信号の位置を誤り,品質が低下する可能性がある。パラメータを繰り返しテストして最適化する必要がある。
双要素設計は信号の質を向上させる一方で,市場を抑制するノイズシールドが戦略に与える影響を増加させています. これは,戦略の構築と検証においてより慎重であることを要求しています.
この戦略をさらに最適化するには,以下の方法があります.
異なる周期長さのストキャスティクスをテストし,市場ノイズを排除するための最適なパラメータの組み合わせを見つける
トレンドフィルターで,揺れをフィルターし,明確なトレンドのみでポジションを開きます.
ストップライン設定アルゴリズムを最適化し,取引コストを削減し,同時にストップを有効にします.
異なる要素の組み合わせをテストし,取引シグナルがより明確で,戦略がより安定した要素の組み合わせを見つけます.
この戦略は,二要素設計によって,より高い信号品質とリスク調整の利益を得ている.循環取引機構を利用しながら,一方的な損失を効果的に制御している.この戦略は,リスクと利益の間の良いバランスを得ている.より良い戦略のパフォーマンスを得るために,パラメータ最適化,風力制御設定などの面で,我々はまだ深い研究を行う必要がある.
/*backtest
start: 2023-11-04 00:00:00
end: 2023-12-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 13/11/2019
// 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
// Cueing Off Support And Resistance Levels, by Thom Hartle
// modified by HPotter for trade signals.
// The related article is copyrighted material from Stocks & Commodities.
//
// 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
COSRL(SigVal) =>
pos = 0.0
xLow = low
xHigh = high
xHighD = security(syminfo.tickerid,"W", high[1])
xLowD = security(syminfo.tickerid,"W", low[1])
sigpre1 = iff(xHigh <= xLowD, -1,
iff(xLow >= xHighD, 1, nz(pos[1], 0)))
sigpre2 = iff( xHigh <= xHighD, -1,
iff(xLow >= xLowD, 1, nz(pos[1], 0)))
pos := SigVal ? sigpre1 : sigpre2
pos
strategy(title="Combo Backtest 123 Reversal & Cueing Off Support And Resistance Levels", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
SigVal = input(true, title="To Line \ From Line")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCOSRL = COSRL(SigVal)
pos = iff(posReversal123 == 1 and posCOSRL == 1 , 1,
iff(posReversal123 == -1 and posCOSRL == -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 )