diff --git a/10行人品策略.js b/10行人品策略.js new file mode 100644 index 0000000..7874e6b --- /dev/null +++ b/10行人品策略.js @@ -0,0 +1,25 @@ +/* +策略出处: https://www.botvs.com/strategy/14436 +策略名称: 10行人品策略 +策略作者: 春哥 +策略描述: + +赚不赚钱看人品 + + +参数 默认值 描述 +-------- ----- ------- +Interval 300 轮询周期(秒) +*/ + +function main() { + while (true) { + Sleep(Interval * 1000); + if (Math.random() > 0.5) $.Buy(1000000); else { + $.Sell(1000000); + var a = $.GetAccount(); + if (a) LogProfit( a.Balance , 'CNY:', a.Balance, 'BTC:', a.Stocks); + } + } +} + diff --git a/MACD 双向 滑动止损.js b/MACD 双向 滑动止损.js index c7c7ac2..5c14f03 100644 --- a/MACD 双向 滑动止损.js +++ b/MACD 双向 滑动止损.js @@ -35,10 +35,10 @@ function MACD_Cross(){ var dea = macd[1]; var column = macd[2]; var len = records.length; - if( (dif[len-1] > 0 && dea[len-1] > 0) && dif[len-1] > dea[len-1] && dif[len-2] < dea[len-2] && column[len-1] > 0.2 ){ + if( (dif[len-1] > 0 && dea[len-1] > 0) && dif[len-1] > dea[len-1] && dif[len-2] < dea[len-2] && column[len-1] > 0.08 ){ return 1; } - if( (dif[len-1] < 0 && dea[len-1] < 0) && dif[len-1] < dea[len-1] && dif[len-2] > dea[len-2] && column[len-1] < -0.2 ){ + if( (dif[len-1] < 0 && dea[len-1] < 0) && dif[len-1] < dea[len-1] && dif[len-2] > dea[len-2] ){ return 2; } return 0; @@ -125,14 +125,7 @@ var holdOrder = { this.level = 1; } }; -function getTimeByNormal(time){ - var timeByNormal = new Date(); - timeByNormal.setTime(time); - var strTime = timeByNormal.toString(); - var showTimeArr = strTime.split(" "); - var showTime = showTimeArr[3]+"-"+showTimeArr[1]+"-"+showTimeArr[2]+"-"+showTimeArr[4]; - return showTime; -} + function scan(){ var sellInfo = null; var buyInfo = null; @@ -152,7 +145,7 @@ function scan(){ holdOrder.orderState = ORDER_VALID; holdOrder.price = buyInfo.price; holdOrder.amount = buyInfo.amount; - holdOrder.time = getTimeByNormal((new Date()).getTime()); + holdOrder.time = $.getTimeByNormal((new Date()).getTime()); state = singal === 1 ? STATE_BUY : STATE_SELL; var account = $.GetAccount(exchange); @@ -171,7 +164,7 @@ function scan(){ holdOrder.orderState = ORDER_INVALID; holdOrder.price = sellInfo.price; holdOrder.amount = sellInfo.amount; - holdOrder.time = getTimeByNormal((new Date()).getTime()); + holdOrder.time = $.getTimeByNormal((new Date()).getTime()); profit = holdOrder.updateCurrentProfit(lastPrice,sellInfo.amount); state = STATE_FREE; @@ -184,7 +177,7 @@ function scan(){ holdOrder.orderState = ORDER_INVALID; holdOrder.price = sellInfo.price; holdOrder.amount = sellInfo.amount; - holdOrder.time = getTimeByNormal((new Date()).getTime()); + holdOrder.time = $.getTimeByNormal((new Date()).getTime()); profit = holdOrder.updateCurrentProfit(lastPrice,sellInfo.amount); state = STATE_FREE; @@ -197,7 +190,7 @@ function scan(){ holdOrder.orderState = ORDER_INVALID; holdOrder.price = sellInfo.price; holdOrder.amount = sellInfo.amount; - holdOrder.time = getTimeByNormal((new Date()).getTime()); + holdOrder.time = $.getTimeByNormal((new Date()).getTime()); profit = holdOrder.updateCurrentProfit(lastPrice,sellInfo.amount); state = STATE_FREE; @@ -210,7 +203,7 @@ function scan(){ holdOrder.orderState = ORDER_INVALID; holdOrder.price = sellInfo.price; holdOrder.amount = sellInfo.amount; - holdOrder.time = getTimeByNormal((new Date()).getTime()); + holdOrder.time = $.getTimeByNormal((new Date()).getTime()); profit = holdOrder.updateCurrentProfit(lastPrice,sellInfo.amount); state = STATE_FREE; diff --git a/README.md b/README.md index 931451b..21caf79 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,15 @@ > 开源策略列表 + - [单独计算收益(代码来自zero)](https://www.botvs.com/strategy/1084) + - [差价监控](https://www.botvs.com/strategy/1340) + - [MACD 双向 滑动止损](https://www.botvs.com/strategy/12822) + - [时间转换模板](https://www.botvs.com/strategy/14517) + - [10行人品策略](https://www.botvs.com/strategy/14436) - [商品期货主力合约过滤](https://www.botvs.com/strategy/9837) - [从第三方网站获取K线 (0427更新)](https://www.botvs.com/strategy/12977) - [平台价格指标监控1.1](https://www.botvs.com/strategy/12442) - - [20行打造均线交叉策略](https://www.botvs.com/strategy/14051) - [均线策略 30 行打造一个正向收益系统](https://www.botvs.com/strategy/12348) - - [MACD 双向 滑动止损](https://www.botvs.com/strategy/12822) - [各大平台API可用率统计](https://www.botvs.com/strategy/4404) - [数字货币现货交易类库](https://www.botvs.com/strategy/10989) - [商品期货交易类库](https://www.botvs.com/strategy/12961) @@ -20,7 +23,6 @@ - [高精度回测](https://www.botvs.com/strategy/11575) - [函数自动容错模板](https://www.botvs.com/strategy/11609) - [Dual Thrust OKCoin 期货](https://www.botvs.com/strategy/12101) - - [差价监控](https://www.botvs.com/strategy/1340) - [RSI_now_sb_ok](https://www.botvs.com/strategy/11604) - [自定义K线周期转换](https://www.botvs.com/strategy/11216) - [模板库使用例子](https://www.botvs.com/strategy/10991) @@ -49,7 +51,6 @@ - [单点狙击高频加仓自动反手解套算法 V1.2](https://www.botvs.com/strategy/2406) - [796期货反手加倍算法](https://www.botvs.com/strategy/3648) - [冰山委托 - 支持价格触发 BitVC期货专用](https://www.botvs.com/strategy/951) - - [单独计算收益(代码来自zero)](https://www.botvs.com/strategy/1084) - [多线程获取多个交易的深度信息](https://www.botvs.com/strategy/3651) - [账户余额变动邮箱提醒, 支持添加多个交易所](https://www.botvs.com/strategy/2006) - [多线程获取多个交易的账户信息](https://www.botvs.com/strategy/3297) diff --git a/RSI_now_sb_ok.js b/RSI_now_sb_ok.js index 6d7b3b9..941714d 100644 --- a/RSI_now_sb_ok.js +++ b/RSI_now_sb_ok.js @@ -1,7 +1,7 @@ /* 策略出处: https://www.botvs.com/strategy/11604 策略名称: RSI_now_sb_ok -策略作者: luoluchang +策略作者: tfboys 策略描述: RSI简单买卖测试, 默认 70-100卖出,0-30买入 diff --git a/单独计算收益(代码来自zero).js b/单独计算收益(代码来自zero).js index e793cc1..7439f65 100644 --- a/单独计算收益(代码来自zero).js +++ b/单独计算收益(代码来自zero).js @@ -8,40 +8,40 @@ */ - -function adjustFloat(v) { - - return Math.floor(v*1000)/1000; -} - - -function GetAccount() { - var account; - while (!(account = exchange.GetAccount())) { - Sleep(1000); - } - return account; -} - -function GetTicker() { - var ticker; - while (!(ticker = exchange.GetTicker())) { - Sleep(1000); - } - return ticker; -} - -function updateProfit(accountInit, accountNow, ticker) { - var netNow = accountNow.Balance + accountNow.FrozenBalance + ((accountNow.Stocks + accountNow.FrozenStocks) * ticker.Buy); - var netInit = accountInit.Balance + accountInit.FrozenBalance + ((accountInit.Stocks + accountInit.FrozenStocks) * ticker.Buy); - LogProfit(adjustFloat(netNow - netInit), accountNow); - -} - -function main() { - InitAccount = GetAccount(); - while (true) { - updateProfit(InitAccount, GetAccount(), GetTicker()); - Sleep(20000); - } + +function adjustFloat(v) { + + return Math.floor(v*1000)/1000; +} + + +function GetAccount() { + var account; + while (!(account = exchange.GetAccount())) { + Sleep(1000); + } + return account; +} + +function GetTicker() { + var ticker; + while (!(ticker = exchange.GetTicker())) { + Sleep(1000); + } + return ticker; +} + +function updateProfit(accountInit, accountNow, ticker) { + var netNow = accountNow.Balance + accountNow.FrozenBalance + ((accountNow.Stocks + accountNow.FrozenStocks) * ticker.Buy); + var netInit = accountInit.Balance + accountInit.FrozenBalance + ((accountInit.Stocks + accountInit.FrozenStocks) * ticker.Buy); + LogProfit(adjustFloat(netNow - netInit), accountNow); + +} + +function main() { + InitAccount = GetAccount(); + while (true) { + updateProfit(InitAccount, GetAccount(), GetTicker()); + Sleep(5000); + } } diff --git a/平台价格指标监控1.1.js b/平台价格指标监控1.1.js index 0fe5985..c1631f4 100644 --- a/平台价格指标监控1.1.js +++ b/平台价格指标监控1.1.js @@ -1,7 +1,7 @@ /* 策略出处: https://www.botvs.com/strategy/12442 策略名称: 平台价格指标监控1.1 -策略作者: luoluchang +策略作者: tfboys 策略描述: 1.5---可以监控ATR,RSI,BOLL,PRICE diff --git a/平台价格比较1.0.js b/平台价格比较1.0.js index 7bd1c03..783d68b 100644 --- a/平台价格比较1.0.js +++ b/平台价格比较1.0.js @@ -1,7 +1,7 @@ /* 策略出处: https://www.botvs.com/strategy/8266 策略名称: 平台价格比较1.0 -策略作者: luoluchang +策略作者: tfboys 策略描述: 1.4---增加告警周期设置 diff --git a/时间转换模板.js b/时间转换模板.js new file mode 100644 index 0000000..f4ae432 --- /dev/null +++ b/时间转换模板.js @@ -0,0 +1,61 @@ +/* +策略出处: https://www.botvs.com/strategy/14517 +策略名称: 时间转换模板 +策略作者: 小小梦 +策略描述: + +###把毫秒级的时间转换成 直观的 时间显示,比如 把 Record.Time 时间戳 (毫秒数) 和 Trade.Time 转换为 正常时间。也可以用于获取当前时间,如 传入参数为: new Date() 就显示当前时间。 + + +参数 默认值 描述 +------ ----- --------------- +isShow false 是否在转换时输出转换后的时间。 +*/ + +/* +-- 策略引用该模板以后直接用 $.Test() 调用此方法 +-- main 函数在策略中不会触发, 只做为模板调试的入口 +*/ +$.getTimeByNormal = function(time) { + if(typeof( time ) == "object" ){ + time = time.getTime(); + return getTimeByNormal(time); + }else if(typeof( time ) == "number" ){ + return getTimeByNormal(time); + } + throw "时间转换模板导出函数传入参数类型错误!,请传入Date 类型 或 毫秒数"; +}; + +function getTimeByNormal(time){ + var timeByNormal = new Date(); + timeByNormal.setTime(time); + var strTime = timeByNormal.toString(); + if(isShow === true){ + Log("getTimeByNormal转换为:",strTime); + } + return strTime; +} + +//测试 +function main() { + var time1 = $.getTimeByNormal( new Date() ); + Log("当前时间time1:",time1); + Sleep(1000 * 60); + var time3 = (new Date()).getTime(); + Log("毫秒级时间:",time3,"转换"); + var time2 = $.getTimeByNormal( time3 ); + Log("转换后的时间:",time2); + Log("new Date:",typeof(new Date())); + Log("number :",typeof(12355554875425)); + //var str = "ssadfgg"; + //var returnStr = $.getTimeByNormal(str); //传入一个 错误类型 字符串 实验下。。 + //Log("参数传入字符串:",returnStr); + var records = exchange.GetRecords(); + while(!records || records.length < 10){ + records = exchange.GetRecords(); + Sleep(1000); + } + for(var i = 0; i < records.length; i++){ + Log(records[i],"时间转换:i:",i,"---",getTimeByNormal(records[i].Time)); + } +}