이것은 평형 스토카스틱 오시레이터 지표의 K 및 D 라인을 기반으로 한 모멘텀 브레이크아웃 거래 전략입니다. 그것은 구매 신호로 oversold 영역으로 K 라인의 크로스오버와 Stop Loss로 트레일 스톱을 사용합니다.
이 전략은 다음과 같은 부분으로 구성됩니다.
표시기 설정
14주기 RSI를 사용하여 K 및 D 라인에 3주기 SMA를 적용하여 Smoothed Stochastic Oscillator 지표의 K 및 D 라인을 생성합니다.
신호 생성
K 라인이 20 레벨을 넘을 때, 긴 진입을 위한 구매 신호가 생성됩니다.
손실 중지
트레일링 스톱 로스는 고정된 트레일링 스톱 거리와 함께 사용됩니다. 또한 지난 20 기간 중 가장 낮은 낮은 스톱 로스는 가격으로 사용됩니다.
위치 크기
스톱 로즈 가격과 현재 클로즈 사이의 포인트 수는 지난 20 기간 최저 최저를 사용하여 계산됩니다. 그 다음 포지션 크기는 거래 당 위험 달러 금액과 포인트 당 가치에 따라 계산됩니다.
이 방법으로, 전략은 초판 반전에서 진입 신호로 추진력 파장을 식별하고, 정확한 위치 사이징과 트레이닝 스톱 로스를 거래 추진력 반전으로 채택하고, 효과적인 위험 통제를 제공합니다.
이 전략은 다음과 같은 장점을 가지고 있습니다.
압축된 구역을 뚫고 진입 신호가 명확해
유연한 후속 정지 움직임 시장 변동과 함께.
정확한 포지션 크기는 단일 거래 위험을 제어합니다.
역사적인 최저값을 기준으로 정밀한 스톱 로스
간단하고 명확한 위치 크기 논리
단순하고 명확한 전략 논리, 이해하기 쉬운.
깔끔한 코드 구조, 읽기 쉽고 수정하기 쉽습니다.
이 전략에는 몇 가지 위험이 있습니다.
기본 가격 변동. 불안정한 시장에서 빈번한 스톱 로스 트리거.
거래보다 잠재력이 높습니다.
한 방향의 지분, 역 가격 이동에서 이익을 얻을 수 없습니다.
불효율적인 시장 조건 필터링. 시장 범위 동안 빈번한 스톱 손실 트리거.
아래의 최적화는 위험을 관리하는 데 도움이 될 수 있습니다.
매매를 피하기 위해 매개 변수를 최적화해야 합니다.
한 방향의 위험을 줄이기 위해 단계적 항목을 사용하십시오.
불리한 시장 조건에서 거래를 피하기 위해 더 큰 시간 프레임 트렌드의 분석을 추가하십시오.
과도한 감수성을 방지하기 위해 스톱 로스 전략을 최적화하십시오.
전략의 다음 측면은 최적화 될 수 있습니다:
동적 트레일링 스톱, 단계적 스톱 손실, 이동 평균 등을 사용하여 더 부드럽게 스톱 손실을 최적화하십시오.
측면 시장에서 거래를 피하기 위해 더 큰 시간 프레임 트렌드의 분석을 추가하십시오. 이동 평균, 채널 브레이크와 같은 트렌드 분석을 통합 할 수 있습니다.
회수로부터 이익을 얻기 위해 두 가지 지향적 지분을 고려해보세요.
자동 매개 변수 최적화를 위해 기계 학습을 사용하여 변화하는 시장 조건에 최적의 매개 변수를 찾습니다.
자본 활용을 개선하기 위해 고정 비율, 고정 자본 등을 사용하여 포지션 사이즈를 최적화하십시오.
거래 신호의 품질을 향상시키기 위해 볼링거 밴드, 볼륨과 같은 지표와 더 많은 필터를 추가합니다.
전체적으로 이것은 간단하고 명확한 모멘텀 브레이크아웃 전략이다. 단일 거래 위험을 효과적으로 제어하기 위해 신중한 스톱 로스 접근 방식을 채택한다. 그러나 전략이 특정 시장 조건에 더 잘 적응하고 비효율적인 신호를 필터하고 수익과 위험 사이의 더 나은 균형을 달성하기 위해 여전히 최적화가 필요합니다. 더 큰 시간 프레임 트렌드의 분석을 향상시키고 포지션 사이징은이 전략의 중요한 최적화 방향입니다. 요약하자면, 기본적인 모멘텀 브레이크아웃 전략으로서, 특정 거래 도구의 시장 조건에 적응하기 위해 여전히 실용적이며 추가 연구가 필요합니다.
//@version=2 //descripcion: //entrada en saturacion oscilador estocastico //salida por trailing strategy("MomentumBreak#1", overlay=true,calc_on_every_tick=true, default_qty_type=strategy.fixed,currency="USD") //entradas y variables de indicadores smoothK = input(3, minval=1) smoothD = input(3, minval=1) lengthRSI = input(14, minval=1) lengthStoch = input(14, minval=1) src = input(close, title="RSI Source") rsi1 = rsi(src, lengthRSI) k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) d = sma(k, smoothD) overbought=input(80) oversold=input(20) //entradas de stop , trail, profit stop=input(1500) stop_dentro_de_los_ultimos_lows=input(20) trail_points=input(500) trail_offset=input(100) profit=input(1000) riesgo_en_dolares=input(15) //condicion de compra: k>80 buycondition=crossover(k,oversold) //entrada a la posicion posicionabierta=0 if year>2015 if buycondition stoplow=lowest(stop_dentro_de_los_ultimos_lows) riesgo_en_pips = (close - stoplow) valor_del_pip = (riesgo_en_dolares / riesgo_en_pips) tamanio_de_la_posicion= ( valor_del_pip) //la posicion la esta calculando bien strategy.entry("buy",strategy.long) strategy.exit("salida","buy",trail_points=trail_points,trail_offset=trail_offset,stop=stoplow,comment=tostring(stoplow)) //////////////////////////////////condicion de stop por drodown 10% equity //strategy.risk.max_drawdown(15,strategy.cash) // condicion de stop por perdida mayor a $15 en op abierta //strategy.risk.max_intraday_loss(15,strategy.cash) //formas de tomar stop: // cuando llega a una media movil: strategy.close o strategyentry o strategy.exit o strategy.order // determinado por un numero de pips strategy.exit // determinado por el calculo de la posicion: //tomar el minimo minimo de los ultimos 20 periodos, guardarlo como nivel de stop //calcular la posicion en base a ese stop: //prcio de entrada - precio de stop = pips_en-reisgo //riesgo_e_dolares / pips_en_riesgo = pip_value //position_size=10000 * pip_value