等级: 标准版
- 注册:
- 2021-5-20
- 曾用名:
|
楼主 |
发表于 2021-7-13 11:33
|
显示全部楼层
请问我下面的代码是否可以实现:涨幅前5,且连续两根1分钟线收阳开多;跌幅前5,且连续两根1分钟线收阴开空。
import time
import os
import csv
import numpy as np
import talib as ta
# 在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。
def init(context):
#品种数
context.num = 5
context.code = []
# before_trading此函数会在每天策略交易开始前被调用,当天只会被调用一次
def before_trading(context):
pass
# 你选择的证券的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新
def handle_bar(context):
# 开始编写你的主要的算法逻辑
try:
context.code = get_blocks("主力合约板块",1)
zf = []
code = []
#筛选主力合约
for i in context.code:
code.append(i)
#获得实时涨幅
for j in code:
zf = get_dynainf(j, 14)
zf.append(zf)
zf_ra = np.array(zf)
#对涨幅进行排序,buy_list是排名前几的品种列表,sell_list是排名后几的品种列表
sort = np.argsort(zf_ra)
code = np.array(code)
buy_list = code[[sort[:context.num]]]
sell_list = code[[sort[-context.num:]]]
#获得持仓品种信息
ho =get_portfolio_book(0)
if len(ho)>0:
for k in ho:
if not(k in buy_list):
sell_close(k, 'Market', 0, 10, 0,serial_id = 1)
for l in ho:
if not(l in sell_list):
buy_close(k, 'Market', 0, 10, 0,serial_id = 2)
for kk in buy_list:
close1=history_bars(kk,3,'1m','CLOSE')
open1=history_bars(kk,3,'1m','open')
if not(kk in ho) and close1[-3]>open1[-3] and close1[-2]>open1[-2] :
buy_open(kk, 'Market', 0, 10, 0,serial_id = 3)
for ll in sell_list:
close2=history_bars(ll,3,'1m','CLOSE')
open2=history_bars(ll,3,'1m','open')
if not(ll in ho) and close1[-3]<open1[-3] and close1[-2]<open1[-2]:
sell_open(ll, 'Market', 0, 10, 0,serial_id = 4)
except:
pass
# after_trading函数会在每天交易结束后被调用,当天只会被调用一次
def after_trading(context):
pass |
|