이것은 매일의 최고/하위점, 이동 평균 및 볼륨을 결합하는 간단한 내일 거래 전략입니다. 주요 아이디어는 이전 날의 최고/하위점, 이동 평균 방향 및 자금 흐름의 브레이크오웃을 입력 신호로 사용하는 것입니다.
이 전략은 주로 다음의 지표에 기초합니다.
일일 최고/하위점: 이전 거래일의 최고 및 최저 가격을 브레이크오웃 판단 기준으로 기록합니다.
이동 평균: 전체 추세에 대한 기준으로 특정 기간 동안 종료 가격의 이동 평균을 계산합니다.
양액 현금 흐름: 한 기간 동안의 양액의 정상화 된 긴/단한 값을 계산하여 자금 유입과 출입을 결정합니다.
구체적인 거래 규칙은 다음과 같습니다.
긴 조건: 하루 최고가 전날의 최고를 깨고, 닫는 것이 이동 평균보다 높고, 부피 금전 흐름이 긍정적 인 경우, 길게 가십시오.
긴 포지션을 닫습니다. 닫는 것이 이동 평균 이하로 떨어지면 긴 포지션을 닫습니다.
쇼트 조건: 하루 최저가 전날의 최저를 깨고, 종료가 이동 평균보다 낮고, 거래량 금전 흐름이 음수일 때, 쇼트한다.
짧은 포지션을 닫습니다. 닫는 것이 이동 평균보다 높을 때 짧은 포지션을 닫습니다.
이 전략은 브레이크업, 트렌드 및 자본 흐름을 포괄적으로 고려하여 잘못된 브레이크업 소음을 효과적으로 필터 할 수있는 완전한 판단 시스템을 형성합니다. 그러나 그것은 단지 내일 데이터에 기반한 결정을 내리기 때문에 단기 거래 전략입니다.
이 높은/낮은 브레이크아웃 전략은 다음과 같은 장점을 가지고 있습니다.
논리는 간단하고 직관적이며 이해하기 쉽고 실행하기 쉽습니다.
전날의 높은 점과 낮은 점들을 깨는 것은 더 강한 힘의 방향을 잡을 수 있습니다.
이동 평균으로 필터링하면 많은 시그널이 소음을 내지 않습니다.
자본 흐름 지표는 힘의 길고 짧은 분포를 결정하는데 도움이 됩니다.
내일 거래는 여러 거래를 통해 이익을 축적 할 수 있습니다.
복잡한 매개 변수 최적화가 필요하지 않으며, 비교적 쉽게 구현할 수 있습니다.
높은 유연성을 가진 다양한 제품에 적용됩니다.
전반적으로 전략 아이디어는 간단하고 명확하며 실행에 어려움이 거의 없으며 상당한 수익 잠재력이 있습니다.
이 전략은 많은 장점을 가지고 있지만, 몇 가지 위험도 있습니다.
높은/낮은 브레이크에 의존하면 잘못된 브레이크로 인한 손실이 발생할 수 있습니다.
일내 거래에 지나치게 의존하고, 하루종일 이벤트에 쉽게 영향을 받습니다.
이동 평균의 지연은 트렌드 전환점을 놓칠 수 있습니다.
부피 표시기는 때때로 잘못된 신호를 줄 수 있습니다.
단일 베팅의 손실 크기를 잘 제어 할 수 없으므로 너무 큰 손실의 위험이 있습니다.
주중 거래는 거래 비용의 영향을 받는다.
제한된 최적화 공간으로 인해 지속적인 알파를 달성하기가 어렵습니다.
전체적으로, 전략은 높은 신호 주파수를 가지고 있지만 안정성과 수익성이 입증되지 않았습니다.
이 전략은 다음 측면에서 더 이상 최적화 될 수 있습니다.
한 번의 베팅 위험을 통제하기 위해 스톱 로스를 추가합니다.
더 많은 감수성 또는 부드러움을 위해 이동 평균 매개 변수를 최적화하십시오.
자본 흐름 판단을 개선하기 위해 다른 부피 지표를 시도해보세요.
더 많은 필터를 추가해서 가짜 탈출 가능성을 줄여
과잉 거래를 피하기 위해 더 높은 시간 프레임에서 전략을 실행하십시오.
기계 학습을 도입하여 적응 신호를 생성합니다.
의사결정에 더 많은 데이터를 포함합니다. 예를 들어 뉴스, 매크로 등.
안정성과 위험을 포괄적으로 평가하고, 과잉 수익을 추구하지 마십시오.
요약하자면, 이것은 가격-용량 관계와 트렌드 판단에 초점을 맞춘 간단하고 직관적인 높은/저한 브레이크아웃 전략이다. 일부 장점이 있지만 추가 최적화와 검증을 요구하는 위험도 있다. 적절한 위험 관리가 있다면 실용적인 단기 전략 아이디어가 될 수 있다. 그러나 보다 효율적이고 견고한 전략은 더 많은 모델링 요인과 엄격한 백테스팅이 필요하다.
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © exlux99 //@version=5 strategy(title='Daily HIGH/LOW strategy', overlay=true, initial_capital=10000, calc_on_every_tick=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.1) ////////////////////////////GENERAL INPUTS////////////////////////////////////// len = input.int(24, minval=1, title='Length MA', group='Optimization paramters') src = input.source(close, title='Source MA', group='Optimization paramters') out = ta.ema(src, len) length = input.int(20, minval=1, title='CMF Length', group='Optimization paramters') ad = close == high and close == low or high == low ? 0 : (2 * close - low - high) / (high - low) * volume mf = math.sum(ad, length) / math.sum(volume, length) f_secureSecurity(_symbol, _res, _src) => request.security(_symbol, _res, _src[1], lookahead=barmerge.lookahead_on) pricehigh = f_secureSecurity(syminfo.tickerid, 'D', high) pricelow = f_secureSecurity(syminfo.tickerid, 'D', low) plot(pricehigh, title='Previous Daily High', style=plot.style_linebr, linewidth=2, color=color.new(color.white, 0)) plot(pricelow, title='Previous Daily Low', style=plot.style_linebr, linewidth=2, color=color.new(color.white, 0)) short = ta.crossunder(low, pricelow) and close < out and mf < 0 long = ta.crossover(high, pricehigh) and close > out and mf > 0 if short and barstate.isconfirmed strategy.entry('short', strategy.short, when=barstate.isconfirmed, stop=pricelow[1]) strategy.close('short', when=close > out) if long and barstate.isconfirmed strategy.entry('long', strategy.long, when=barstate.isconfirmed, stop=pricehigh[1]) strategy.close('long', when=close < out)