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

hans123 내일 돌파구 전략

저자:선함, 2020-08-12 11:38:39, 업데이트: 2023-10-10 21:15:02

img

전문

HANS123 전략은 처음 주로 외환 시장에 적용되었습니다. 거래 방법은 비교적 간단하며 트렌드 돌파 시스템에 속합니다. 이 거래 방법은 트렌드가 형성되는 즉시 시장에 진출 할 수 있으므로 많은 거래자가 선호합니다. 지금까지 HANS123은 많은 버전을 확장했습니다. 함께 HANS123 전략을 이해하고 배포해 보겠습니다.

img

전략 의 원칙

어떤 사람들은 시장이 가장 큰 분리를 가지고 있는 시점인 아침 시장 개장 시점이라고 믿는다. 약 30분 후, 시장은 모든 종류의 오버나이트 정보를 완전히 소화하고, 가격 추세는 합리적이고 정상으로 돌아가는 경향이 있다. 다른 말로 하면: 처음 30분 정도 동안의 시장 추세는 기본적으로 오늘날의 전체 거래 패턴을 구성한다.

  • 상부 레일: 오픈 후 30분 이내에 가장 높은 가격
  • 로버 레일: 오픈 후 30분 이내에 가장 낮은 가격

이 시간에 생성된 상대적 높은 점과 낮은 점은 도 이론의 효과적인 높은 점과 낮은 점을 형성하며, HANS123 전략은 이로 인해 설정된 거래 논리입니다. 국내 선물 시장에서 시장은 아침 09:00에 열리며, 09:30에는 오늘 긴지 짧은지 판단 할 수 있습니다. 가격이 높은 지점을 넘어서면 가격이 쉽게 상승을 계속할 것입니다. 가격이 낮은 지점을 넘어서면 가격이 쉽게 계속 떨어질 것입니다.

  • 롱 포지션 오픈: 현재 홀딩 포지션이 없으며 가격은 상단 레일 이상으로 떨어집니다.
  • 짧은 포지션 오픈: 현재 보유 포지션이 없으며 가격이 하부 레일 아래로 넘어갑니다.

돌파구 전략은 트렌드가 형성되자마자 시장에 진입할 수 있지만, 이 장점은 또한 양면으로 날카로운 검이다. 민감한 진입으로 인해 가격 돌파구가 실패했다. 따라서 스톱 로스를 설정하는 것이 필요합니다. 동시에 이기고 잃는 전략 논리를 달성하기 위해서는 이윤을 설정해야합니다.

  • 중장상태 Stop Loss: 현재 중장상태가 중장상태의 손실액에 도달한 상태
  • 단상 지점 Stop Loss: 현재 단상 지점이 손실 금액에 도달했습니다.
  • 긴 포지션에서 수익을 취하고, 긴 포지션을 유지하여 수익 금액을 달성합니다.
  • 짧은 포지션에서 수익을 취하고, 짧은 포지션을 유지하여 수익 금액을 달성합니다.

전략 작성

순차적으로 열립니다.fmz.com웹 사이트> 로그인 > 대시보드 > 전략 라이브러리 > 새로운 전략 > 오른쪽 상단에있는 드롭다운 메뉴를 클릭하여 파이썬 언어를 선택하고 전략을 작성하기 시작하십시오. 아래 코드에 있는 댓글에 주의하십시오.

단계 1: 전략 프레임워크를 작성

# Strategy main function
def onTick():
    pass


# Program entry
def main():
    while True: # enter infinite loop mode
        onTick() # execute strategy main function
        Sleep(1000) # Sleep for 1 second

전략 프레임워크를 작성하는 것은, 이것은 이전 장에서 배운, 하나는onTick다른 하나는main기능, 그 안에서onTick함수는 끝없는 루프에서 실행됩니다main function.

단계 2: 글로벌 변수를 정의합니다.

up_line = 0 # upper rail
down_line = 0 # lower rail
trade_count = 0 # Number of transactions on the day

상부와 하부 레일은 09:30에만 계산되고 나머지 시간에는 통계가 이루어지지 않기 때문에 이 두 변수를 루프 밖에서 작성해야 합니다.trade_count이 두 개의 글로벌 변수를 사용하기 전에onTick전략, 당신은global키워드 참조.

단계 3: 데이터를 얻으십시오

exchange.SetContractType("rb888") # Subscribe to futures varieties
bar_arr = _C(exchange.GetRecords, PERIOD_M1) # Get 1-minute K line array
current_close = bar_arr[-1]['Close'] # Get the latest price
if len(bar_arr) <50: # If less than 50 k line bars
    return # Return to continue waiting for data

데이터를 얻으려면 먼저SetContractTypeFMZ 플랫폼 API에서 선물 품종에 가입 하 고 다음GetRecordsK-라인 배열을 얻기 위한 함수입니다. 또한 K-라인 배열에PERIOD_M11분을 사용 하 여GetRecords function.

다음 단계는 현재 가격과 상위 및 하위 레일 사이의 위치 관계를 결정하는 데 사용되는 최신 가격을 얻는 것입니다. 동시에 구매 또는 판매 기능을 사용하여 주문을 할 때 지정된 가격을 전달해야합니다. 또한 k 라인 바의 수를 필터하는 것을 잊지 마십시오. 왜냐하면 k 라인 바의 수가 너무 적으면 계산할 수없는 오류가 발생할 수 있기 때문입니다.

단계 4: 처리 시간 함수

def current_time():
    current_time = bar_arr[-1]['Time'] # Get current K-line timestamp
    time_local = time.localtime(current_time / 1000) # Processing timestamp
    hour = time.strftime("%H", time_local) # Format the timestamp and get the hour
    minute = time.strftime("%M", time_local) # Format the timestamp and get the minute
    if len(minute) == 1:
        minute = "0" + minute
    return int(hour + minute)

상위와 하위 레일을 계산하고 주문을 할 때, 현재 시간이 우리가 지정한 거래 시간과 일치하는지 판단해야합니다. 따라서 판단을 용이하게하기 위해 현재 K 라인의 특정 시간과 분을 다루어야합니다.

단계 5: 상부와 하부 레일 계산

global up_line, down_line, trade_count # Introduce global variables
current_time = current_time() # processing time
if current_time == 930: # If the latest K-line time is 09:30
    up_line = TA.Highest(bar_arr, 30,'High') + count # The highest price of the first 30 k line bars
    down_line = TA.Lowest(bar_arr, 30,'Low')-count # The lowest price of the first 30 ke line bars
    trade_count = 0 # Reset the number of transactions to 0

단계 6: 직책 확보

position_arr = _C(exchange.GetPosition) # Get position array
if len(position_arr) > 0: # If the position array length is greater than 0
    position_arr = position_arr[0] # Get position dictionary data
    if position_arr['ContractType'] =='rb888': # If the position symbol is equal to the subscription symbol
        if position_arr['Type']% 2 == 0: # If it is a long position
            position = position_arr['Amount'] # The number of assigned positions is a positive number
        else:
            position = -position_arr['Amount'] # Assign a negative number of positions
        profit = position_arr['Profit'] # Get position profit and loss
else:
    position = 0 # The number of assigned positions is 0
    profit = 0 # Assign position profit and loss to 0

포지션 상태는 전략 논리를 포함합니다. 우리의 첫 번째 10 수업은 항상 가상 보유 포지션을 사용했지만 실제 거래 환경에서,GetPosition실제 포지션 정보를 얻는 기능, 포지션 방향, 포지션 이익과 손실, 포지션 수 등을 포함한다.

단계 7: 주문

# If it is close to market closing or reach taking profit and stopping loss
if current_time > 1450 or profit > stop * 3 or profit < -stop:
    if position > 0: # If holding a long position
        exchange.SetDirection("closebuy") # Set transaction direction and type
        exchange.Sell(current_close-1, 1) # Close long order
    elif position <0: # If holding an empty order
        exchange.SetDirection("closesell") # Set transaction direction and type
        exchange.Buy(current_close + 1, 1) # Close short order
# If there is no current position, and it is less than the specified number of transactions, and within the specified trading time
if position == 0 and trade_count < 2 and 930 < current_time < 1450:
    if current_close > up_line: # If the price is greater than the upper line
        exchange.SetDirection("buy") # Set transaction direction and type
        exchange.Buy(current_close + 1, 1) # Open long order
        trade_count = trade_count + 1 # Increase the number of transactions
    elif current_close < down_line: # If the price is less than the lower line
        exchange.SetDirection("sell") # Set transaction direction and type
        exchange.Sell(current_close-1, 1) # Open a short order
        trade_count = trade_count + 1 # Increase the number of transactions

전략의 논리 오류를 피하기 위해, 오픈 포지션 논리 이전에 클로징 포지션 논리를 작성하는 것이 좋습니다. 이 전략에서, 포지션을 열 때, 먼저 지정된 거래 시간 내에 있는지 여부와 현재의 포지션 상태를 결정하고, 그 다음 현재 가격과 상위 및 하위 레일 사이의 관계를 결정합니다. 포지션을 닫는 것은 먼저 시장 폐쇄에 가깝는지, 또는 수익을 얻고 손실을 멈추는 조건에 도달했는지 여부를 결정하는 것입니다.

HANS123는 매우 전형적이고 매우 효과적인 자동화 거래 전략이다. 그것의 기본 원칙은 특정 기간 내에 이전 시장의 최고 또는 최저 가격을 돌파하는 것입니다. 시스템은 안정적인 수익성을 가진 거의 모든 외환 상품에 적용 될 수 있습니다. 이것은 또한 적절한 필터링 기술을 갖춘 초기 입점 거래 모드 또는 승리의 확률을 향상시킬 수 있습니다.

전체 전략

전체 전략 소스 코드를 복사하기 위해 클릭합니다https://www.fmz.com/strategy/179805설정 없이 백테스트

위는 HANS123 전략의 원칙과 코드 분석입니다. 사실, HANS123 전략은 시장에 진입하는 더 나은 시간을 제공합니다. 당신은 또한 시장에 대한 이해와 거래에 대한 이해에 따라 출구 시간을 향상시킬 수 있습니다. 또는 다양한 변동성에 따라 더 나은 결과를 달성하기 위해 수익을 취하고 손실을 중지하는 것과 같은 매개 변수를 최적화 할 수 있습니다.


관련

더 많은