程序员的量化世界

30行代码实现一个比特币量化策略

2019-05-10  本文已影响5人  发明者量化FMZ

精简极致的均线策略 30行打造一个正向收益系统

原帖地址:https://www.fmz.com/bbs-topic-new/262

没错!你听的没错是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和模板导出函数, 在 BotVS 上有详细的API文档和模板源码说明。

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

以上Javascript的相关资料可以在:JavaScript Number 对象 http://www.w3school.com.cn/jsref/jsref_obj_number.asp 上学习

上一篇 下一篇

猜你喜欢

热点阅读