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

골든 트레이드 시간 전략

저자:차오장, 날짜: 2023-09-19 16:03:52
태그:

전반적인 설명

골든 트레이드 오워 전략은 역사적 데이터를 백테스팅하여 매일 구매 및 판매하는 가장 좋은 시간을 자동으로 결정합니다. 그것은 ROC 지표를 사용하여 다른 시간에 촛불의 상승 및 하락 비율을 계산하고 따라서 최적의 구매 및 판매 시간을 찾기 위해 거래 성능을 평가합니다.

전략 원칙

  1. 현재 시간을 사용해서 현재 시간 now_hour를 얻습니다.

  2. ROC 지표를 사용하여 촛불 지표의 시간 상승과 하락 비율을 계산합니다.

  3. 인디케이터와 now_hour의 누적 곱을 buy_hourXindicator_cum로 계산합니다.

  4. 인디케이터의 누적 합은 buy_indicator_cum로 계산합니다.

  5. 가장 좋은 구매 시간 구매_시간 = 구매_시간X지표_cum / 구매_지표_cum.

  6. 마찬가지로 가장 좋은 판매시간을 계산합니다. sell_hour

  7. 현재 시간이 최적의 구매 또는 판매 시간인지 확인하기 위해 now_hour와 buy_hour 및 sell_hour를 비교합니다.

  8. 최적의 구매 및 판매 시간 동안 대응 신호를 보내십시오.

  9. 다른 배경 색상을 사용하여 최적의 구매 및 판매 시간을 실시간으로 표시합니다.

이점 분석

이 전략의 가장 큰 장점은 하루 최고의 거래 시간을 자동으로 결정할 수 있다는 것입니다. 최적의 거래 시간을 판단하기 위해 역사 데이터를 수동으로 관찰하는 데 많은 시간과 노력을 절약합니다. 또한 이 전략은 실시간 데이터에 기반하여 최적의 거래 시간을 실시간으로 조정하여 시장 변화에 신속하게 대응할 수 있습니다. 이 전략은 고정 거래 시간보다 더 많은 장점을 가지고 있습니다.

또한, 전략은 ROC 지표를 잘 사용합니다. 촛불의 시간 상승과 하락 비율을 계산함으로써 다른 기간의 거래 성과를 더 정확하게 판단 할 수 있습니다. ROC 지표는 비대칭 변동에 민감하며 시장 변화를 반영 할 수 있습니다.

위험 분석

이 전략의 가장 큰 위험은 ROC 지표 자체의 한계에 있다. ROC는 가격 변화를 고려하고 거래량 변화에 민감하지 않다. 또한, ROC는 좁은 대역을 가진 범위 제한 시장에서 좋은 성과를 거두지 않는다. 옆으로 범위 제한 시장에 부딪히면, ROC 지표의 효과는 할인 될 것이다.

또한, 전략은 최적의 거래 시간을 결정하기 위해 역사적 데이터의 백테스팅을 사용합니다. 그러나 역사적 패턴은 현재 시장에 적용되지 않을 수 있습니다. 시장에서 구조적 변화가 발생할 수 있으며 원래 거래 규칙은 더 이상 적용되지 않을 수 있습니다. 이것은 단순히 백테스팅 결과에 의존하는 대신 현재 시장 상황에 따라 매개 변수를 조정해야합니다.

이 문제를 해결하기 위해, 우리는 시장 조건에 대한 보다 포괄적인 판단을 얻기 위해 거래량과 같은 다른 지표를 결합하는 것을 고려할 수 있습니다. 또한 우리는 거래 신호가 새로운 시장 상태에 맞춰질 수 있도록 현재 시장 조건에 기반한 매개 변수 조정 테스트를 수행해야합니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. ROC 지표를 대체하는 다른 지표, 예를 들어 거래 부피를 시도하여 시간적 강도와 약도를 계산하는 데 더 적합한 지표를 찾으십시오.

  2. 이동 평균, 오시레이터 등을 사용하여 다른 필터링 조건을 추가하여 지역 트렌드를 판단하고 불합리한 거래를 피합니다.

  3. 시간 기간 매개 변수를 최적화하고 결과에 다른 시간 기간의 영향을 테스트합니다.

  4. 스톱 로스 메커니즘을 추가하고 합리적인 스톱 로스 포인트를 설정하여 거래 위험을 제어합니다.

  5. 기계 학습 방법과 더 큰 데이터 세트를 결합하여 최적의 거래 시간을 해결합니다.

요약

요약하자면, 골든 트레이드 시간 전략은 실행 가능하고 효과적인 접근법입니다. ROC 지표를 사용하여 최적의 내일 구매 및 판매 시간을 자동으로 결정하여 많은 시간과 노력을 절약합니다. 그러나 우리는 ROC 지표와 역사적 백테스팅의 한계를 참고하고 현재 시장 상황에 따라 매개 변수를 조정해야합니다. 또한, 더 정확하고 신뢰할 수있는 신호를 생성하기 위해 많은 측면에서이 전략을 최적화하여 개선할 여지가 있습니다. 라이브 거래에 사용되면 거래 위험을 제어하기 위해 스톱 로스 규칙을 엄격히 준수하는 것이 좋습니다.


/*backtest
start: 2023-08-19 00:00:00
end: 2023-09-18 00:00:00
period: 2h
basePeriod: 15m
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/
// © mablue (Masoud Azizi)

//@version=5
strategy("Trade Hour V3",overlay=false)
timezone = input.string("Europe/London",options=["America/New_York","America/Los_Angeles","America/Chicago","America/Phoenix","America/Toronto","America/Vancouver","America/Argentina" ,"America/El_Salvador","America/Sao_Paulo","America/Bogota","Europe/Moscow","Europe/Athens","Europe/Berlin","Europe/London","Europe/Madrid","Europe/Paris","Europe/Warsaw","Australia/Sydney","Australia/Brisbane","Australia/Adelaide","Australia/ACT","Asia/Almaty","Asia/Ashkhabad","Asia/Tokyo","Asia/Taipei","Asia/Singapore","Asia/Shanghai","Asia/Seoul","Asia/Tehran","Asia/Dubai","Asia/Kolkata","Asia/Hong_Kong","Asia/Bangkok","Pacific/Auckland","Pacific/Chatham","Pacific/Fakaofo","Pacific/Honolulu"]	)
source = input.source(close)
tp = input.int(1,"ROC Timeperiod")

now_hour = hour(time,timezone)

indicator = ta.roc(source,tp)

buy_hourXindicator_cum = ta.cum(indicator* now_hour)
buy_indicator_cum = ta.cum(indicator)
buy_hour = buy_hourXindicator_cum/buy_indicator_cum

sell_hourXindicator_cum = ta.cum( (1/indicator ) * now_hour)
sell_indicator_cum = ta.cum(1/indicator)
sell_hour = sell_hourXindicator_cum/sell_indicator_cum

plot(buy_hour,color=color.green)
plot(sell_hour,color=color.red)
plot(now_hour,color=color.gray,display=display.none)


bool isLongBestHour = now_hour==math.round(buy_hour)
bool isShortBestHour = now_hour==math.round(sell_hour)

bgcolor(isLongBestHour ? color.new(color.green,80) : na)
bgcolor(isShortBestHour ? color.new(color.red,80) : na)
strategy.order("buy", strategy.long, when =isLongBestHour)
strategy.order("sell", strategy.short, when = isShortBestHour)

더 많은