# 交易方式模块(总览处理所有渠道的各种交易方法集合)
|
# import datetime
|
# import log
|
from gm.api import *
|
import data_cache
|
|
|
# 策略中必须有init方法
|
# def init(context):
|
# data_cache.context
|
|
|
# 下单买入函数(按金额量,以市价买)
|
def buy_order_by_market(current_data):
|
set_account_id('aaee2221-839c-11ee-a7cd-00163e022aa6')
|
order = order_value(symbol=current_data['symbol'],
|
value=30000,
|
side=OrderSide_Buy,
|
order_type=OrderType_Market,
|
position_effect=PositionEffect_Open,
|
# account=self.context.account().id
|
)
|
print(f"order===={order}")
|
print('下单成功', current_data['symbol'])
|
data_cache.position_symbols_set.add(current_data['symbol'])
|
data_cache.addition_position_symbols_set.add(current_data['symbol'])
|
print(f"当前持仓数量:::{len(data_cache.position_symbols_set)}")
|
print(f"今日新增持仓数量:::{len(data_cache.addition_position_symbols_set)}")
|
|
|
# 下单买入函数(按金额量,以市价买)
|
def buy_order_by_limit(current_data, price):
|
order = order_value(symbol=current_data['symbol'],
|
value=30000,
|
side=OrderSide_Buy,
|
order_type=OrderType_Limit,
|
price=price,
|
position_effect=PositionEffect_Open,
|
# account=self.context.account().id
|
)
|
print(f"order===={order}")
|
print('下单成功', current_data['symbol'])
|
data_cache.position_symbols_set.add(current_data['symbol'])
|
data_cache.addition_position_symbols_set.add(current_data['symbol'])
|
print(f"当前持仓数量:::{len(data_cache.position_symbols_set)}")
|
print(f"今日新增持仓数量:::{len(data_cache.addition_position_symbols_set)}")
|
|
|
# 下单卖出函数(按全部持仓数量,以限价卖)
|
def sell_order_by_all_volume(symbol, all_volume, sec_name, price):
|
order = order_volume(symbol=symbol,
|
volume=all_volume,
|
side=OrderSide_Sell,
|
order_type=OrderType_Limit,
|
price=price,
|
position_effect=PositionEffect_Close,
|
account=data_cache.account_id
|
)
|
print(f"order===={order}")
|
print(f"卖票执行成功:【{sec_name}】")
|
# 卖票后移除持仓代码集合
|
data_cache.position_symbols_set.remove(symbol)
|
print(f"卖后持仓数量:::{len(data_cache.position_symbols_set)}")
|
|
|
# 下单卖出函数(按部分持仓数量,以限价卖)【需要完成委托回调才能解决】
|
def sell_order_by_part_volume(symbol, part_volume, sec_name, price):
|
order_volume(symbol=symbol,
|
volume=part_volume,
|
side=OrderSide_Sell,
|
order_type=OrderType_Limit,
|
price=price,
|
position_effect=PositionEffect_Close,
|
account=data_cache.account_id
|
)
|
print(f"卖票执行成功:【{sec_name}】")
|
# 卖票后移除持仓代码集合
|
data_cache.position_symbols_set.remove(symbol)
|
print(f"卖后持仓数量:::{len(data_cache.position_symbols_set)}")
|
|
|
# 委托执行回报事件
|
def on_execution_report(context, execrpt):
|
context.exec_id.append(execrpt.exec_id)
|
# 后面可以执行其他处理逻辑
|
print(f"execrpt===={execrpt}")
|
|
|
# 交易账户状态更新事件
|
def on_account_status(context, account):
|
print(f"context====--{context}")
|
print(f"account====--{account}")
|
|
|
# 委托状态更新事件
|
def on_order_status(context, order):
|
# 可在后面执行其他处理逻辑
|
print(order)
|
print(f"context====————{context}")
|
print(f"account====————{order}")
|