avatar of 发明者量化-小小梦 发明者量化-小小梦
집중하다 사신
4
집중하다
1271
수행원

기복을 쫓는 전략의 파이썬 버전

만든 날짜: 2020-01-11 14:49:08, 업데이트 날짜: 2024-12-12 20:57:43
comments   6
hits   7100

기복을 쫓는 전략의 파이썬 버전

기복을 쫓는 전략의 파이썬 버전

추세 전략은 일반적으로 다양한 지표를 사용하여 시장 방향을 파악하고, 다양한 지표의 수치적 비교 결과를 거래 신호로 사용합니다. 이는 필연적으로 매개변수의 사용과 지표의 계산으로 이어질 것입니다. 매개변수를 사용하므로 적합성이 있습니다. 이 전략은 특정 시장 상황에서는 매우 좋은 성과를 거두지만, 운이 나빠서 시장 추세가 현재 매개변수에 매우 불리할 경우 이 전략은 매우 낮은 성과를 거둘 수 있습니다. 따라서 제 생각에는 전략 설계는 가능한 한 간단해야 하며, 그러한 전략은 더욱 견고할 것입니다. 오늘은 지표를 사용하지 않는 트렌드 전략을 공유해드리겠습니다. 전략 코드는 매우 간단해서 40줄에 불과합니다.

전략 코드:

import time

basePrice = -1
ratio = 0.05
acc = _C(exchange.GetAccount)
lastCancelAll = 0
minStocks = 0.01

def CancelAll():
    while True : 
        orders = _C(exchange.GetOrders)
        for i in range(len(orders)) :
            exchange.CancelOrder(orders[i]["Id"], orders[i])
        if len(orders) == 0 :
            break
        Sleep(1000)

def main():
    global basePrice, acc, lastCancelAll
    exchange.SetPrecision(2, 3)
    while True:
        ticker = _C(exchange.GetTicker)
        if basePrice == -1 :
            basePrice = ticker.Last
        if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio :
            acc = _C(exchange.GetAccount)
            if acc.Balance * ratio / ticker.Last > minStocks :
                exchange.Buy(ticker.Last, acc.Balance * ratio / ticker.Last)
                basePrice = ticker.Last
        if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio : 
            acc = _C(exchange.GetAccount)
            if acc.Stocks * ratio > minStocks :
                exchange.Sell(ticker.Last, acc.Stocks * ratio)
                basePrice = ticker.Last
        ts = time.time()
        if ts - lastCancelAll > 60 * 5 :
            CancelAll()
            lastCancelAll = ts 
        LogStatus(_D(), "\n", "行情信息:", ticker, "\n", "账户信息:", acc)
        Sleep(500)

전략에 대한 간단한 분석

전략의 원리는 매우 간단합니다. 지표를 사용하지 않고 현재 가격만을 거래 트리거의 기준으로 사용하며 주요 매개변수는 하나뿐입니다.ratio포지션 오픈의 트리거를 제어합니다.

긴 트리거:

if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio

현재 가격을 사용하여 기준 가격과 비교합니다. 현재 가격이 기준 가격보다 크고 가격이 초과하는 경우ratio * 100 %, 보류 주문이 실행되고 롱 주문이 실행됩니다. 주문이 접수되면 기본 가격이 현재 가격으로 업데이트됩니다.

단기 주문 트리거:

if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio

공매도의 원리는 동일합니다. 현재 가격을 사용하여 기준 가격과 비교합니다. 현재 가격이 기준 가격보다 낮고 가격이 초과하는 경우ratio * 100 %, 보류 주문이 실행되고 단기 주문이 실행됩니다. 주문이 접수되면 기본 가격이 현재 가격으로 업데이트됩니다.

각 주문의 주문량은 사용 가능한 자금의 가치입니다.ratio * 100 %。 계산된 주문량이 매개변수에 설정된 최소 거래량보다 적지 않은 경우minStocks, 그렇지 않으면 주문을 하세요.

이를 통해 가격 변화를 따라가고 최고가를 쫓아가고 최저가를 판매하는 전략이 가능해집니다.

백테스팅

백테스팅 기간은 약 1년입니다. 기복을 쫓는 전략의 파이썬 버전

작업 결과: 기복을 쫓는 전략의 파이썬 버전

기복을 쫓는 전략의 파이썬 버전

최근에, 몇몇 사용자들은 파이썬 전략이 비교적 적다고 말했습니다. 저는 앞으로 파이썬으로 작성된 더 많은 전략을 공유할 것입니다. 전략 코드도 매우 간단해서 초보자가 배우기에 매우 적합합니다. 전략 주소: https://www.fmz.com/strategy/181185

이 전략은 참조용, 백테스팅 및 테스트용일 뿐입니다. 관심이 있다면 최적화하고 업그레이드할 수 있습니다.