
이 전략은 주로 K 선의 높고 낮은 지점을 형성하는 상자의 돌파구를 모니터링하여 시장의 방향과 강도를 판단합니다. 상향 상자 돌파구가 발생하면 전략은 돌파구 근처에 긍정적인 입시 지점을 설정합니다. 하향 상자 돌파구가 발생하면 전략은 돌파구 근처에 역향적인 입시 지점을 설정합니다. 거래 신호가 형성되면 전략은 단일 포지션을 만들고 위험을 제어하기 위해 스톱 스톱을 설정합니다.
전략은 거래 기간을 정의하고, 그 기간에만 거래 기회를 찾습니다.
이 전략은 K 라인이 형성된 후 첫 두 K 라인의 최고 가격과 최저 가격에서 눈에 띄는 돌파구가 발생했는지 판단합니다.
2.1 두 번째 K 선의 최저가격이 첫 번째 K 선의 최저가격보다 높으면 상향 상체 돌파가 발생한다.
2.2 두 번째 K 선의 최고값이 첫 번째 K 선의 최저값보다 낮다면, 상하의 박스 뚫림이 발생한다.
상자체 돌파 신호를 확인한 후, 전략은 K선에서 가장 높은 가격 또는 가장 낮은 가격 근처에 직진 또는 역진의 입점점을 설정한다.
일단 포지션이 형성되면, 전략은 돌파구의 두 배의 크기에 따라 정지 설정을 하고, 이 방법을 통해 트렌드의 가속화를 포착한다.
전략은 또한 두 번째 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")