请各大神帮忙把这个策略改为金字塔代码
套利策略:https://uqer.io/community/share/5833aa0f228e5ba297a91aeb
由于帖子内容长度不能大于116240,您已经输入了148410个字----所以分两段
universe = ['RBM0', 'IM0', 'JM0']
def initialize(futures_account):
futures_account.symbol0 = 'RB1405'
futures_account.symbol1 = 'I1405'
futures_account.symbol2 = 'J1405'
def handle_data(futures_account):
long_position_0 = futures_account.position.get(futures_account.symbol0, dict()).get('long_position', 0)
short_position_0 = futures_account.position.get(futures_account.symbol0, dict()).get('short_position', 0)
long_position_1 = futures_account.position.get(futures_account.symbol1, dict()).get('long_position', 0)
short_position_1 = futures_account.position.get(futures_account.symbol1, dict()).get('short_position', 0)
long_position_2 = futures_account.position.get(futures_account.symbol2, dict()).get('long_position', 0)
short_position_2 = futures_account.position.get(futures_account.symbol2, dict()).get('short_position', 0)
if get_symbol(universe[0]) != futures_account.symbol0 or get_symbol(universe[1]) != futures_account.symbol1 or get_symbol(universe[2]) != futures_account.symbol2:
print futures_account.current_date, '主力更换, 平仓'
order(futures_account.symbol0, -long_position_0, 'close')
order(futures_account.symbol1, short_position_1, 'close')
order(futures_account.symbol2, short_position_2, 'close')
if short_position_0 != 0:
print futures_account.current_date, '主力更换, 平仓'
order(futures_account.symbol0, short_position_0, 'close')
order(futures_account.symbol1, -long_position_1, 'close')
order(futures_account.symbol2, -long_position_2, 'close')
futures_account.symbol0 = get_symbol(universe[0])
futures_account.symbol1 = get_symbol(universe[1])
futures_account.symbol2 = get_symbol(universe[2])
futures_account.symbol0 = get_symbol(universe[0])
futures_account.symbol1 = get_symbol(universe[1])
futures_account.symbol2 = get_symbol(universe[2])
close_hist0 = get_symbol_history(symbol=futures_account.symbol0, field=['closePrice'], time_range=1)
close_hist1 = get_symbol_history(symbol=futures_account.symbol1, field=['closePrice'], time_range=1)
close_hist2 = get_symbol_history(symbol=futures_account.symbol2, field=['closePrice'], time_range=1)
close0 = np.array(close_hist0[futures_account.symbol0]['closePrice'])[-1]
close1 = np.array(close_hist1[futures_account.symbol1]['closePrice'])[-1]
close2 = np.array(close_hist2[futures_account.symbol2]['closePrice'])[-1]
if short_position_0 == 0 and close0 - 1.6 * close1 - 0.5 * close2 - 1100 > 300:
print futures_account.current_date, '做空螺纹'
print close0 - 1.6 * close1 - 0.5 * close2 - 1100
order(futures_account.symbol0, -20, 'open')
order(futures_account.symbol1, 3, 'open')
order(futures_account.symbol2, 1, 'open')
if long_position_0 == 0 and close0 - 1.6 * close1 - 0.5 * close2 - 1100 < -250:
print futures_account.current_date, '做多螺纹'
print close0 - 1.6 * close1 - 0.5 * close2 - 1100
order(futures_account.symbol0, 20, 'open')
order(futures_account.symbol1, -3, 'open')
order(futures_account.symbol2, -1, 'open')
# 平仓
if close0 - 1.6 * close1 - 0.5 * close2 - 1100 < 100:
if short_position_0 != 0:
print futures_account.current_date, '平仓'
print close0 - 1.6 * close1 - 0.5 * close2 - 1100
order(futures_account.symbol0, short_position_0, 'close')
order(futures_account.symbol1, -long_position_1, 'close')
order(futures_account.symbol2, -long_position_2, 'close')
if close0 - 1.6 * close1 - 0.5 * close2 - 1100 > 100:
print futures_account.current_date, '平仓'
print close0 - 1.6 * close1 - 0.5 * close2 - 1100
order(futures_account.symbol0, short_position_0, 'close')
if short_position_1 != 0:
order(futures_account.symbol1, -long_position_1, 'close')
if short_position_2 != 0:
order(futures_account.symbol2, -long_position_2, 'close')
这是Python语言编写的策略,软件暂时不支持。今年下半年会推出Python版,请您关注我们。
如果您想提前使用Python,请留下您的联系方式,我们一推出就会优先联系您的。
[此贴子已经被作者于2018/5/31 16:03:25编辑过]