河水并不需要计划自己的行进路线,却毫无例外的到达海洋。价格也同样如此,它总是沿着最小阻力线去运动,它总是怎么容易怎么来。如果上升的阻力比下跌的阻力小,价格就会上涨,反之亦然。通常一个大幅度的反转形态,意味着随后会有更大幅度的运动。无论是上升趋势,还是下降趋势,在每一次重大的趋势运动之后,都将产生一定程度的回撤。回撤与原有价格幅度往往构成一定程度的百分比,就称之为百分比回撤。 点击阅读更多内容
/*backtest start: 2016-01-01 09:00:00 end: 2019-01-01 15:00:00 period: 1h exchanges: [{"eid":"Futures_CTP","currency":"FUTURES","minfee":10,"fee":[0,0]}] */ function main() { // 参数 cycleLength = 50; // 周期长度 backRatio = 1; // 回撤比率 contractType = 'rb000/rb888,ru000/ru888'; // 合约类型 unit = 1; // 下单数量 // 仓位表 var contractType_Dic = {}; // 创建一个空对象,用于接收不同的合约类型 var contractType_Array1 = contractType.split(","); // 分割合约类型参数 var contractType_Array2 = []; // 创建一个空数组,用于接收不同的交易合约 for (var i = 0; i < contractType_Array1.length; i++) { // 遍历每个设置的合约 contractType_Array2.push(contractType_Array1[i].split('/')[1]); // 分别存储交易合约 } contractType_Array2.toString(); // 把数组转变为字符串 for (var key in contractType_Array2) { // 遍历字符串 contractType_Dic[contractType_Array2[key]] = { falsePosition: 0 // 把每个交易合约的初始仓位赋值为0 } } // CTA框架 $.CTA(contractType, function(st) { var bars = st.records; // 获取K线数组 var j = bars[bars.length - 2].Close; // 获取上根K线收盘价 var high = TA.Highest(bars, cycleLength, 'High'); // 计算N日内的最高价 var low = TA.Lowest(bars, cycleLength, 'Low'); // 计算N日内的最低价 var highBack = high * (1 - backRatio / 100); // 计算N日内的最高价的回撤1%的值 var lowBack = low * (1 + backRatio / 100); // 计算N日内的最低价的回撤1%的值 // 过滤K线数量 if (!bars || bars.length < cycleLength + 1) { return; } //多头平仓 if (contractType_Dic[st.symbol].falsePosition > 0 && j < (lowBack + highBack) / 2) { contractType_Dic[st.symbol].falsePosition = 0; return -unit; } //空头平仓 if (contractType_Dic[st.symbol].falsePosition < 0 && j > (lowBack + highBack) / 2) { contractType_Dic[st.symbol].falsePosition = 0; return unit; } //多头开仓 if (contractType_Dic[st.symbol].falsePosition == 0 && j > lowBack && j > highBack) { contractType_Dic[st.symbol].falsePosition = 1; return unit; } //空头开仓 if (contractType_Dic[st.symbol].falsePosition == 0 && j < lowBack && j < highBack) { contractType_Dic[st.symbol].falsePosition = -1; return -unit; } }); }template: strategy.tpl:40:21: executing "strategy.tpl" at <.api.GetStrategyListByName>: wrong number of args for GetStrategyListByName: want 7 got 6