시간 프레임 전력 거래 전략
타임프레임 파워 트레이딩 전략 (Timeframe Power Trading Strategy) 은 하루 내의 다른 시간 프레임에서 주식의 가격 트렌드 패턴을 활용하는 전략이다. 하루 내 48 시간 반 시간 프레임에서 최적의 긴 또는 짧은 기회를 식별하기 위해 노력한다.
이 전략의 핵심 논리는 주식 가격이 하루의 다른 기간 동안 특정 패턴을 나타내는 경향이 있다는 것입니다. 전략은 하루 동안 48 개의 반 시간 시간 프레임을 설정하고 각 시간 프레임 동안 장기간에 걸리거나 단축하거나 아무것도하지 않기를 결정합니다. 시간이 특정 시간 프레임에 들어갈 때, 설정이
예를 들어, 시간 프레임 6:30am - 7:00am가
이 전략의 장점은 주식의 하루 내 가격 변동에 대한 자본을 창출 할 수 있다는 것입니다. 이러한 패턴이 시간이 지남에 따라 변화하여 전략을 비효율화 할 위험이 있습니다.
이 전략의 가장 큰 장점은 주식의
또 다른 장점은 매개 변수 구성의 유연성입니다. 불확실성을 상쇄하기 위해 다양한 주식에 최적의 매개 변수 세트를 사용할 수 있습니다.
주요 위험은 가정의 불안정성에서 비롯됩니다. 주식 내 하루 가격 패턴이 크게 변화하면 전략의 수익성 기대에 영향을 줄 것입니다. 이러한 변화는 전체 시장에 영향을 미치는 근본 변화 또는 블랙 스완 이벤트에서 발생할 수 있습니다.
또한 높은 거래 빈도는 거래 비용 측면에서 위험을 초래합니다. 충분한 거래량이 없으면 수수료의 축적은 최종 수익을 침식 할 수 있습니다.
매개 변수를 동적으로 조정할 수 있도록 기계 학습 모델을 도입하는 것을 고려하십시오. 예를 들어 LSTM 모델은 다음 기간 가격을 예측하고 그에 따라 긴 / 짧은 설정을 정밀하게 조정합니다.
대안적으로, 전략 활성화를 위한 최적의 타이밍을 결정하기 위해 패턴 전환의 가능성을 측정하기 위해 주식 기본 요소를 결합합니다.
타임프레임 파워 트레이딩 전략 (Timeframe Power Trading Strategy) 은 반복적인 가격 패턴을 분석할 때 서로 다른 기간 동안 최적의 내일 운영을 식별함으로써 알파를 생성한다. 유연한 매개 변수 조정 및 위험 통제로 효율적인 알고 트레이딩 전략이다. 미래 최적화 경로는 ML 채택 또는 수익성을 확대하고 불확실성에 대한 견고함을 향상시키기 위해 근본적인 컴보를 포함한다.
/*backtest start: 2023-10-23 00:00:00 end: 2023-11-22 00:00:00 period: 1h 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/ //@version=4 strategy("Timeframe Time of Day Buying and Selling Strategy", overlay=true) frommonth = input(defval = 6, minval = 01, maxval = 12, title = "From Month") fromday = input(defval = 14, minval = 01, maxval = 31, title = "From day") fromyear = input(defval = 2021, minval = 1900, maxval = 2100, title = "From Year") tomonth = input(defval = 12, minval = 01, maxval = 12, title = "To Month") today = input(defval = 31, minval = 01, maxval = 31, title = "To day") toyear = input(defval = 2100, minval = 1900, maxval = 2100, title = "To Year") timeframes = array.new_string(48, '') timeframes_options = array.new_string(49, 'None') array.set(timeframes,0,'2330-0000') array.set(timeframes_options,0, input(defval='None', options=['Long','Short','None'], title='0000-0030')) array.set(timeframes,1,'0000-0030') array.set(timeframes_options,1, input(defval='Long', options=['Long','Short','None'], title='0030-0100')) array.set(timeframes,2,'0030-0100') array.set(timeframes_options,2, input(defval='Long', options=['Long','Short','None'], title='0100-0130')) array.set(timeframes,3,'0100-0130') array.set(timeframes_options,3, input(defval='Long', options=['Long','Short','None'], title='0130-0200')) array.set(timeframes,4,'0130-0200') array.set(timeframes_options,4, input(defval='Long', options=['Long','Short','None'], title='0200-0230')) array.set(timeframes,5,'0200-0230') array.set(timeframes_options,5, input(defval='None', options=['Long','Short','None'], title='0230-0300')) array.set(timeframes,6,'0230-0300') array.set(timeframes_options,6, input(defval='None', options=['Long','Short','None'], title='0300-0330')) array.set(timeframes,7,'0300-0330') array.set(timeframes_options,7, input(defval='None', options=['Long','Short','None'], title='0330-0400')) array.set(timeframes,8,'0330-0400') array.set(timeframes_options,8, input(defval='None', options=['Long','Short','None'], title='0400-0430')) array.set(timeframes,9,'0400-0430') array.set(timeframes_options,9, input(defval='None', options=['Long','Short','None'], title='0430-0500')) array.set(timeframes,10,'0430-0500') array.set(timeframes_options,10, input(defval='None', options=['Long','Short','None'], title='0500-0530')) array.set(timeframes,11,'0500-0530') array.set(timeframes_options,11, input(defval='None', options=['Long','Short','None'], title='0530-0600')) array.set(timeframes,12,'0530-0600') array.set(timeframes_options,12, input(defval='None', options=['Long','Short','None'], title='0600-0630')) array.set(timeframes,13,'0600-0630') array.set(timeframes_options,13, input(defval='None', options=['Long','Short','None'], title='0630-0700')) array.set(timeframes,14,'0630-0700') array.set(timeframes_options,14, input(defval='None', options=['Long','Short','None'], title='0700-0730')) array.set(timeframes,15,'0700-0730') array.set(timeframes_options,15, input(defval='None', options=['Long','Short','None'], title='0730-0800')) array.set(timeframes,16,'0730-0800') array.set(timeframes_options,16, input(defval='None', options=['Long','Short','None'], title='0800-0830')) array.set(timeframes,17,'0800-0830') array.set(timeframes_options,17, input(defval='None', options=['Long','Short','None'], title='0830-0900')) array.set(timeframes,18,'0830-0900') array.set(timeframes_options,18, input(defval='None', options=['Long','Short','None'], title='0900-0930')) array.set(timeframes,19,'0900-0930') array.set(timeframes_options,19, input(defval='None', options=['Long','Short','None'], title='0930-1000')) array.set(timeframes,20,'0930-1000') array.set(timeframes_options,20, input(defval='None', options=['Long','Short','None'], title='1000-1030')) array.set(timeframes,21,'1000-1030') array.set(timeframes_options,21, input(defval='None', options=['Long','Short','None'], title='1030-1100')) array.set(timeframes,22,'1030-1100') array.set(timeframes_options,22, input(defval='None', options=['Long','Short','None'], title='1100-1130')) array.set(timeframes,23,'1100-1130') array.set(timeframes_options,23, input(defval='None', options=['Long','Short','None'], title='1130-1200')) array.set(timeframes,24,'1130-1200') array.set(timeframes_options,24, input(defval='None', options=['Long','Short','None'], title='1200-1230')) array.set(timeframes,25,'1200-1230') array.set(timeframes_options,25, input(defval='None', options=['Long','Short','None'], title='1230-1300')) array.set(timeframes,26,'1230-1300') array.set(timeframes_options,26, input(defval='None', options=['Long','Short','None'], title='1300-1330')) array.set(timeframes,27,'1300-1330') array.set(timeframes_options,27, input(defval='None', options=['Long','Short','None'], title='1330-1400')) array.set(timeframes,28,'1330-1400') array.set(timeframes_options,28, input(defval='None', options=['Long','Short','None'], title='1400-1430')) array.set(timeframes,29,'1400-1430') array.set(timeframes_options,29, input(defval='None', options=['Long','Short','None'], title='1430-1500')) array.set(timeframes,30,'1430-1500') array.set(timeframes_options,30, input(defval='None', options=['Long','Short','None'], title='1500-1530')) array.set(timeframes,31,'1500-1530') array.set(timeframes_options,31, input(defval='None', options=['Long','Short','None'], title='1530-1600')) array.set(timeframes,32,'1530-1600') array.set(timeframes_options,32, input(defval='None', options=['Long','Short','None'], title='1600-1630')) array.set(timeframes,33,'1600-1630') array.set(timeframes_options,33, input(defval='None', options=['Long','Short','None'], title='1630-1700')) array.set(timeframes,34,'1630-1700') array.set(timeframes_options,34, input(defval='None', options=['Long','Short','None'], title='1700-1730')) array.set(timeframes,35,'1700-1730') array.set(timeframes_options,35, input(defval='None', options=['Long','Short','None'], title='1730-1800')) array.set(timeframes,36,'1730-1800') array.set(timeframes_options,36, input(defval='None', options=['Long','Short','None'], title='1800-1830')) array.set(timeframes,37,'1800-1830') array.set(timeframes_options,37, input(defval='None', options=['Long','Short','None'], title='1830-1900')) array.set(timeframes,38,'1830-1900') array.set(timeframes_options,38, input(defval='None', options=['Long','Short','None'], title='1900-0930')) array.set(timeframes,39,'1900-0930') array.set(timeframes_options,39, input(defval='None', options=['Long','Short','None'], title='1930-2000')) array.set(timeframes,40,'1930-2000') array.set(timeframes_options,40, input(defval='None', options=['Long','Short','None'], title='2000-2030')) array.set(timeframes,41,'2000-2030') array.set(timeframes_options,41, input(defval='None', options=['Long','Short','None'], title='2030-2100')) array.set(timeframes,42,'2030-2100') array.set(timeframes_options,42, input(defval='None', options=['Long','Short','None'], title='2100-2130')) array.set(timeframes,43,'2100-2130') array.set(timeframes_options,43, input(defval='None', options=['Long','Short','None'], title='2130-2200')) array.set(timeframes,44,'2130-2200') array.set(timeframes_options,44, input(defval='None', options=['Long','Short','None'], title='2200-2230')) array.set(timeframes,45,'2200-2230') array.set(timeframes_options,45, input(defval='None', options=['Long','Short','None'], title='2230-2300')) array.set(timeframes,46,'2230-2300') array.set(timeframes_options,46, input(defval='None', options=['Long','Short','None'], title='2300-2330')) array.set(timeframes,47,'2300-2330') array.set(timeframes_options,47, input(defval='None', options=['Long','Short','None'], title='2330-0000')) string_hour = hour<10?'0'+tostring(hour):tostring(hour) string_minute = minute<10?'0'+tostring(minute):tostring(minute) current_time = string_hour+string_minute f_strLeft(_str, _n) => string[] _chars = str.split(_str, "") int _len = array.size(_chars) int _end = min(_len, max(0, _n)) string[] _substr = array.new_string(0) if _end <= _len _substr := array.slice(_chars, 0, _end) string _return = array.join(_substr, "") f_strRight(_str, _n) => string[] _chars = str.split(_str, "") int _len = array.size(_chars) int _beg = max(0, _len - _n) string[] _substr = array.new_string(0) if _beg < _len _substr := array.slice(_chars, _beg, _len) string _return = array.join(_substr, "") for i = 0 to array.size(timeframes) - 1 start_time = f_strLeft(array.get(timeframes, i), 4) end_time = f_strRight(array.get(timeframes, i), 4) if current_time == end_time and array.get(timeframes_options, i)!='None' and array.get(timeframes_options, i) != array.get(timeframes_options, i==47?0:i+1) and timestamp(toyear, tomonth, today, 00, 00) strategy.close_all() if current_time == start_time and array.get(timeframes_options, i)!='None' and array.get(timeframes_options, i) != array.get(timeframes_options, i==0?47:i-1) if array.get(timeframes_options, i) == 'Long' strategy.entry("Long", strategy.long, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))) else if array.get(timeframes_options, i) == 'Short' strategy.entry("Short", strategy.short, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))