-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstrategy.go
80 lines (67 loc) · 1.42 KB
/
strategy.go
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
package bt
type account struct {
// 持仓量
pos float64
}
// demo 实现了 Strategy 接口
// demo 会更具两条均线的金叉与死叉来进行交易
type demo struct {
account
// 可调参数
fastWindow, slowWindow int
// 内部变量
fastMA0, fastMA1 float64
slowMA0, slowMA1 float64
}
// TODO: 完成这个方法
func (d *demo) log(str string) {
}
// TODO: 完成这个方法
func (d *demo) loadBar(day int) {
}
func (d *demo) OnInit() {
d.log("策略初始化")
d.loadBar(10)
}
func (d *demo) OnStart() {
d.log("策略启动")
}
func (d *demo) OnStop() {
d.log("策略停止")
}
func (d *demo) OnBar(line string) {
// 利用 line 更新指标
// if ! am.inited {
// return
// }
// 获取均线值
d.fastMA0, d.fastMA1 = -1, -2
d.slowMA0, d.slowMA1 = -1, -2
// 金叉
crossOver := d.fastMA1 < d.slowMA1 && d.fastMA0 >= d.slowMA0
crossBelow := d.fastMA1 > d.slowMA1 && d.fastMA0 <= d.slowMA0
if crossOver {
d.log("发生了金叉,准备买入")
d.pos = -1
// price := bar.close + 5
// if d.pos == 0 {
// d.buy("梭哈")
// }else if d.pos < 0 {
// d.cover("全部")
// d.buy("梭哈")
// }
} else if crossBelow {
d.log("发生了死叉,准备卖出")
// price := bar.close - 5
// if d.pos == 0 {
// d.short("梭哈")
// }else if d.pos > 0 {
// d.sell("全部")
// d.short("梭哈")
// }
}
d.putEvent()
}
// 通知界面更新
func (d *demo) putEvent() {
}