收藏本站腾讯微博新浪微博

经典论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

蓝色理想 最新研发动态 网站开通淘帖功能 - 蓝色理想插件 论坛内容导读一页看论坛 - 给官方提建议

论坛活动及任务 地图和邮件任务 请多用悬赏提问 热夏来袭,选一款蓝色理想的个性T恤吧!

手机上论坛,使用APP获得更好体验 急需前端攻城狮,获得内部推荐机会 论坛开通淘帖功能,收藏终于可以分类了!

搜索
查看: 1285|回复: 0

[讨论] 干货分享:苦逼JS码农也可以快乐写代码变身宽客

[复制链接]
发表于 2016-5-13 16:18:27 | 显示全部楼层 |阅读模式
本帖最后由 summerXXX 于 2016-5-13 16:20 编辑

干货分享:苦逼码农也可以快乐写代码变身宽客

作为一个前端码农,每天的撸代码是很枯燥的。虽然本人对编程很有兴趣,无奈生活,只能重复劳作。
码农也需要激情~~~哈哈,偶然间在网上瞎逛 , 看到这个BotVS代码 ,很有意思,在出处的平台上 玩了玩,原来JS
也可以写这么有趣的代码,不是每天在前端堆里挣扎。不多说了看代码。

QQ图片20160513095737.png

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);
    }
}

主函数内只有一个循环。
为了照顾没有Javascript语言基础的同学我们在此简单讲下语法,以免有同学看不明白代码。


变量声明

用关键字 `var` + 变量名 例如 `var name = “小明”`
循环

while(循环条件){
    // 将会重复执行的代码
}
```

循环条件为真则反复执行{}内的代码。 循环条件为假  则跳出循环。

条件分支
if (判断条件){
    // 执行代码
} else {
    // 执行代码
}

很简单,翻译就是     如果(真){执行这代码}其      它情况{执行这代码}
   
赋值
  
一个`=`号是 赋值,例如

name = “张三”;


就是把“张三”这个名字 给 name,  赋值容易与比较相等搞混
如 比较 为 `==` 两个等号,
例子 `“张三”==“李四”` 明显张三不是李四 所以 `“张三”==“李四”`  为假。

相关API
- $.GetAccount函数:模板导出函数,用于获得交易所账户信息
- Log函数:API,用于向日志输出信息,显示数值等
- $.Cross函数:模板导出函数,用于检测均线指标交叉情况
- $.Buy函数:模板导出函数,用于购买操作
- $.Sell函数:模板导出函数,用于卖出操作
- LogProfit函数:API,用于输出收益,函数从第二个参数可以加其它信息
- Sleep函数:API,让程序暂停一会儿,参数单位为毫秒。

策略代码还用到了Javascript的库函数、对象方法。

- Math.abs()函数:返回参数的绝对值
- Number对象的 toFixed()函数:按参数 保留小数位数四舍五入。注意,函数返回的为字符串
- parseFloat全局函数:把  字符串参数 返回浮点数。

程序的流程图 手绘的 没用工具画 很业余 见谅!

1.png
2.png
3.png
4.png
5.png
bc794e735dc215d2f4595a70172a60bbb41c50a4.jpg

运行


参考资料

- [github上的代码库]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|Archiver|手机版|blueidea.com ( ICP05002321 )  

GMT+8, 2019-12-6 06:17 , Processed in 0.098383 second(s), 10 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表