トランプ・ボリンジャー・EM・キャンドルスタック戦略

作者: リン・ハーンチャオチャン開催日:2023年10月7日 15時30分27秒
タグ:

概要

この戦略は,短期取引戦略に属する二線ギャンブル取引のためにボリンジャーバンド,EMAおよびキャンドルスタックパターンを使用します.

原則

戦略は以下の部分からなる.

  1. ボリンジャー帯 閉店価格と標準偏差に基づいて上下線を生成します.価格が上下線に近づくとショート,下下線に近づくとロングです.

  2. エイマ 21日間の指数関数移動平均を計算し,価格がEMAを突破したときの取引信号を生成します.

  3. ろうそく の パターン 価格の逆転点を特定し,取引を誘発するために,下の暗い雲の覆いと上部のピアスパターンを特定します.

  4. 双線 ギャンブル ボリンジャー信号,EMAクロスオーバーとキャンドルスタイルのパターンに基づいて同時にロングとショートを行います

論理的には

可能性のある逆転点を識別するためにボリンガー帯を使用し,上部レールでショート,下部レールでロングを行います. 21 日間のEMAを計算し,ゴールデンクロスでロング,デスクロスでショートを行います.また,逆転を識別するためにキャンドルスタックパターンを使用し,下部ダーククラウドでロング,上部ピアスでショートを行います.最終的な二方向取引決定を下げるために3つの信号を組み合わせます.

この戦略は,取引決定の効率性を向上させるために複数の確認信号を統合している.利点としては,複数の検証と逆転に適時に対応することで,より高い収益性がある.

利点分析

この戦略の主な利点は以下の通りです.

  1. 複数の信号の確認により精度が向上する

ボリンガー,EMA,キャンドルスタイクを組み合わせることで,シグナルを検証することで精度が向上します.これは偽のシグナルや誤った取引を避けるのに役立ちます.

  1. 速やかに対応し,逆転を把握する

合致した信号は 逆転が広がる前に 適切な取引のために 潜在的逆転点を迅速に特定します

  1. 双線取引で利益が上がる

ロングとショートの両方のポジションを保有すると 両方向の大きな動きから利益を得ます これは片方市場でのリスクを軽減します

  1. 短期取引の柔軟性

短期ボリンガーとEMAは,短期的な動きを把握し,頻繁な取引に適し,高周波の変動に対応します.

  1. 直接使用可能で操作が簡単

完全な戦略コードは,ライブ取引に直接使用可能になります.合理的なパラメータ選択はまた,個人トレーダーのために非常に簡単に使用することができます.

リスク分析

潜在的なリスクは:

  1. 連続ストップ損失の可能性

ボリンガー,EMA,キャンドルストック信号のウィップソーが連続的なストップ損失を引き起こす可能性があります.合理的なストップ損失を確保するためにパラメータを調整します.

  1. 双線取引におけるリスクが高い

ロングとショートの両方を保有することは損失を増幅する可能性があります.リスクを支えるのに十分な資本が必要です.より低いポジションサイズが推奨されます.

  1. 短期取引の際には 厳密な監視が必要です

頻繁に短期取引を行うには,市場を注意深く監視する必要があります. 予想外の大きな損失を制限するために,ストップ・プロフィート/ロスを設定します.

  1. 制限された最適化空間

Bollinger と EMA の最適化空間は比較的小さい.パラメータを適用する際には柔軟性が必要である.

  1. 一般的なキャンドルスタイルのパターンは不明確かもしれません.

戦略の一部は,時に不透明なキャンドルスタイク信号に依存しています.そのような場合,他の指標と組み合わせます.

オプティマイゼーションの方向性

戦略は以下の点で改善できる:

  1. より多くの指標信号を統合する

KDのような他の指標を追加することで MACD は信号源を多様化し 意思決定の正確性を向上させます

  1. 機械学習を組み込む

MLアルゴリズムを使用して,過去のデータを分析し,手動的な介入を減らすためにいくつかの指標信号を拡張または置き換えることができます.

  1. ストップ・プロフィート/損失を最適化

リスクを減らすために 業績に基づく適応型ストップ・プロフィットと トレイリング・ストップ・ロスを導入します

  1. リスク管理を強化する

市場状況に応じて資本の配置,ポジションのサイズ,リスク管理戦略を最適化する.

  1. 定量バックテストと最適化

バックテストと紙取引を利用してパラメータを繰り返し最適化し,ライブ取引の決定を支援します.

  1. 自動取引

バックテスト結果に基づいて戦略をパラメータ化し,ハンドフリー実行のための自動取引システムに組み込む.

結論

この戦略は,複数の検証のためにボリンジャー,EMAおよびキャンドルスティック信号を統合している. 双線取引は収益性をさらに向上させる. 迅速な応答により,短期間の頻繁な取引に適している. 効果的なストップ・プロフィート/損失およびパラメータ最適化により,リスクを軽減しながらパフォーマンスをさらに向上させることができます. 全体的に,このシンプルで実践的な戦略は強力な実践的な価値を持っています.


/*backtest
start: 2022-09-30 00:00:00
end: 2023-10-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//Design by MrPhu in August,10,2018
strategy("TrumpShipper_Long_Short V26", overlay=true)
filterFractals = input(true, title=" Follow Code #Trump On/Off")
dt = 0.0001
confidence=(request.security(syminfo.tickerid, 'D', close)-request.security(syminfo.tickerid, 'D', close[1]))/request.security(syminfo.tickerid, 'D', close[1])
prediction = confidence > dt ? true : confidence < -dt ? false : prediction[1]

if (prediction)
    strategy.exit("Close", "Short ")
    strategy.entry("Long ", strategy.long)

if (not prediction)
    strategy.exit("Close", "Long ")
    strategy.entry("Short ", strategy.short)
///////////Bollinger Band///////////////
length = 20
crc = close, title="Source"
mult = 2.0
basis = sma(crc, length)
dev = mult * stdev(crc, length)
upper = basis + dev
lower = basis - dev
spanColor = prediction ? green : red, transp=90

p1 = plot(upper, title="Short", style=line, linewidth=1, color=spanColor)
p2 = plot(lower, title="Long", style=line, linewidth=1, color=spanColor)

fill(p1, p2, color=spanColor, transp=90, title="Fill")

/////////////
Optional_TimeFrame = 'D'

M_HIGH = request.security(syminfo.tickerid, Optional_TimeFrame, high)
M_OPEN = request.security(syminfo.tickerid, Optional_TimeFrame, open)
M_LOW = request.security(syminfo.tickerid, Optional_TimeFrame, low)

H_RANGE = M_HIGH-M_OPEN
L_RANGE = M_OPEN-M_LOW

H_236 = M_HIGH - H_RANGE * 0.236
H_382 = M_HIGH - H_RANGE * 0.382
H_500 = M_HIGH - H_RANGE * 0.500
H_618 = M_HIGH - H_RANGE * 0.618
H_764 = M_HIGH - H_RANGE * 0.764

L_236 = M_LOW + L_RANGE * 0.236
L_382 = M_LOW + L_RANGE * 0.382
L_500 = M_LOW + L_RANGE * 0.500
L_618 = M_LOW + L_RANGE * 0.618
L_764 = M_LOW + L_RANGE * 0.764

pl1=plot(M_HIGH, color=M_HIGH != M_HIGH[1] ?na:black, style=line, linewidth=1, transp=80)

pl2=plot(H_236, color=H_236 != H_236[1] ?na:gray, style=line, linewidth=1, transp=80)
pl3=plot(H_382, color=H_382 != H_382[1] ?na:black, style=line, linewidth=1, transp=80)
pl4=plot(H_500, color=H_500 != H_500[1] ?na:red, style=line, linewidth=1, transp=80)
pl5=plot(H_618, color=H_618 != H_618[1] ?na:gray, style=line, linewidth=1, transp=80)
pl6=plot(H_764, color=H_764 != H_764[1] ?na:gray, style=line, linewidth=1, transp=80)

pl7=plot(M_OPEN, color=M_OPEN != M_OPEN[1] ?na:blue, style=line, linewidth=2)

pl8=plot(L_236, color=L_236 != L_236[1] ?na:gray, style=line, linewidth=1, transp=80)
pl9=plot(L_382, color=L_382 != L_382[1] ?na:black, style=line, linewidth=1, transp=80)
pl10=plot(L_500, color=L_500 != L_500[1] ?na:red, style=line, linewidth=1, transp=80)
pl11=plot(L_618, color=L_618 != L_618[1] ?na:black, style=line, linewidth=1, transp=80)
pl12=plot(L_764, color=L_764 != L_764[1] ?na:gray, style=line, linewidth=1, transp=80)

pl13=plot(M_LOW, color=M_LOW != M_LOW[1] ?na:black, style=line, linewidth=1, transp=80)

SHOW_MA = false
MA_SRC = hlc3
MA_LENGTH = 21

_MA = ema(MA_SRC, MA_LENGTH)
pl14=plot(not SHOW_MA ? na : _MA, color=teal, linewidth=2)

SHOW_SIGNALS = true

BUYX(_F) => cross(_F, MA_SRC) and rising(_MA, 1)
SELX(_F) => cross(_F, MA_SRC) and falling(_MA, 1)

SEL_SIGNAL = SELX(H_236) or SELX(H_382) or SELX(H_500) or SELX(H_618) or SELX(H_764) or SELX(L_236) or SELX(L_382) or SELX(L_500) or SELX(L_618) or SELX(H_764)

BUY_SIGNAL = BUYX(H_236) or BUYX(H_382) or BUYX(H_500) or BUYX(H_618) or BUYX(H_764) or BUYX(L_236) or BUYX(L_382) or BUYX(L_500) or BUYX(L_618) or BUYX(H_764)

//================= Chart 30m =================/////
//Jurij
h_left = 10
h_right = 10
//barCount = nz(barCount[1]) + 1
//check history and realtime PTZ
h_left_low = lowest(h_left)
h_left_high = highest(h_left)
newlow = low <= h_left_low
newhigh = high >= h_left_high
central_bar_low = low[h_right + 1]
central_bar_high = high[h_right + 1]
full_zone_low = lowest(h_left + h_right + 1)
full_zone_high = highest(h_left + h_right + 1)
central_bar_is_highest = central_bar_high >= full_zone_high
central_bar_is_lowest = central_bar_low <= full_zone_low
plotchar(central_bar_is_highest ? -1 : 0, offset=-h_right-1 ,color=red, text="Top")
plotchar(central_bar_is_lowest ? 1 : 0, offset=-h_right-1 ,location=location.belowbar, color=green, text="Bottom")

もっと