日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 网格交易源码下载_GitHub - xiongyixiaoyang/grid-trading: 网格交易(期货) ,基于网格交易方法的交易策略...

發布時間:2023/12/1 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 网格交易源码下载_GitHub - xiongyixiaoyang/grid-trading: 网格交易(期货) ,基于网格交易方法的交易策略... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

# coding=utf-8

from __future__ import print_function, absolute_import, unicode_literals

import numpy as np

import pandas as pd

from gm.api import *

'''

本策略首先計算了過去300個價格數據的均值和標準差

并根據均值加減1和2個標準差得到網格的區間分界線,

并分別配以0.3和0.5的倉位權重

然后根據價格所在的區間來配置倉位(+/-40為上下界,無實際意義):

(-40,-3],(-3,-2],(-2,2],(2,3],(3,40](具體價格等于均值+數字倍標準差)

[-0.5, -0.3, 0.0, 0.3, 0.5](資金比例,此處負號表示開空倉)

回測數據為:SHFE.rb1801的1min數據

回測時間為:2017-07-01 08:00:00到2017-10-01 16:00:00

'''

def init(context):

context.symbol = 'SHFE.rb1801'

# 訂閱SHFE.rb1801, bar頻率為1min

subscribe(symbols=context.symbol, frequency='60s')

# 獲取過去300個價格數據

timeseries = history_n(symbol=context.symbol, frequency='60s', count=300, fields='close', fill_missing='Last',

end_time='2017-07-01 08:00:00', df=True)['close'].values

# 獲取網格區間分界線

context.band = np.mean(timeseries) + np.array([-40, -3, -2, 2, 3, 40]) * np.std(timeseries)

# 設置網格的倉位

context.weight = [0.5, 0.3, 0.0, 0.3, 0.5]

def on_bar(context, bars):

bar = bars[0]

# 根據價格落在(-40,-3],(-3,-2],(-2,2],(2,3],(3,40]的區間范圍來獲取最新收盤價所在的價格區間

grid = pd.cut([bar.close], context.band, labels=[0, 1, 2, 3, 4])[0]

# 獲取多倉倉位

position_long = context.account().position(symbol=context.symbol, side=PositionSide_Long)

# 獲取空倉倉位

position_short = context.account().position(symbol=context.symbol, side=PositionSide_Short)

# 若無倉位且價格突破則按照設置好的區間開倉

if not position_long and not position_short and grid != 2:

# 大于3為在中間網格的上方,做多

if grid >= 3:

order_target_percent(symbol=context.symbol, percent=context.weight[grid], order_type=OrderType_Market,

position_side=PositionSide_Long)

print(context.symbol, '以市價單開多倉到倉位', context.weight[grid])

if grid <= 1:

order_target_percent(symbol=context.symbol, percent=context.weight[grid], order_type=OrderType_Market,

position_side=PositionSide_Short)

print(context.symbol, '以市價單開空倉到倉位', context.weight[grid])

# 持有多倉的處理

elif position_long:

if grid >= 3:

order_target_percent(symbol=context.symbol, percent=context.weight[grid], order_type=OrderType_Market,

position_side=PositionSide_Long)

print(context.symbol, '以市價單調多倉到倉位', context.weight[grid])

# 等于2為在中間網格,平倉

elif grid == 2:

order_target_percent(symbol=context.symbol, percent=0, order_type=OrderType_Market,

position_side=PositionSide_Long)

print(context.symbol, '以市價單全平多倉')

# 小于1為在中間網格的下方,做空

elif grid <= 1:

order_target_percent(symbol=context.symbol, percent=0, order_type=OrderType_Market,

position_side=PositionSide_Long)

print(context.symbol, '以市價單全平多倉')

order_target_percent(symbol=context.symbol, percent=context.weight[grid], order_type=OrderType_Market,

position_side=PositionSide_Short)

print(context.symbol, '以市價單開空倉到倉位', context.weight[grid])

# 持有空倉的處理

elif position_short:

# 小于1為在中間網格的下方,做空

if grid <= 1:

order_target_percent(symbol=context.symbol, percent=context.weight[grid], order_type=OrderType_Market,

position_side=PositionSide_Short)

print(context.symbol, '以市價單調空倉到倉位', context.weight[grid])

# 等于2為在中間網格,平倉

elif grid == 2:

order_target_percent(symbol=context.symbol, percent=0, order_type=OrderType_Market,

position_side=PositionSide_Short)

print(context.symbol, '以市價單全平空倉')

# 大于3為在中間網格的上方,做多

elif grid >= 3:

order_target_percent(symbol=context.symbol, percent=0, order_type=OrderType_Market,

position_side=PositionSide_Short)

print(context.symbol, '以市價單全平空倉')

order_target_percent(symbol=context.symbol, percent=context.weight[grid], order_type=OrderType_Market,

position_side=PositionSide_Long)

print(context.symbol, '以市價單開多倉到倉位', context.weight[grid])

if __name__ == '__main__':

'''

strategy_id策略ID,由系統生成

filename文件名,請與本文件名保持一致

mode實時模式:MODE_LIVE回測模式:MODE_BACKTEST

token綁定計算機的ID,可在系統設置-密鑰管理中生成

backtest_start_time回測開始時間

backtest_end_time回測結束時間

backtest_adjust股票復權方式不復權:ADJUST_NONE前復權:ADJUST_PREV后復權:ADJUST_POST

backtest_initial_cash回測初始資金

backtest_commission_ratio回測傭金比例

backtest_slippage_ratio回測滑點比例

'''

run(strategy_id='strategy_id',

filename='main.py',

mode=MODE_BACKTEST,

token='token_id',

backtest_start_time='2017-07-01 08:00:00',

backtest_end_time='2017-10-01 16:00:00',

backtest_adjust=ADJUST_PREV,

backtest_initial_cash=10000000,

backtest_commission_ratio=0.0001,

backtest_slippage_ratio=0.0001)

總結

以上是生活随笔為你收集整理的python 网格交易源码下载_GitHub - xiongyixiaoyang/grid-trading: 网格交易(期货) ,基于网格交易方法的交易策略...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。