1
lhr
2024-07-12 9ea34726d18efeab27a94abdcd7d3685ea51b3bd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# 交易方式模块(总览处理所有渠道的各种交易方法集合)
# 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}")