@@ -144,19 +144,33 @@ class Strategy(StrategyTemplate):
144
144
145
145
``` python
146
146
# 引入策略模板
147
+ import time
148
+ import datetime as dt
149
+ from dateutil import tz
150
+ from easyquant import DefaultLogHandler
147
151
from easyquant import StrategyTemplate
148
152
149
- # 定义策略类
153
+
150
154
class Strategy (StrategyTemplate ):
151
- name = ' 测试策略1' # 定义策略名字
152
-
155
+ name = ' 测试策略1'
156
+
153
157
def init (self ):
154
- # 进行相关的初始化定义
155
- self .buy_stocks = [] # 假如一个股票一天只想买入一次。定义一个列表用来存储策略买过的股票
156
-
157
- # 策略函数,收到行情推送后会自动调用
158
+ # 通过下面的方式来获取时间戳
159
+ now_dt = self .clock_engine.now_dt
160
+ now = self .clock_engine.now
161
+ now = time.time()
162
+
163
+ # 注册时钟事件
164
+ clock_type = " 盘尾"
165
+ moment = dt.time(14 , 56 , 30 , tzinfo = tz.tzlocal())
166
+ self .clock_engine.register_moment(clock_type, moment)
167
+
168
+ # 注册时钟间隔事件, 不在交易阶段也会触发, clock_type == minute_interval
169
+ minute_interval = 1.5
170
+ self .clock_engine.register_interval(minute_interval, trading = False )
171
+
158
172
def strategy (self , event ):
159
- """ :param event event.data 为所有股票行情的字典 ,结构如下
173
+ """ :param event event.data 为所有股票的信息 ,结构如下
160
174
{'162411':
161
175
{'ask1': '0.493',
162
176
'ask1_volume': '75500',
@@ -189,18 +203,15 @@ class Strategy(StrategyTemplate):
189
203
'turnover': '420004912',
190
204
'volume': '206390073.351'}}
191
205
"""
192
- # 使用 self.user 来操作账户,用法见 easytrader 用法
206
+ # 使用 self.user 来操作账户,用法同 easytrader 用法
193
207
# 使用 self.log.info('message') 来打印你所需要的 log
208
+ print (' demo1 的 log 使用自定义 log 的方式记录在 demo1.log' )
194
209
self .log.info(' \n\n 策略1触发' )
195
210
self .log.info(' 行情数据: 万科价格: %s ' % event.data[' 000002' ])
196
211
self .log.info(' 检查持仓' )
197
212
self .log.info(self .user.balance)
198
- # 在未买入的情况下买入万科
199
- if ' 000002' not in self .buy_stocks:
200
- # self.user.buy('000002')
201
- self .buy_stocks.append(' 000002' )
213
+ self .log.info(' \n ' )
202
214
203
- # 时钟引擎,用于推送开市、收市以及其他定时事件
204
215
def clock (self , event ):
205
216
""" 在交易时间会定时推送 clock 事件
206
217
:param event: event.data.clock_event 为 [0.5, 1, 3, 5, 15, 30, 60] 单位为分钟, ['open', 'close'] 为开市、收市
@@ -212,11 +223,20 @@ class Strategy(StrategyTemplate):
212
223
elif event.data.clock_event == ' close' :
213
224
# 收市了
214
225
self .log.info(' close' )
215
- # 收盘时清空已买股票列表 self.buy_stocks
216
- self .buy_stocks.clear()
217
226
elif event.data.clock_event == 5 :
218
227
# 5 分钟的 clock
219
228
self .log.info(" 5分钟" )
229
+
230
+ def log_handler (self ):
231
+ """ 自定义 log 记录方式"""
232
+ return DefaultLogHandler(self .name, log_type = ' stdout' , filepath = ' demo1.log' )
233
+
234
+ def shutdown (self ):
235
+ """
236
+ 关闭进程前的调用
237
+ :return:
238
+ """
239
+ self .log.info(" 假装在关闭前保存了策略数据" )
220
240
```
221
241
222
242
#### 加载指定策略
0 commit comments