리소스 로딩... 로딩...

전략에 따른 파업 추세

저자:차오장, 날짜: 2023-12-08 17:16:34
태그:

img

전반적인 설명

이 전략은 트렌드를 포착하기 위해 가장 높은 가격 이상에서 가격을 깨고 가장 낮은 가격 아래로 갈 때 길게 이동합니다.

전략 원칙

이 전략은 주로 가중화 이동 평균 방법을 사용하여 명백한 상승 또는 하락 추세가 있는지 여부를 결정합니다. 구체적으로, 특정 기간 동안 가장 높은 가격과 가장 낮은 가격을 기록합니다. 실제 거래 가격이 기록 된 최고 가격을 초과하면 상승 추세가 발생했으며 길게 갈 것이라고 판단됩니다. 실제 거래 가격이 기록 된 최저 가격보다 낮으면 하락 추세가 발생했으며 짧게 갈 것이라고 판단됩니다.

롱과 쇼트의 오픈 가격은 ENTRY 입력 매개 변수를 통해 설정되고, 종료 가격은 EXIT 매개 변수를 통해 설정됩니다. 백테스트 타임프레임도 매개 변수를 통해 설정할 수 있습니다. 이는 매개 변수를 조정함으로써 최고의 콤보를 찾을 수 있습니다.

특히 전략의 주요 논리는 다음과 같습니다.

  1. 특정 기간 동안 가장 높고 가장 낮은 가격을 기록합니다 (조정 가능)
  2. 실제 거래 가격이 가장 높은 가격보다 높는지 판단합니다.
    1. 더 높은 경우, ENTRY 매개 변수에서 설정된 가격 수준에 따라 긴 기회가 있습니다.
    2. 실제 거래 가격이 가장 낮은 가격보다 낮다면, EXIT 매개 변수에 의해 설정된 가격 수준에 따라 짧은 기회가 있고, 짧은 포지션을 개설합니다.
  3. EXIT 매개 변수에서 설정된 수준 아래로 가격이 떨어지면 긴 포지션을 열고 닫습니다.
  4. ENTRY 매개 변수에서 설정된 수준을 초과할 때 짧은 포지션을 열고 닫습니다.

이 로직 루프를 통해, 그것은 가격의 상승 및 하락 추세를 포착하고 추세를 따라 할 수 있습니다.

장점

이 전략의 가장 큰 장점은 매개 변수를 조정함으로써, 트렌드 방향에 대한 수동 판단의 필요없이 자동으로 가격 추세를 파악할 수 있다는 것입니다. 매개 변수가 적절하게 설정되는 한, 암호화폐의 가격 변동을 자동으로 추적 할 수 있습니다.

또한 이 전략은 양적 거래에 매우 적합하며 자동화 된 주문 배치를 쉽게 달성 할 수 있습니다. 수동 조작 없이 감정 거래의 위험을 줄이고 거래 효율성을 크게 향상시킵니다.

마지막으로, 이 전략은 또한 매개 변수를 조정함으로써 수익을 극대화 할 수 있습니다. 다른 ENTRY 및 EXIT 매개 변수를 테스트함으로써 수익을 극대화하기위한 최적 매개 변수를 찾을 수 있습니다.

위험성

이 전략의 가장 큰 위험은 부적절한 매개 변수 설정이 과도하게 빈번한 거래, 거래 수수료 증가 및 슬리퍼지 손실로 이어질 수 있다는 것입니다. ENTRY가 너무 낮고 EXIT가 너무 높게 설정되면 잘못된 거래 신호가 쉽게 생성됩니다.

또한, 부적절한 매개 변수 조정 또한 가격 트렌드를 적시에 파악하지 못하여 거래 기회를 놓칠 수 있습니다. 이것은 최적의 매개 변수를 찾기 위해 많은 백테스팅을 필요로합니다.

마지막으로, 이 전략은 잘못된 거래 신호를 생성 할 수있는 단기 시장 소음에 너무 민감합니다. 거래 시간 사이클 매개 변수를 적절하게 설정함으로써 이것을 피해야합니다.

최적화 방향

이 전략의 다음 측면은 더 이상 최적화 될 수 있습니다:

  1. 스톱 로스 로직을 추가합니다. 이것은 손실이 특정 비율을 초과하면 더 큰 손실을 피할 수 있습니다.

  2. 이동 평균, KDJ와 같은 기술 지표 필터를 추가하여 단기 소음으로 인해 너무 많은 거래를 피하기 위해 전반적인 추세를 판단합니다.

  3. 매개 변수 설정 논리를 최적화 합니다. 적응 변화 메커니즘은 정적 설정보다는 시장 조건에 따라 조정할 수 있도록 입문 및 출입 매개 변수에 설정할 수 있습니다.

  4. 기계 학습을 사용하여 최적의 매개 변수를 훈련하십시오. 대규모 역사 데이터 훈련을 통해 현재 시장 환경에 최적의 ENTRY 및 EXIT 설정을 얻으십시오.

결론

이 전략의 가장 큰 장점은 가격 트렌드를 포착함으로써 자동화 된 거래를 달성한다는 것입니다. 이는 거래에 대한 인간의 감정의 영향을 줄이고 위험을 낮추고 효율성을 향상시킬 수 있습니다. 동시에 매개 변수를 조정하여 최적의 수익 지점을 찾을 수 있습니다.

전략의 주요 위험은 잘못된 매개 변수 설정 및 시장 소음에 대한 과민성입니다. 이것은 중지 손실, 지표 필터, 적응 매개 변수 최적화 및 기타를 통해 개선되어야합니다.

전체적으로, 이것은 양적 및 자동화 거래에 적합한 전략에 따라 간단하고 효과적인 추세입니다. 지속적인 최적화로 전략의 안정성이 더 향상 될 수 있습니다.


/*backtest
start: 2022-12-01 00:00:00
end: 2023-12-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © JstMtlQC

//@version=4
strategy("Trend Following Breakout",calc_on_order_fills=true,calc_on_every_tick =false, overlay=true, initial_capital=2000,commission_value=.1,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)


/////////////// INPUT ENTRY EXIT
entry= input(100, "ENTRY H/L")
exit= input(50, "EXIT H/L")

/////////////// Backtest Input
FromYear = input(2015, "Backtest Start Year")
FromMonth = input(1, "Backtest Start Month")
FromDay = input(1, "Backtest Start Day")
ToYear = input(2999, "Backtest End Year")
ToMonth = input(1, "Backtest End Month")
ToDay = input(1, "Backtest End Day")

/////////////// Backtest Setting
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
window()  => time >= start and time <= finish ? true : false 

/////////////// BUY OPEN PLOT
highestpricelong = highest(high,entry)[1]
plot(highestpricelong, color=color.green, linewidth=2)

/////////////// BUY CLOSE PLOT
lowestpricelong = lowest(high,exit)[1]
plot(lowestpricelong, color=color.green, linewidth=2)

/////////////// SHORT OPEN PLOT
lowestpriceshort = lowest(low,entry)[1]
plot(lowestpriceshort, color=color.red, linewidth=2)

/////////////// SHORT CLOSE PLOT
highestpriceshort = highest(low,exit)[1]
plot(highestpriceshort, color=color.red, linewidth=2)

///////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// CONDITION LONG SHORT //////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////

/////////////// SHORT 

entryshort= crossunder(close, lowestpriceshort)
exitshort= crossover(close,highestpriceshort)

/////////////// LONG 

exitlong= crossover(close, lowestpricelong)
entrylong= crossover(close,highestpricelong)

///////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////// LONG and SHORT ORDER //////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////

/////////////// LONG 

if (entrylong)
    strategy.entry("LongEntry", strategy.long, when = window())
if (exitlong or entryshort)
    strategy.close("LongEntry", when=window())

/////////////// SHORT 

if (entryshort)
    strategy.entry("short", strategy.short, when = window())
if (exitshort or entrylong)
    strategy.close("short", when=window())



더 많은