没错!你听的没错是30行代码!仅仅30行小编我习惯先通篇来看看 代码,这样能有个宏观的了解!
策略参数如下
参数 | 描述 | 类型 | 默认值 |
---|---|---|---|
FastPeriod | 入市快线周期 | 数字型(number) | 3 |
SlowPeriod | 入市慢线周期 | 数字型(number) | 7 |
EnterPeriod | 入市观察期 | 数字型(number) | 3 |
ExitFastPeriod | 离市快线周期 | 数字型(number) | 3 |
ExitSlowPeriod | 离市慢线周期 | 数字型(number) | 7 |
ExitPeriod | 离市观察期 | 数字型(number) | 1 |
PositionRatio | 仓位比例 | 数字型(number) | 0.8 |
Interval | 轮询周期(秒) | 数字型(number) | 10 |
交易类库
方便策略编写, 不用为 是否买到 是否卖出等 挂单 烦恼了。function main() {
var STATE_IDLE = -1;
var state = STATE_IDLE;
var opAmount = 0;
var initAccount = $.GetAccount();
Log(initAccount);
while (true) {
if (state === STATE_IDLE) {
var n = $.Cross(FastPeriod, SlowPeriod);
if (Math.abs(n) >= EnterPeriod) {
opAmount = parseFloat((initAccount.Stocks * PositionRatio).toFixed(3));
var obj = n > 0 ? $.Buy(opAmount) : $.Sell(opAmount);
if (obj) {
opAmount = obj.amount;
state = n > 0 ? PD_LONG : PD_SHORT;
Log("开仓详情", obj, "交叉周期", n);
}
}
} else {
var n = $.Cross(ExitFastPeriod, ExitSlowPeriod);
if (Math.abs(n) >= ExitPeriod && ((state === PD_LONG && n < 0) || (state === PD_SHORT && n > 0))) {
var obj = state === PD_LONG ? $.Sell(opAmount) : $.Buy(opAmount);
state = STATE_IDLE;
var nowAccount = $.GetAccount();
LogProfit(nowAccount.Balance - initAccount.Balance, '钱:', nowAccount.Balance, '币:', nowAccount.Stocks, '平仓详情:', obj, "交叉周期", n);
}
}
Sleep(Interval*1000);
}
}
变量声明
用关键字 var
+ 变量名 例如 var name = “小明”
循环
while(循环条件){
// 将会重复执行的代码
}
循环条件为真则反复执行{}内的代码。 循环条件为假 则跳出循环。
条件分支
if (判断条件){
// 执行代码
} else {
// 执行代码
}
很简单,翻译就是 如果(真){执行这代码}其 它情况{执行这代码}
赋值
一个=
号是 赋值,例如
name = “张三”;
就是把“张三”这个名字 给 name, 赋值容易与比较相等搞混
如 比较 为 ==
两个等号,
例子 “张三”==“李四”
明显张三不是李四 所以 “张三”==“李四”
为假。
相关API
在演示写策略之前我们梳理下策略中用到的API和模板导出函数, 在 发明者量化 上有详细的API文档和模板源码说明。
策略代码还用到了Javascript的库函数、对象方法。
以上Javascript的相关资料可以在:JavaScript Number 对象 http://www.w3school.com.cn/jsref/jsref_obj_number.asp 上学习
程序的流程图 手绘的 没用工具画 很业余 见谅!
一步一步的搭建我们的策略
所有的策略程序入口处都是 main()
函数,也就是说策略先从main函数开始运行。
实盘
至此简单的30行策略就完成了!把代码部署到托管机器人上, Running!策略开始运行了,买入操作。。。。
感谢 发明者量化,提供这么精简的代码,在 发明者量化 上有大量的开源策略可供学习提升,与众多量化高手一同进步。
官方QQ群定期更新学习资源,为量化学习者铺平道路,登堂入室。
配套视频教学
http://v.youku.com/v_show/id_XMTUyNDY1NjQ2NA==.html
参考资料
FMZ_JH API中的$.GetAccount函数是不是更新成exchange.GetAccount()了?
wojiushizhemedeshuaiqidemeinanzi 代码看懂了 但是不知道这个策略究竟实现了什么功能
:) 感谢小小梦,你的文章写得真好。
lrj2u 楼主的教程写得太好了,谢谢!
bincoin 谢谢楼主,我要好好学习
短线王赢出售高价策略 够详细。早早有就美死了
发明者量化-小小梦 $.GetAccount 是FMZ 模板的导出函数(模板就是可复用的代码,参看API 文档上模板的描述)。 $.GetAccount是这个模板:https://www.fmz.com/strategy/10989 的导出函数。 上面的策略只是代码部分,没有策略参数设置,完整的策略可以在策略广场搜索30行均线策略。
wojiushizhemedeshuaiqidemeinanzi 原来这样啊 非常感谢
发明者量化-小小梦 就是2条均线,快线上穿慢线 一般是买入信号,上涨概率较大(程序自动买入操作)。 快线下穿慢线一般是卖出信号,下跌概率较大(程序自动卖出)。通过这样反复操作 在行情上升趋势中可以攫取利润。
发明者量化-小小梦 不客气,以后还要做更多的学习资料,谢谢支持!
发明者量化-小小梦 以后继续出品!谢谢支持。