forked from fmzquant/strategies
-
Notifications
You must be signed in to change notification settings - Fork 0
/
js R-Breaker.js
159 lines (121 loc) · 5.8 KB
/
js R-Breaker.js
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/*
策略出处: https://www.botvs.com/strategy/36195
策略名称: js R-Breaker
策略作者: 太极
策略描述:
R-Breaker
*/
NPeriod=2 //周期
f1=0.47 //中轨上下顶部区间系数
f2=0.07 //中轨上下区间系数
f3=0.25 //上下轨系数
//==========================================
//API: Chart 函数使用的简单例子(画图功能)
var chart = { // 这个 chart 在JS 语言中 是对象, 在使用Chart 函数之前我们需要声明一个配置图表的对象变量chart。
__isStock: true, // 标记是否为一般图表,有兴趣的可以改成 false 运行看看。
tooltip: {xDateFormat: '%Y-%m-%d %H:%M:%S, %A'}, // 缩放工具
title : { text : '行情分析图'}, // 标题
rangeSelector: { // 选择范围
buttons: [{type: 'hour',count: 1, text: '1h'}, {type: 'hour',count: 3, text: '3h'}, {type: 'hour', count: 8, text: '8h'}, {type: 'all',text: 'All'}],
selected: 0,
inputEnabled: false
},
xAxis: { type: 'datetime'}, // 坐标轴横轴 即:x轴, 当前设置的类型是 :时间
yAxis : { // 坐标轴纵轴 即:y轴, 默认数值随数据大小调整。
title:{text: '行情演算'}, // 标题
opposite:false, // 是否启用右边纵轴
},
series : [ // 数据系列,该属性保存的是 各个 数据系列(线, K线图, 标签等..)
{name:"0X",id:"0",color:'#FF83FA',data:[]},
{name:"1X",id:"1",color:'#FF3E96',dashStyle:'shortdash',data:[]},
{name:"2X",id:"2",color:'#FF0000',data:[]},
{name:"3X",id:"3",color:'#7D26CD',dashStyle:'shortdash',data:[]}, //
{name:"4X",id:"4",color:'#2B2B2B',data:[]},
{name:"5X",id:"5",color:'#707070',dashStyle:'shortdash',data:[]},
{name:"6X",id:"6",color:'#778899',data:[]},
{name:"7X",id:"7",color:'#0000CD',data:[]},
//RGB颜色对照表 http://www.114la.com/other/rgb.htm
]
};
/*
//Pivot Points策略
chart["series"][0]["name"]="阻力3:";
chart["series"][1]["name"]="阻力2:";
chart["series"][2]["name"]="阻力1:";
chart["series"][3]["name"]="枢轴点:";
chart["series"][4]["name"]="支撑位1:";
chart["series"][5]["name"]="支撑位2:";
chart["series"][6]["name"]="支撑位3:";
chart["series"][6]["name"]="当前价格:";
*/
///*
//R-Breaker策略
chart["series"][0]["name"]="Bbreak_A1:";
chart["series"][1]["name"]="Ssetup_A2:";
chart["series"][2]["name"]="Senter_A3:";
chart["series"][4]["name"]="Benter_B1:";
chart["series"][5]["name"]="Sbreak_B2:";
chart["series"][6]["name"]="Bsetup_B3:";
chart["series"][7]["name"]="当前价格:";
//*/
var ObjChart = Chart(chart); // 调用 Chart 函数,初始化 图表。
ObjChart.reset(); // 清空
function onTick(e){
var records = _C(e.GetRecords); //返回一个K线历史
var ticker = _C(e.GetTicker); //返回一个Ticker结构
var account = _C(e.GetAccount); //返回主交易所账户信息
var High = TA.Highest(records, NPeriod, 'High'); //最高价
var Close = TA.Lowest(records, NPeriod, 'Close'); //收盘价
var Low = TA.Lowest(records, NPeriod, 'Low'); //最低价
/*
//Pivot Points策略
//A上 7235 A中 7259 A下 7275 B上 7195 B中 7155 B下 7179
Pivot = (High+Close+Low)/3 //枢轴点
var Senter=High+2*(Pivot-Low) //阻力3
var Ssetup=Pivot+(High-Low) //阻力2
var Bbreak=2*Pivot-Low //阻力1
var Benter=2*Pivot-High //支撑位1
var Sbreak=Pivot-(High-Low) //支撑位2
var Bsetup=Low-2*(High-Pivot) //支撑位3
//画线
var nowTime = new Date().getTime(); //获取时间戳,
ObjChart.add([0, [nowTime,_N(Senter,3)]]); //阻力3
ObjChart.add([1, [nowTime,_N(Ssetup,3)]]); //阻力2
ObjChart.add([2, [nowTime,_N(Bbreak,3)]]); //阻力1
ObjChart.add([3, [nowTime,_N(Pivot,3)]]); //枢轴点
ObjChart.add([4, [nowTime,_N(Benter,3)]]); //支撑位1
ObjChart.add([5, [nowTime,_N(Sbreak,3)]]); //支撑位2
ObjChart.add([6, [nowTime,_N(Bsetup,3)]]); //支撑位3
ObjChart.add([7, [nowTime,_N(ticker.Last,3)]]); //最后成交价
ObjChart.update(chart); // 更新图表以显示出来。
*/
///*
//R-Breaker策略
//A上 7261.46 A中 7246.76 A下 7228.68 B上 7204.48 B中 7187.96 B下 7173.26
var Ssetup = High + f1 * (Close - Low); //A中
var Bsetup = Low - f1 * (High - Close); //B下
var Bbreak = Ssetup + f3 * (Ssetup - Bsetup); //A上
var Senter = ((1 + f2) / 2) * (High + Close) - f2 * Low; //A下
var Benter = ((1 + f2) / 2) * (Low + Close) - f2 * High; //B上
var Sbreak = Bsetup - f3 * (Ssetup - Bsetup); //B中
//画线
var nowTime = new Date().getTime(); //获取时间戳,
ObjChart.add([0, [nowTime,_N(Bbreak,3)]]); //A上
ObjChart.add([1, [nowTime,_N(Ssetup,3)]]); //A中
ObjChart.add([2, [nowTime,_N(Senter,3)]]); //A下
//ObjChart.add([3, [nowTime,_N(Pivot,3)]]); //枢轴点
ObjChart.add([4, [nowTime,_N(Benter,3)]]); //B上
ObjChart.add([5, [nowTime,_N(Sbreak,3)]]); //B中
ObjChart.add([6, [nowTime,_N(Bsetup,3)]]); //B下
ObjChart.add([7, [nowTime,_N(ticker.Last,3)]]); //最后成交价
ObjChart.update(chart); // 更新图表以显示出来。
//*/
Log('A上',_N(Bbreak,3),'A中',_N(Ssetup,3),'A下',_N(Senter,3),'B上',_N(Benter,3),'B中',_N(Bsetup,3),'B下',_N(Sbreak,3));
}
function main() {
Log("策略启动");
while(true){
onTick(exchanges[0]);
Sleep(1000);
}
}