
사람들은 종종 거래가 예술이며, 예술은 영감에서 나온다고 말합니다. 그래서 오늘 저는 Inventor의 Quantitative Data Replay 기능을 사용하여 자신의 거래 영감을 발견하는 방법을 여러분과 공유하고 싶습니다.
우리가 일반적으로 영감이라고 부르는 것은 사람들이 사고 과정에서 즉시 경험하는 창의적인 상태를 말합니다. 트레이더의 경우, 뇌의 좌반구는 전략 작성, 자본 배분, 매개변수 설정 등 일련의 규칙을 수립하는 역할을 합니다. 거래에 대한 영감과 시장 감각은 뇌의 우반구에서 나옵니다.
많은 사람들이 “시장 감정”이라는 용어를 들었을 텐데, 이는 형언할 수 없는 감정으로, 지금 일어나고 있는 일이 익숙한 것처럼 느껴집니다. 거래 시, 이러한 여섯 번째 감각과 같은 직관은 논리적 추론이나 분석에 기반하지 않더라도 거래자가 미래 시장 추세에 대한 예감을 바탕으로 매수 또는 매도 결정을 내리도록 합니다.
외부인에게 시장 감각은 아무런 움직임 없이도 이길 수 있는 신비한 재능입니다. 이를 통해 시장에서 발판을 마련할 수 있습니다. 사실, 시장 감각은 뇌의 주관적인 거래 경험의 요약입니다. 그것은 수년간 시장을 관찰하면서 얻은 모호한 예측적 느낌입니다.
엄밀히 말해서 영감은 시장 감각과 완전히 동일하지는 않지만, 저는 시장에서 수천 번의 경험을 거치면 누구나 시장에 대한 이해가 깊어지고 전략 개발에 능숙해질 수 있다고 믿습니다. 따라서 이러한 재능을 습득하고 더 많은 거래 전략을 개발하고 싶다면 기회가 생길 때까지 연습하는 것 외에는 다른 방법이 없습니다. 방대한 양의 거래를 통해서만 거래 시스템이 완벽해질 수 있습니다.
하지만 국내 상품선물과 주식은 하루에 거래시간이 몇 시간밖에 되지 않습니다. 실제 거래를 통해 시장을 관찰하는 경험을 키우고, 나만의 수익모델과 거래규칙을 만들고, 조건반사를 무의식적으로 훈련한다면, 성공하기는 어려울 것이다. 나는 그것을 할 수 없다. 대부분의 거래자는 더 긴 시간적 비용을 지불해야 할 뿐만 아니라, 자본 손실 비용도 감수해야 합니다. 이러한 문제를 해결하기 위해, 발명자들은 데이터 재생 기능을 정량적으로 개발했다.
데이터 재생 기능은 거래소의 거래 시간에 제한을 받지 않고 학습할 수 있으며 다양한 상품 선물 및 디지털 통화 종류를 지원합니다. 시장 조건은 수동 또는 자동으로 재생할 수 있으며 과거 시장 조건의 시작 및 종료 시간과 재생 속도를 자유롭게 설정할 수 있습니다. 일반적으로 K-라인 데이터 재생 방법을 사용하는 다른 소프트웨어와 비교할 때 Inventor Quantitative는 실제 거래에 매우 가까운 백테스팅 환경인 틱 수준 데이터 재생 방법을 사용하여 가격 및 거래량 데이터를 재생하여 거래자가 몰입할 수 있도록 합니다. 경험.
Inventor Quantitative(fmz.com) 공식 웹사이트를 열고 등록 및 로그인한 후 제어 센터에서 데이터 탐색을 클릭하여 데이터 재생 기능 페이지를 표시합니다. 옵션 상자 4개와 선택 버튼이 있습니다. 먼저 선택 버튼을 클릭하여 실시간 재생을 지원하는 품종만 표시합니다. 그런 다음 왼쪽 상단 모서리에서 재생할 품종을 선택한 다음 시작 및 끝을 선택합니다. 다음 두 옵션 상자에서 데이터 시간을 선택합니다. 데이터 기간을 실시간 재생으로 선택하고 마지막으로 맨 오른쪽에 있는 Go 버튼을 클릭하여 데이터 재생 기능을 시작합니다.

데이터 레이블 아래에는 세 개의 섹션이 있습니다. 왼쪽에는 실행된 모든 주문이 시간순으로 표시된 거래 내역이 있습니다. 가운데에는 매수 및 매도에 대한 20단계의 심도 있는 시장 데이터가 있습니다. 오른쪽에는 데이터 재생 제어 영역이 있는데, 여기서 미디어 플레이어를 사용하는 것만큼 쉽게 수동 및 자동 데이터 재생 방법을 선택할 수 있습니다.

위치 인덱스를 앞뒤로 드래그하여 데이터 재생의 시작 시간을 빠르게 선택할 수 있습니다.

하단에서 커서를 오른쪽이나 왼쪽으로 움직여 데이터 재생 속도를 제어할 수도 있습니다. 시간 단위는 밀리초입니다. 데이터 재생을 빠르게 하거나 느리게 할 수 있습니다.

가격 변동에 영향을 미치는 요인은 다양합니다. 여기에는 글로벌 경제 환경, 국가 거시경제 정책, 관련 산업 정책, 수요와 공급 관계, 국제적 사건, 이자율과 환율, 인플레이션과 디플레이션, 시장 심리, 알려지지 않은 요인 등이 있습니다. , 최종 시장 상황 위의 가격은 강세와 약세의 경쟁의 결과입니다. 구매자가 판매자보다 많으면 가격은 상승하고, 반대로 판매자가 구매자보다 많으면 가격은 하락합니다. 그러면 거래 전략을 세우기 위해 가격만 분석하면 됩니다.
발명자가 지난달 바이낸스 거래소에서 btc_usdt 거래 쌍을 정량적으로 재생해 본 결과, 시장이 급등하거나 급락했을 때 Tick 데이터 주문장의 롱 측과 숏 측의 주문량이 명백히 비대칭적이라는 사실을 발견했습니다. 시장이 급등하면 롱 주문량이 숏 주문량보다 현저히 커지고, 시장이 급락하면 숏 주문량이 롱 주문량보다 현저히 작아집니다. 그러면 주문장에 있는 주문 수를 기준으로 단기간에 가격의 상승이나 하락을 예측할 수 있을까요?
대답은 ‘예’입니다.

우리는 심층적 틱 데이터를 수집하고, 롱 및 숏 주문의 볼륨을 계산하여 비교할 수 있습니다. 롱 및 숏 주문의 결합 볼륨이 매우 다르다면 잠재적인 매수 또는 매도 기회가 될 수 있습니다. 예를 들어 롱 주문의 수가 숏 주문의 수의 N배일 때, 우리는 시장의 대부분 사람들이 강세를 예상하고 있으며 단기적으로 가격이 상승할 확률이 증가할 것이라고 가정할 수 있습니다. 숏 주문의 수가 N배일 때, 장기 주문의 몇 배에 달하는, 현재 시점에서는 시장의 대부분 사람들이 하락세를 예상하고 있으며, 단기적으로 미래에 가격이 하락할 확률이 높아질 것으로 추정할 수 있습니다.
위의 전략 논리에 따라 코드로 구현을 시작해 보겠습니다. 순서대로 엽니다. fmz.com 웹사이트 > 로그인 > 제어 센터 > 정책 라이브러리 > 새 정책 > 오른쪽 상단의 드롭다운 메뉴를 클릭하고 Python 언어를 선택하여 정책 작성을 시작합니다. 이 전략은 가르치는 데 있어 시작점일 뿐이므로 최대한 간결하게 유지하려고 노력했습니다. 아래 코드의 주석에 주의하세요.
1단계: 정책 프레임워크 작성
# 策略主函数
def onTick():
pass
# 程序入口
def main():
while True: # 进入无限循环模式
onTick() # 执行策略主函数
Sleep(1000) # 休眠1秒
전략을 작성할 때는 큰 것부터 작은 것 순으로 작성해야 합니다. 마치 집을 짓는 것처럼 먼저 뼈대를 쌓고 그런 다음에 벽을 쌓는 것과 같습니다. 이 프레임워크에서는 main 함수와 onTick 함수라는 두 가지 함수를 사용합니다. main 함수는 프로그램의 진입점입니다. 즉, 프로그램은 여기부터 실행되고, 이후 무한 루프 모드로 들어가 onTick 함수를 반복적으로 실행합니다. 이제 onTick 함수에 전략 내용을 작성하기만 하면 됩니다.
2단계: 전역 변수 작성
vol_ratio_arr = [] # 多空挂单比率数组
mp = 0 # 虚拟持仓
vol_ratio_arr을 전역 변수로 정의한 이유는 제 전략이 일정 기간의 틱 데이터 동안 롱과 숏 주문의 비율을 수집해야 하기 때문입니다. vol_ratio_arr 변수를 onTick 함수에 넣으면 다음과 같이 실행하는 것은 분명히 비합리적입니다. 루프. 우리에게 필요한 것은 패턴에서 변수의 값은 특정 조건이 충족될 때만 변경됩니다. 가장 합리적인 접근 방식은 변수를 루프 밖에 두는 것입니다.
포지션 관리가 매우 필요한 이유는 매수 및 매도 로직과 관련이 있기 때문입니다. 일반적으로 현물 거래에서는 계좌를 취득하여 보유한 통화 쌍을 계산합니다. 코드를 단순화하기 위해, 구매 및 판매 논리를 제어하는 전역 가상 위치 변수를 여기에 직접 정의했습니다.
3단계: 현재 롱숏 비율 계산
depth = exchange.GetDepth() # 获取深度数据
asks = depth['Asks'] # 获取卖价数组
bids = depth['Bids'] # 获取买价数组
asks_vol = 0 # 所有卖价挂单
bids_vol = 0 # 所有买价挂单
for index, ask in enumerate(asks): # 遍历卖价数组
# 线性计算所有卖价挂单
asks_vol = asks_vol + ask['Amount'] * (20 - index)
for index, bid in enumerate(bids): # 遍历买价数组
# 线性计算所有买价挂单
bids_vol = bids_vol + bid['Amount'] * (20 - index)
bidask_ratio = bids_vol / asks_vol # 计算多空比率
우리 모두가 알다시피, 디지털 통화는 일반적으로 20단계의 깊이 데이터를 가지고 있으므로 롱과 숏 주문을 합산하여 롱과 숏의 비율을 계산할 수 있습니다. 이 값이 1보다 크면 더 많은 사람들이 강세를 보인다는 것을 의미합니다. 하락장세. 이는 단기적으로 가격이 미래에 상승할 것임을 나타냅니다. 이 값이 1보다 작으면 하락장세에 있는 사람의 수가 상승장세에 있는 사람의 수보다 많음을 의미하며 이는 가격이 미래에 하락할 것임을 나타냅니다. 단기적으로 미래의.
하지만 한 가지 구별해야 할 점이 있습니다. 보류 주문이 시장 가격에 가까울수록 강세 또는 약세 감정이 더 강해집니다. 예를 들어, 첫 번째 레벨에서 이루어진 매수 주문은 확실히 매수 주문보다 더 강한 강세 감정을 나타냅니다. 20레벨에서. 따라서 보류 주문을 누적할 때 20개의 주문에 선형적으로 다른 가중치를 부여해야 하며, 이는 더 합리적일 것입니다.
4단계: 시간 기간 동안 롱숏 비율을 선형적으로 계산합니다.
global vol_ratio_arr, mp # 引入全局变量
vol_ratio_arr.insert(0, bidask_ratio) # 把多空比率放到全局变量数组里面
if len(vol_ratio_arr) > 20: # 如果数组超过指定长度
vol_ratio_arr.pop() # 删除最旧的元素
all_ratio = 0 # 临时变量,所有多空挂单比率
all_num = 0 # 临时变量,所有线性乘数
for index, vol_ratio in enumerate(vol_ratio_arr): # 变量全局变量数组
num = 20 - index # 线性乘数
all_num = all_num + num # 线性乘数累加
all_ratio = all_ratio + vol_ratio * num # 所有多空挂单比率累加
ratio = all_ratio / all_num # 线性多空挂单比率
롱숏 비율은 누적 롱 주문을 누적 숏 주문으로 나누어 구할 수 있지만, 이는 1틱의 데이터일 뿐입니다. 1틱 데이터만으로 매수, 매도 거래를 결정하는 것은 현명한 선택이 아닐 수 있습니다. , 끊임없이 변화하는 시장에서 틱이 시장 추세를 바꿀 수 있기 때문입니다. 틱 데이터는 설득력이 없습니다. 따라서 일정 기간의 틱 데이터를 수집한 다음, 선형 계산을 사용하여 공정가치를 얻어야 합니다.
5단계: 주문하기
last_ask_price = asks[0]['Price'] # 最新卖一价,用于买入的价格
last_bid_price = bids[0]['Price'] # 最新买一价,用于卖出的价格
if mp == 0 and ratio > buy_threshold: # 如果当前无持币,并且比率大于指定值
exchange.Buy(last_ask_price, 0.01) # 买入
mp = 1 # 设置虚拟持仓的值
if mp == 1 and ratio < sell_threshold: # 如果当前持币,并且比率小于指定值
exchange.Sell(last_bid_price, 0.01) # 卖出
mp = 0 # 重置虚拟持仓的值
주문 시 가격을 지정해야 하므로, 매수 시에는 최신 매도 가격을 바로 사용할 수 있고, 매도 시에는 최신 매수 가격을 바로 사용할 수 있습니다. 마지막으로 주문이 이루어지고 거래가 완료되면 가상 포지션의 가치를 재설정합니다.
위는 데이터 재생 기능을 기반으로 개발된 선형 주문 흐름 전략의 코드 분석입니다. 거래 초보자라면 데이터 재생 기능을 통해 무료로 거래를 배우고 거래를 이해하는 데 걸리는 시간을 단축할 수 있습니다. 일반적으로 실제 또는 시뮬레이션 거래에서 거래를 배우는 데는 몇 년이 걸립니다. 초기 결과가 나타납니다. 데이터 재생 기능을 사용하면 몇 주 안에 동일한 효과를 얻을 수 있으므로 시간 낭비 없이 최소한의 손실로 거래를 배울 수 있습니다. 고급 트레이더의 경우 동적 검토를 통해 과거 문제를 분석하고, 트레이딩 전략을 검증하고 개선하고, 전략에 대한 트레이더의 확신을 높이고, 새로운 전략에 대한 영감을 얻는 데 도움이 될 수 있습니다.