
この戦略は,K線の高低点形成された箱体の突破を監視することによって,市場の方向と強さを判断する.上向きの箱体の突破が発生した場合,戦略は,突破点の近くでポジティブなエントリーポイントを設定する.下向きの箱体の突破が発生した場合,戦略は,突破点の近くで逆のエントリーポイントを設定する.取引シグナルが形成されたら,戦略は,単一のポジションを設定し,リスクを管理するために止損ポイントと停止ポイントを設定する.
戦略は,取引の期間を定義し,その期間内でのみ取引の機会を探します.
策略は,K線が形成された後,前2つのK線の最高値と最低値の有意な突破があったかどうかを判断します.
2.1 第二のK線の最低値が第一のK線の最高値より高い場合は,上方箱体突破が発生する.
2.2 第二のK線の最高値が最初のK線の最低値より低ければ,下方箱体突破が発生する.
箱体突破信号が確認された後,戦略は,その根K線の最高価格または最低価格の近くに正向または反向のエントリーポイントを設定する.
一旦ポジションが形成されると,戦略は突破幅の2倍に合わせてストップセットを設定し,この方法によってトレンドの加速を捕捉する.
戦略はまた,第2のK線の最低価格または最高価格の位置にストップ・ロスを設定し,損失のリスクを軽減します.
この戦略の利点は以下の通りです.
原則はシンプルで実行しやすい.
K線箱体突破を用いて市場の方向と強さを判断し,正確度が高い.
ストップレベルを設定することで,トレンドの加速の機会を捉えることができます. ストップの倍数は調整できます.
単一損失を制御する明確なストップ・ロジックがあります.
戦略の考え方は柔軟で,個人のスタイルに合わせてカスタマイズできます.
しかし,この戦略にはいくつかのリスクがあります.
突破信号は偽突破であり,損失の発生を完全に避けることはできません.
市場が激化すると,入場点に近いストップ・ロズ・ポジションは容易に触発される可能性がある.
動揺した市場では,停止損失が頻繁に引き起こされる可能性がある.
取引品種や時間帯による差異による影響は考慮されていません.
この戦略をさらに最適化するには,以下のステップを踏む必要があります.
異なる品種と時間帯に応じて適応性ストップダメージストップパラメータを設定します.
動向判断の技術指標を追加し,動向判断の技術指標を追加し,動向判断の技術指標を追加し,動向判断の技術指標を追加し,動向判断の技術指標を追加し,動向判断の技術指標を追加し,動向判断の技術指標を追加し,動向判断の技術指標を追加した.
トレンドの動きを追跡するために,後続の加仓の機会を設定します.
結合量とは,突破の真偽を判断する指標で,突破の真偽を判断する指標で,突破の真偽を判断する指標である.
機械学習のアルゴリズムを導入し,トレンドの方向性を判断する.
この戦略は,シンプルな突破原理の設計に基づいて,突破後の加速動作を捕捉して余分な利益を得ます. ストップとストップストップの設定を利用してリスクを制御します. 戦略は,容易に理解し,実施でき,個人のニーズと市場環境に応じて調整して最適化でき,強力な実用性を持っています.
/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Dvitash
//@version=5
strategy("Casper SMC Silver Bullet", shorttitle = "Casper SB", overlay=true, calc_on_order_fills = true)
startTime = input(defval = "1000", title = "Start Time")
endTime = input(defval = "1600", title = "End Time")
contractAmt = input.int(defval = 2, title = "Contract Amount")
fvgCol = input.color(defval = color.rgb(63, 61, 179, 41), title = "FVG Color")
borderCol = input.color(defval = color.rgb(35, 33, 172, 41), title = "FVG Border Color")
fvgExtendLength = input.int(defval = 0, minval = 0, title = "FVG Extend Length")
allowedTime = not na(time(timeframe.period, startTime + "-" + endTime +":23456", "America/New_York"))
newDay = bool(ta.change(time('D')))
h = hour(time('1'), "America/New_York")
var bool fvgDrawn = na
var float entryPrice = na
var float stopPrice = na
var float tpPrice = na
if newDay
fvgDrawn := false
// a_allBoxes = box.all
// if array.size(a_allBoxes) > 0
// for i = 0 to array.size(a_allBoxes) - 1
// box.delete(array.get(a_allBoxes, i))
if allowedTime and barstate.isconfirmed and h <= 16
//Long FVG
if high[2] < low and not fvgDrawn
// box.new(bar_index[2], low, bar_index + fvgExtendLength, high[2], bgcolor = fvgCol, border_color = borderCol)
stopPrice := low[2]
entryPrice := low
tpPrice := entryPrice + (math.abs(low[2] - entryPrice) * 2)
// log.info("SL: " + str.tostring(stopPrice) + " Entry: " + str.tostring(entryPrice) + " TP: " + str.tostring(tpPrice))
strategy.entry("long", strategy.long, contractAmt, limit = entryPrice, comment = "Long Entry")
fvgDrawn := true
if low[2] > high and not fvgDrawn
// box.new(bar_index[2], high, bar_index + fvgExtendLength, low[2], bgcolor = fvgCol, border_color = borderCol)
stopPrice := high[2]
entryPrice := high
tpPrice := entryPrice - (math.abs(high[2] - entryPrice) * 2)
// log.info("SL: " + str.tostring(stopPrice) + " Entry: " + str.tostring(entryPrice) + " TP: " + str.tostring(tpPrice))
strategy.entry("short", strategy.short, contractAmt, limit = entryPrice, comment = "Short Entry")
fvgDrawn := true
if h >= 16
strategy.close_all()
strategy.cancel_all()
strategy.exit("long exit", from_entry = "long", qty = contractAmt, limit = tpPrice, stop = stopPrice, comment = "Long Exit")
strategy.exit("short exit", from_entry = "short", qty = contractAmt, limit = tpPrice, stop = stopPrice, comment = "Short Exit")