일일 거래 전략


생성 날짜: 2023-09-26 20:49:44 마지막으로 수정됨: 2023-09-26 20:49:44
복사: 0 클릭수: 611
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

요약

이것은 비트 코인에 사용되는 사용자 정의 다중 공백 거래 전략이다. 그것은 당신이 주중의 다른 거래일에 따라 재검토를 통해 더 많이 또는 더 적게 할 수 있게 해준다. 가격은 주중의 다른 거래일에 한 방향으로 또는 다른 방향으로 움직일 수 있다. 이 전략은 당신이 이것을 이용하기 위해 일련의 날짜에 걸쳐 다른 거래일을 테스트 할 수 있게 해준다.

성과와 거래 기록을 볼 때 일선 도표를 사용하여 스크립트가 예상대로 작동하고 트레이딩 뷰에서 가능한 한 많은 역사적 데이터를 얻을 수 있도록하십시오.

전략 원칙

이 전략의 핵심 논리는 사용자가 일주일에 매일 다중 거래, 공허 거래 또는 거래를 하지 않는 것을 선택할 수 있도록 하는 것입니다.

첫째로, 사용자가 시작되는 달, 날짜, 연도, 끝나는 달, 날짜, 연도를 포함하여 측정 날짜 범위를 설정할 수 있습니다.

다음으로, 그것은 일요일의 0부터 토요일의 6까지, 일주일의 각 날을 나타내는 숫자를 저장하는 일련의 타임프레임을 사용합니다.

또 다른 배열 timeframes_options는 매일 다중, 공백 또는 거래하지 않는 옵션을 저장하는 데 사용됩니다. 이것은 입력 옵션으로 설정됩니다.

for 회전에서, 이 전략은 현재 거래일이 타임프레임의 배열에서 어떤 날과 일치하는지 확인한다. 만약 일치하고, 옵션이 전날과 다르다면, 먼저 모든 미완성 포지션을 닫는다.

선택 사항이 이 없는 경우, 선택된 멀티 헤드 또는 빈 헤드에 따라 해당 방향의 포지션을 열립니다.

이렇게 하면, 이 전략은 설정된 날짜의 범위 내에서, 일주일 중 매일의 설정에 따라 다중 허브 거래를 할 수 있다.

우위 분석

이 전략의 주요 장점은 고도로 사용자 정의 된 다중 공허 거래가 제공된다는 것입니다. 사용자는 일주일에 매일 거래하는 방향을 자유롭게 선택할 수 있습니다.

고정된 주간 거래 전략과 달리, 이 전략은 유연하게 조정할 수 있다. 어떤 날의 결과가 좋지 않다면, 다른 날만 거래하는 것을 쉽게 수정할 수 있다.

또한, 날짜 범위도 매우 유연해서, 어떤 날짜 조합이 가장 잘 작동하는지 확인하기 위해 사용자가 지정하는 시간 범위를 테스트할 수 있습니다.

거래 논리는 매우 명확하고 간단하며 이해하기 쉽고 수정할 수 있다. 사용자는 프로그래밍 없이 매개 변수를 조정할 수 있다.

이 전략은 또한 매일의 방향이 바뀌면 자동으로 매장되지 않은 포지션을 청산하여 불필요한 위험을 피합니다.

위험 분석

이 전략의 주요 위험은 사용자가 설정하는 일일 거래 옵션이 모든 날짜 범위에 적합하지 않다는 것입니다.

예를 들어, 주중과 주말을 통한 휴업은 특정 시간대에 효과적일 수 있지만, 다른 시간대에 실패할 수 있다.

따라서, 각기 다른 날짜 범위를 신중하게 테스트해야 하며, 한 번의 재검토 결과에 의존하지 말아야 한다. 매개 변수를 조정하는 것은 특정 시장 상황에 맞춰야 한다.

또 다른 위험은 매일의 방향이 바뀌면 적당히 평준화를 하지 못한다는 것이다. 이는 손실이 확대될 수 있다. 그러나 이 전략은 자동 평준화를 통해 이 문제를 완화하려고 한다.

일반적으로, 이 전략은 변수 최적화에 의존하며, 다양한 시장 조건에 적합한 변수 조합을 찾기 위해 충분한 테스트가 필요합니다.

최적화 방향

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

  1. 매일 방향이 변할 때 스톱 로직을 추가하고, 포지션이 수익성이있을 때 이동 스톱을 설정하고, 회수량을 줄여줍니다.

  2. 필터를 추가하여 가격이 특정 날의 최고점이나 최저점을 넘었을 때 신호를 발산하여 트렌드가 없는 상태에서 반복되는 거래를 방지합니다.

  3. 높은 변동성이 있을 때 포지션 규모를 줄이고 낮은 변동성이 있을 때 포지션을 늘려서 위험을 조절할 수 있다.

  4. 트레이딩 데이에 대한 선택은 기계 학습에 추가되어, 역사 데이터에 따라 매일의 트레이딩 확률을 판단하고, 동적인 매일의 방향을 생성한다.

  5. 급격한 사건에 대한 처리 논리를 추가하여, 주요 금융 사건이 발생했을 때 거래를 중지하여, 피하는 것을 피하십시오.

요약하다

이 전략은 일일 방향을 선택함으로써, 매우 유연한 다중 공수 거래 능력을 제공합니다. 사용자는 최적의 파라미터를 찾기 위해 자유롭게 조합 테스트를 할 수 있습니다. 그러나 이 전략은 높은 최적화 요구 사항이 있으며, 다양한 시장에 적합한 설정을 찾기 위해 많은 테스트가 필요합니다.

전략 소스 코드
/*backtest
start: 2022-09-19 00:00:00
end: 2023-09-25 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/

//@version=4
// strategy("Day of Week Custom Buy/Sell Strategy", overlay=true, currency=currency.USD, default_qty_value=1.0,initial_capital=30000.00,default_qty_type=strategy.percent_of_equity)

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_int(7, 1)
timeframes_options = array.new_string(7, 'None')

array.set(timeframes,0,7)
array.set(timeframes_options,0, input(defval='None', options=['Long','Short','None'], title='sunday'))
array.set(timeframes,1,1)
array.set(timeframes_options,1, input(defval='Long', options=['Long','Short','None'], title='monday'))
array.set(timeframes,2,2)
array.set(timeframes_options,2, input(defval='Long', options=['Long','Short','None'], title='tuesday'))
array.set(timeframes,3,3)
array.set(timeframes_options,3, input(defval='Long', options=['Long','Short','None'], title='wednesday'))
array.set(timeframes,4,4)
array.set(timeframes_options,4, input(defval='None', options=['Long','Short','None'], title='thursday'))
array.set(timeframes,5,5)
array.set(timeframes_options,5, input(defval='None', options=['Long','Short','None'], title='friday'))
array.set(timeframes,6,6)
array.set(timeframes_options,6, input(defval='None', options=['Long','Short','None'], title='saturday'))



for i = 0 to array.size(timeframes) - 1
    
    if dayofweek == array.get(timeframes, i) and array.get(timeframes_options, i) != array.get(timeframes_options, i==0?6:i-1)
        strategy.close_all()

    if dayofweek == array.get(timeframes, i) and array.get(timeframes_options, i)!='None' and array.get(timeframes_options, i) != array.get(timeframes_options, i==0?6: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)))