거래의 황금 시간 전략은 역사적 데이터를 추적하여 매일 어떤 시간대에 가장 적합한 구매 및 판매를 자동으로 판단하고 해당 시간대에 거래 신호를 발송합니다. 이 전략은 ROC 지표를 사용하여 K 선의 상승 하락을 계산합니다.
현재 시간을 사용해서 현재 시간을 얻습니다.
ROC 지표를 사용하여 K 선의 시속 하락률을 계산한다.
계산하는 indicator와 now_hour의 누적 곱셈buy_hourXindicator_cum。
인디케이터의 누적과 buy_indicator_cum을 계산한다.
가장 좋은 구매 시점 buy_hour = buy_hourXindicator_cum / buy_indicator_cum。
또한, sell_hour 을 계산합니다.
현재 시간을 buy_hour와 sell_hour와 비교하여 현재 시기가 가장 좋은 구매/판매 시점인지 판단한다.
가장 좋은 구매와 판매 시점에 해당하는 신호를 발산한다.
다양한 배경색으로 실시간으로 최고의 매매 시기를 표시합니다.
이 전략의 가장 큰 장점은 매일 거래하기에 가장 적합한 시간을 자동으로 판단할 수 있다는 것입니다. 최고의 거래 시간을 판단하기 위해 역사 데이터를 수동으로 관찰 할 필요가 없으며 많은 시간과 노력을 절약합니다. 또한 이 전략은 실시간 데이터에 따라 최적의 거래 시간을 조정하여 시장 변화에 신속하게 반응 할 수 있습니다. 고정된 거래 시간에 비해 이 전략은 더 우수합니다.
또한, 이 전략은 ROC 지표를 효과적으로 활용한다. 시간당 K 선의 상승세를 계산함으로써, 서로 다른 시간대의 거래 효과를 더 정확하게 판단할 수 있다. ROC 지표는 상대의 변동에 민감하며, 시장 변화를 반영할 수 있다.
이 전략의 가장 큰 위험은 ROC 지표 자체의 한계에 있다. ROC는 가격 변화율만을 고려하고 거래량 변화에 민감하지 않다. 또한 ROC는 상쇄 범위가 좁은 시장에 효과가 좋지 않다. 가로 상쇄 된 시장에 직면하면 ROC 지표 효과는 할인된다.
또한, 전략은 역사 데이터가 최적의 거래를 찾는 시간을 재검토하는 데 사용됩니다. 그러나 역사 법칙은 현재 시장에 반드시 적용되지 않습니다. 시장이 구조적으로 변경되어 원래의 거래 법칙이 더 이상 적용되지 않을 수 있습니다. 이는 현재 시장 상황에 대한 매개 변수를 조정하는 것이 필요하며, 재검토 결과에 전적으로 의존 할 수 없습니다.
이에 대해, 거래량과 같은 다른 지표와 결합하여 복합 계산을 하는 것을 고려할 수 있다. 이는 보다 포괄적인 시장 상태 판단을 얻기 위한 것이다. 또한, 현재 시장 행태에 대한 파라미터 조정 테스트를 하는 것도 필요하며, 거래 신호가 새로운 시장 상태에 부합하도록 하는 것이다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
거래량과 같은 다른 ROC 지표를 대체하여 더 적합한 지표를 찾으십시오.
다른 필터링 조건을 추가하고, 평균선, 흔들림 지표와 같은 지역 경향을 판단하여 불합리한 거래를 피하십시오.
시간주기 변수를 최적화하고, 다른 시간주기 변수의 결과에 대한 영향을 테스트한다.
추가한 스톱 리스 메커니즘, 합리적인 스톱 리스 포인트를 설정하고 거래 위험을 제어한다.
더 많은 양의 데이터를 활용하여 최적의 거래 시점을 찾아내는 기계 학습 방법과 결합하여
이 거래의 황금 시간 전략은 전반적으로 실행 가능하고 효과적인 방법입니다. 그것은 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)