
이 전략은 시장 개시 후 15 분 전에 형성 된 가격 범위를 기초로 삼아 그 범위를 뚫고 거래 기회를 찾습니다. 이 전략은 5 분 시간 프레임에서 작동하며, 제한 주문을 사용하여 범위를 뚫는 위치에 입문하고, 고정된 중지 및 중지 지점을 설정합니다.이 방법은 개시 시간에 일반적으로 발생하는 변동성을 최대한 활용하며, 제한 주문 메커니즘을 통해 가격 회수 때 더 유리한 입문 지점을 얻습니다.
이 전략의 핵심 논리는 시장 개시 초기에 형성된 가격 범위에 기반한다. 구체적으로, 시장 개시 후 15분 전의 가격 고점과 낮은 점을 먼저 식별한다. 이것은 5분 시간 프레임에 첫 번째 3개의 줄의 최고점과 최저점을 계산함으로써 실현된다. 이 범주는 일단 확립되면, 전략은 가격이 이 범위를 돌파하는지 여부를 감시한다.
종식 가격의 상한을 돌파할 때, 전략은 브레이크 위치에서 상한 주문을 합니다. 종식 가격의 하한을 돌파할 때, 전략은 브레이크 위치에서 하한 주문을 합니다. 제한 주문의 특징은 가격이 지정된 수준으로 떨어지거나 (또는) 상승했을 때만 촉발된다는 것입니다. 이것은 실제로 가격의 철회 확인을 기다리고 있습니다.
전략은 고정된 스톱포인트위치 ((100점) 와 스톱로스트위치 ((50점) 를 사용한다. 이것은 위험과 수익의 비율이 1:2라는 것을 의미하며, 이는 비교적 보수적인 위험 관리 설정이다. 코드는 전략 탈퇴 함수를 사용하여 이러한 스톱로스트 레벨을 자동으로 관리한다.
오픈 디스크의 변동성을 이용하는 것시장 개시 후 첫 15 분은 일반적으로 높은 변동성과 거래량으로 이어져 있으며, 이는 돌파 거래에 좋은 조건을 제공합니다. 이 전략은 이 시기를 위해 특별히 설계되어 시장의 초기 동력을 효과적으로 포착합니다.
제한 주문 메커니즘: 시장 가격 주문에 비해 제한 가격 주문을 사용하면 더 유리한 입문 가격을 얻을 수 있습니다. 가격이 돌파 후에 회수 될 때 (이것은 일반적인 현상) 전략은 더 이상적인 가격에 입문 할 수 있으므로 미끄러짐을 줄이고 거래 실행 품질을 향상시킬 수 있습니다.
명확한 위험 관리이 전략은 고정된 스톱과 스톱로스 지점을 설정하고, 리스크와 수익률의 비율은 1:2이다. 이러한 명확한 위험 관리 방법은 장기적인 일관성 성과를 도모하고, 단일 거래의 큰 손실을 방지한다.
단순하고 반복가능합니다.전략 논리는 간단하고 복잡한 지표나 계산이 없으므로 이해하기 쉽고 실행이 가능합니다. 이 단순성은 과도한 적합성의 위험을 줄이고 다양한 시장 조건에서 전략의 적응력을 향상시킵니다.
자동화 실행: 전체 전략은 완전히 자동화 될 수 있으며, 인간의 감정적 간섭과 실행 지연을 줄일 수 있습니다. 일단 매개 변수가 설정되면 시스템이 자동으로 간격을 인식하고 주문을 설정하고 스톱 스톱 손실을 관리 할 수 있습니다.
가짜 침입 위험: 시장 개시 시기의 변동은 가짜 브레이크를 유발할 수 있습니다. 즉, 가격이 잠시 브레이크 한 후 다시 범위에 들어갑니다. 제한 주문 장치가이 위험을 어느 정도 줄이는 동안, 불필요한 거래를 초래할 수 있습니다. 가능한 해결책 중 하나는 확인 장치를 추가하는 것입니다. 예를 들어, 가격의 브레이크 이후 한동안 유지하도록 요구하거나 다른 기술 지표를 사용하여 확인하십시오.
고정 정지 손실의 한계고정 점수를 사용하는 스톱 스톱은 모든 시장 조건에 적합하지 않을 수 있습니다. 높은 변동성 환경에서 스톱 스톱은 너무 작을 수 있습니다. 낮은 변동성 환경에서 스톱 스톱은 너무 커질 수 있습니다.
단일 시간대 의존: 이 전략은 상장 후의 첫 15분에만 초점을 맞추고, 가치있는 신호를 제공할 수 있는 다른 시기를 무시한다. 이러한 좁은 관심은 다른 거래 기회를 놓치게 할 수 있다. 다른 중요한 시기를 고려하는 확장 전략 (예: 상장 전) 은 거래 기회를 증가시키는 데 도움이 될 수 있다.
시장 환경의 필터링 부족: 전략은 전체 시장 환경을 고려하지 않습니다. 예를 들어, 트렌드 방향이나 변동성이 있습니다. 특정 시장 조건에서 브레이크 트레이드는 그다지 효과적이지 않을 수 있습니다.
재무 관리에 대한 고려가 부족함: 코드의 포지션 크기를 계산하는 방법은 간단하며, 리스크 틈이 일치하지 않을 수 있다. 계좌 규모에 기반한 비율 리스크 모델과 같은 더 복잡한 재무 관리 시스템을 구현하면, 일관된 리스크 수준을 유지하는 데 도움이 될 것이다.
동적 중지 중지 손실: 고정된 점수의 스톱 스로드를 시장의 변동성에 기반한 동적 변수로 바꾸는 것. 예를 들어, ATR을 계수로 곱하여 스톱 및 스톱 스로드 수준을 설정할 수 있으므로 변동성이 증가하면 스톱 스로드 지점이 그에 따라 확장되며, 그 반대의 경우도 마찬가지입니다. 이 방법은 다른 시장 조건에 더 잘 적응 할 수 있습니다.
확인 표시를 추가합니다.: 거래량 증가, 동력 지표 또는 이동 평균 방향과 같은 돌파구의 유효성을 확인하기 위해 추가 기술 지표를 도입하십시오. 이것은 가짜 돌파구의 위험을 줄이고 거래 신호의 품질을 향상시킬 수 있습니다.
입학 시점을 최적화: 현재 전략은 가격 종결의 돌파구 이후 즉시 제한 주문을 설정한다. 추가 확인을 기다리는 것을 고려할 수 있다. 예를 들어, 돌파구 수준을 다시 테스트하거나 특정 가격 패턴을 입력 시기의 정확성을 높이기 위해.
시장 환경 필터를 추가합니다.: 전체 시장 환경을 평가하는 메커니즘을 도입합니다. 예를 들어, 트렌드 강도, 변동성 수준 또는 특정 시장 단계. 불리한 조건에서는 거래하지 않거나 현재 시장 특성에 맞게 매개 변수를 조정할 수 있습니다.
자금 관리 개선더 복잡한 자금 관리 전략, 예를 들어 계정 규모에 따른 비율 위험 모델 또는 변동성에 따른 위치 크기 조정 등의 적용. 이것은 계정 규모에 관계없이 위험 을 일관되게 보장합니다.
다른 시간대에 확장: 다른 중요한 시간대에 비슷한 영역을 뚫는 논리를 적용하는 것을 탐구하십시오. 예를 들어, 중간 시장 개시, 중요한 경제 데이터가 발표되기 전과 후 또는 시장이 닫히기 전에. 이것은 추가 거래 기회를 제공 할 수 있습니다. 분산 전략의 위험.
개장 간격 브레이크 리미트 트레이딩 전략은 시장 개장 초기에 초점을 맞춘 정량 거래 방법이며, 15 분 전의 가격 범위를 식별하고 거래 브레이크를 통해 시장 동력을 포착합니다. 제한 주문과 고정된 위험 수익 설정을 사용하여 거래자에게 규율이 엄격하고 쉽게 실행 할 수있는 방법을 제공합니다.
이 전략의 주요 장점은 그것의 단순성, 자동화 정도와 오픈 변동성을 효과적으로 이용하는 것이다. 그러나, 그것은 또한 가짜 돌파의 위험, 고정 파라미터의 한계, 단일 기간에 대한 의존 등과 같은 도전에 직면한다.
동적 스톱 스톱 손실을 구현하고, 확인 지표를 추가하고, 진입 시기를 최적화하고, 시장 환경 필터를 도입하고, 자금 관리를 개선함으로써 이 전략은 크게 강화될 수 있습니다. 이러한 최적화는 전략의 안정성을 높이고, 다양한 시장 조건에 더 잘 적응할 수 있도록 도와줍니다.
양적 거래자에게는 이 전략이 좋은 출발점을 제공하며, 개인의 위험 선호와 시장 특성에 따라 추가적으로 사용자 정의 및 개선할 수 있습니다. 지속적인 재검토와 최적화를 통해, 이 오픈 간격 돌파 전략은 거래 포트폴리오에서 효과적인 도구가 될 수 있습니다.
/*backtest
start: 2025-01-01 00:00:00
end: 2025-01-21 00:00:00
period: 5m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © gghezzar5
//@version=6
//initialize your code as a strategy or indicator, if you want to take entries you need to use a strategy
//NOTE: if your trades dont show up on the chart sometimes its cuz your initial capital is too low
//hovering over a label shows a description of what it does and the required inputs but lmk if youre still confused on anything
strategy("tiktok strat", overlay=true, initial_capital=1000000)
//get times
currenthour=hour(time, "America/New_York")
currentminute=minute(time, "America/New_York")
//quantity increases in proportion to my profit to simulate reinvesting (not using it)
qty=int(((strategy.netprofit+100000)/close)/2)
//var command initializes the variables, float identifier is like int but it can hold decimals as well
var float m15high=0
var float m15low=0
var float limit=0
//boolean true/false variables (entry conditions)
long=false
short=false
//since we're on the 5 minute timeframe, to identify the range of the 15 minute 9:30-9:45 candle we have to get the highest and lowest value of the past three 5 minute candles
//btw
if currenthour==9 and currentminute==45
//4th bar starts at 9:45, finalizing the 15 minute candle
//high[1]=the previous high of the 9:40-9:45 bar, high[2]=the high before that, etc
m15high:=math.max(high[3], high[2], high[1])
m15low:=math.min(low[3],low[2],low[1])
//NOTE: the := operator is super important and easy to use: it allows you to change the value of a global variable while in local scope
//For example if I were to use = instead of :=, m15high would return 0 at 9:50 since the local scope of the if statement only covers 9:45 (try it yourself in strategy tester)
//And if we were to set currentminute>=45 to extend the scope, the relative highs would also shift with the following bars
//ALWAYS use the := operator whenevere youre changing the value of a variable because if = works then := will work but if := works = doesnt always work.
//returns true once a bar closes above the high or below the low of the 15 minute candle. if so, entry condition is set to true and the limit is set at the high or low, which i'll explain next
if close>m15high
limit:=m15high
long:=true
if close<m15low
limit:=m15low
short:=true
tp=100
sl=50
//these are only for the plots
entry_price=strategy.opentrades.entry_price(0)
takeprofit=entry_price+tp
stoploss=entry_price-sl
takeprofits=entry_price-tp
stoplosss=entry_price+sl
//entries: once the long condition becomes true, we enter. But since we placed a limit order we dont enter immediately. When we break out of the range
//a limit is placed where we broke out and only triggers if the price then comes back down (or up) and hits that level again. (in this case it usually happens right away anyway)
if long
strategy.entry('long', strategy.long, 1, limit=limit)
strategy.exit('exitlong', 'long', stop=stoploss, limit=takeprofit)
if short
strategy.entry('short', strategy.short, 1, limit=limit)
strategy.exit('exitshort', 'short', stop=stoplosss, limit=takeprofits)