통합 전략 이후의 전환

저자:차오장, 날짜: 2023-11-03 17:26:53
태그:

img

전반적인 설명

이 전략의 주요 아이디어는 주식 가격 변동에서 명백한 단기 konsolidiation을 감지하고, konsolidiation 단계에서 형성된 konsolidiation 패턴에 따라 다음 방향의 유력한 방향을 판단하여 대응하는 긴 또는 짧은 포지션을 취하는 것입니다.

전략 논리

  1. 이 전략은 주식 가격이 통합에 진입했는지 여부를 결정하기 위해 스토카스틱 오시레이터 지표를 사용합니다. 과잉 구매 또는 과잉 판매 구역에서 스토카스틱 오시레이터 오시레이션은 가격 통합을 나타냅니다.

  2. 스토카스틱 오시일레이터가 오시일할 때, 촛불 방향 변화는 트렌드 반전 지점을 감지하는 데 사용됩니다. 촛불의 검은색에서 흰색으로 변화하는 신호는 통합 종료 및 길게 이동합니다. 흰색에서 검은색으로 변화하는 신호는 통합 종료 및 짧게 이동합니다.

  3. 진입 후의 수익 목표 및 스톱 손실은 트레일링 스톱을 사용하여 진입 가격에 따라 동적으로 설정됩니다. 전체 포지션에 고정 수익/손실, 부분 포지션에 사용되는 트레일링 스톱을 사용합니다.

  4. 이 전략은 전체 및 부분 포지션 거래를 지원합니다. 전체 포지션에 고정 포인트가 사용되고 부분 포지션에 트레일링 스톱이 사용됩니다.

  5. 거래 시간은 또한 전략에 구성됩니다. 거래는 정해진 시간 동안만 허용됩니다.

이점 분석

  1. 스토카스틱 오시레이터는 단기 가격 통합을 정확하게 식별합니다.

  2. 통합 후 전환점에 거래하면 정확도가 높아집니다.

  3. 가격 상승에 따라 수익을 올릴 수 있습니다.

  4. 리스크 우선 순위에 기반한 전체 및 부분 포지션 거래를 지원합니다.

  5. 거래 시간 불안정 기간 동안 잘못된 거래를 피하십시오.

위험 분석

  1. 잘못된 신호, 빠진 엔트리 또는 조기 엔트리를 제공하는 스토카스틱 오시레이터

  2. 촛불 반전은 트렌드 변화를 감지하는 데 정확하지 않을 수 있습니다.

  3. 가격 상승에 따라 추후가 멈출 수 있습니다.

  4. 부분 포지션 거래의 위험이 높고, 반전으로 손실이 커질 수 있습니다.

  5. 스톱 손실 및 트레일링 스톱 매개 변수는 다른 기기에 맞춰져야 합니다.

  6. 주요 사건은 전략 성과에 영향을 줄 수 있습니다.

더 나은 기회

  1. 더 나은 통합 검출을 위해 스토카스틱 오시레이터 매개 변수를 최적화하십시오.

  2. 촛불 신호를 확인하는 필터를 추가하여 정확도를 향상시킵니다.

  3. 더 나은 추적을 위해 추적 중지 알고리즘을 향상시킵니다.

  4. 단일 주식에서 손실을 제한하기 위해 포지션 사이즈 규칙을 추가합니다.

  5. 주요 이벤트로 인한 변동성을 방지하기 위해 이벤트 일정을 포함합니다.

  6. 추세를 더 잘 파악하기 위해 부분 위치 모델을 개선합니다.

결론

통합 이후의 전환 전략은 스토카스틱 오시일레이터를 사용하여 단기 통합을 식별하고 통합 단계 후 트렌드 반전 지점에서 거래를합니다. 괜찮은 승률을 가지고 있으며 트렌드에 세그먼트 수익을 잠금 할 수 있습니다. 그러나 스토카스틱은 잘못된 신호에 유연합니다. 매개 변수 최적화, 필터 추가 등으로 정확도를 향상시킬 수 있습니다. 또한 후속 스톱을 최적화하고 위치 크기를 제어하고 이벤트 위험을 피하는 것은 집중이 필요한 분야입니다. 전반적으로이 전략은 참조 모델을 제공하지만 개별 거래 스타일에 따라 라이브 거래를 위해 조정 및 위험 통제가 필요합니다.


/*backtest
start: 2022-10-27 00:00:00
end: 2023-11-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('Cross', overlay=true, initial_capital=1000 )

// Creditos : Cleber.martinelli
////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//                    CALENDARIO                      //
//                                                    //
//                                                    //
////////////////////////////////////////////////////////

//052)
// trading view solicita que se ja informado data para gerar backtest a partir de tal data
//começa backtest do trading sistem em qual data ?

ano = input.int(2022, minval=1, title="Ano")
mes = input.int(1, minval=1, maxval=12, title="Mes")
dia = input.int(1, minval=1, maxval=31, title="Dia")
hora = input.int(1, minval=1, maxval=23, title="hora")
minuto = input.int(0, minval=0, maxval=59, title="minuto")
horaabertura = input.int(10, minval=1, maxval=23, title="hora Inicio Operacao Robo")
minutoabertura = input.int(40, minval=1, maxval=59, title="Minuto Encerra Tudo")
horaencerra = input.int(17, minval=1, maxval=23, title="hora Fechamento")
minutoencerra = input.int(50, minval=1, maxval=59, title="Minuto Encerra Novas Operacoes")
minutofinaliza = input.int(50, minval=1, maxval=59, title="Minuto Encerra Tudo")

//valida se o dia de hoje é posterior ao dia informado acima
Validadia = year >= ano and month >= mes and dayofmonth >= dia

//cria horario de abertura de negociaçao, considerar default 10 hs, pois os indicadores ja estarão corrigidos
abreloja = year >= ano and month >= mes and dayofmonth >= dia and hour >= horaabertura
//and minute >= minutoabertura)

//cria horario de fechamento de todas as negociaçoes, considerar default 17:00 hs
//nenhuma ordem pode ser aberta depois dessa data e as abertas devem ser fechadas
fechaloja = year >= ano and month >= mes and dayofmonth >= dia and hour >= horaencerra
//and minute >= minutoencerra)

fechaloja2 = year >= ano and month >= mes and dayofmonth >= dia and hour >= horaencerra
//and minute >= minutofinaliza)

//valida horario de negociação, pra liberar as operacoes.
lojaaberta = abreloja == true and fechaloja == false and fechaloja2 == false

////////////////////////////////////////////////////////
//                                                    //
//                                                    //
//                 Codigo Operacional                 //
//                                                    //
//                                                    //
////////////////////////////////////////////////////////

// Inputs da Estratégia
pmax = input.int(90, minval=0, maxval=100, title="Estocastico Alvo - Para Short")
pmin = input.int(10, minval=0, maxval=100, title="Estocastico Alvo - Para Buy ")

parcial = input(title="Parcial ? ", defval=true)
p_gain = input.int(150, minval=0, maxval=1000, title="Pontos para Gain ")
p_loss = input.int(150, minval=0, maxval=1000, title="Pontos para Loss")
p_parcial = input.int(50, minval=0, maxval=100, title="Pontos para Parcial ")

// puxando os indicadores que usaremos 
estoc = ta.stoch(close,high,low,5)

if (estoc >=pmax and close < open)
    strategy.entry("Vende", strategy.short ,qty = 2)


if (estoc <=pmax and close > open)
    strategy.entry("Compra", strategy.long ,qty  =  2 )


pm_ativo = strategy.opentrades.entry_price(0)

if strategy.position_size > 0 and parcial// Posicionado na compra 
    if strategy.position_size == 2 // Mão cheia
        if close < pm_ativo - 100
            strategy.exit("Fecha Compra", "Compra", loss=p_loss , qty  =  2 )
        if close > pm_ativo + 50
            strategy.exit("Fecha Compra", "Compra", profit=p_gain , qty  =  1 )
    if strategy.position_size == 1// Mão cheia
        if close < pm_ativo 
            strategy.exit("Fecha Compra", "Compra", loss=0 , qty  =  1 )
        if close > pm_ativo + 100
            strategy.exit("Fecha Compra", "Compra", profit= p_gain * 1.5 , qty  =  1 )    
    
if strategy.position_size < 0 and parcial // Posicionado na Venda 
    if strategy.position_size == -2 // Mão cheia
        if close > pm_ativo - 100
            strategy.exit("Fecha Venda", "Vende", loss=p_loss , qty  =  2 )
        if close < pm_ativo + 50
            strategy.exit("Fecha Venda", "Vende", profit=p_gain , qty  =  1 )
    if strategy.position_size == -1// Mão cheia
        if close > pm_ativo 
            strategy.exit("Fecha Venda", "Vende", loss=0 , qty  =  1 )
        if close < pm_ativo + 100
            strategy.exit("Fecha Venda", "Vende", profit=p_gain*1.5 , qty  =  1 )    
    
if strategy.position_size > 0 and parcial == false // Sem Parcial 
    strategy.exit("Fecha Compra", "Compra", loss=p_loss , profit = p_gain , qty  =  2 )
if strategy.position_size < 0 and parcial == false // Sem Parcial 
    strategy.exit("Fecha Venda", "Vende", loss=p_loss , profit = p_gain , qty  =  2 )





















더 많은