일시 정지 및 회전 전략


생성 날짜: 2023-11-03 17:26:53 마지막으로 수정됨: 2023-11-03 17:26:53
복사: 0 클릭수: 633
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

일시 정지 및 회전 전략

개요

이 전략의 주요 아이디어는 주식 가격의 명백한 단기 중단이 발생한 후, ?? 정지 ?? 단계에 형성된 재조합상태에 따라 가격이 가능한 다음 행진을 판단하여 그에 따른 다중 코스피를 취하는 것이다.

전략 원칙

  1. 전략은 스토카스틱 오실레이터 지표를 사용하여 주가가 조정에 들어갔는지 여부를 판단합니다. 스토카스틱 오실레이터는 과매매 또는 과매매 영역의 흔들림이 있을 때 주가가 조정에 들어간다는 것을 나타냅니다.

  2. 스토카스틱 오실레이터 지표가 흔들릴 때, K선 실체 방향에 따라 트렌드 전환점을 판단한다. K선에서 음으로 태양을 돌릴 때 평정 종료로 판단하면, 더 많이 한다. K선에서 음으로 태양을 돌릴 때 평정 종료로 판단하면, 공백한다.

  3. 더 많은 공백을 한 후의 중지 중지 손실은 입구 지점에 따라 설정되며, 이동 중지 중지 손실을 사용합니다.

  4. 이 전략은 풀 포지션과 분포 포지션을 동시에 지원한다. 풀 포지션이 있을 때 고정된 스톱 스톱 손실을 설정한다. 분포 포지션이 있을 때 모바일 스톱 스톱 손실을 설정한다.

  5. 이 전략은 또한 매일 거래 시간을 설정하여 설정된 시간 동안만 거래합니다.

우위 분석

  1. 스토카스틱 오실레이터 지표를 사용하여 주가 변동 상태를 판단하여 주가의 단기 종합을 정확하게 판단 할 수 있습니다.

  2. 진동 후 K선 전환점에서 조작을 수행하면 조작 정확도를 높일 수 있다.

  3. 모바일 스톱 스톱 스로드는 주가 흐름에 따라 스톱 스로드 트레일링을 수행하여 더 많은 이익을 얻을 수 있습니다.

  4. 전체 포지션과 분할 포지션 운영을 지원합니다. 자신의 위험 선호도에 따라 적절한 운영 방식을 선택할 수 있습니다.

  5. 거래시간을 설정하여 주가가 비정상적으로 변동하는 시간에 잘못된 작업을 방지합니다.

위험 분석

  1. 스토카스틱 오실레이터 지표는 가짜 신호를 발산할 가능성이 높으며, 구매/판매 지점을 놓칠 수도 있다.

  2. K선 전환점 판단은 정확하지 않으며, 전환점이 아닌 곳에서 동작할 수 있다.

  3. 이동식 스톱포스트는 주가 변동에 따라 스톱포스트를 돌파할 수 있다.

  4. 분仓操作风险较大, 주가 반향은 Loss 확대로 이어질 수 있다.

  5. 다른 주식의 특성에 맞게 스톱패스와 이동폭을 조정할 필요가 있다.

  6. 주요 사건으로 인한 주가 변동이 전략에 영향을 미치지 않도록 해야 한다.

최적화 방향

  1. 스토카스틱 오실레이터의 파라미터를 최적화하여 정렬 영역을 더 정확하게 식별할 수 있습니다.

  2. 다른 지표와 결합하여 K선 전환 신호를 확인하여 조작 정확도를 높인다.

  3. 모바일 스톱 손실 알고리즘을 최적화하여 스톱 손실 포인트가 주식 가격을 더 잘 추적 할 수 있도록합니다.

  4. 포지션 컨트롤을 추가하여 단일 주식 손실을 방지합니다.

  5. 주요 이벤트 발표와 함께, 주가 변동이 생기는 시간을 피하십시오.

  6. 포지션 분할 모드를 최적화하여 더 큰 시장 동향을 추적하십시오.

요약하다

정지 회전 전략은 Stochastic oscillator 지표를 이용하여 짧은 라인을 정리하고, 충격 이후의 가격 전환점에서 작업을 수행한다. 이 전략은 높은 승률을 가지고 있으며, 트렌드에서 이익을 얻을 수 있다. 그러나 Stochastic oscillator가 잘못된 신호를 발산할 가능성이 있으며, 운영 정확도가 더 향상되어야 한다. 지표 매개 변수를 최적화하고, 필터링 조건을 추가함으로써 잘못된 신호 비율을 줄일 수 있다. 또한, 중지 손실 알고리즘과 포지션 제어를 최적화하고, 중대한 사건의 영향을 방지하는 것도 전략의 주요 최적화 방향이다.

전략 소스 코드
/*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 )