프로그램은 지정된 주기 내의 가격 변동 폭을 모니터링하고, 지정된 폭을 초과하면 지정된 휴대 전화 사용자에게 문자 메시지로 알립니다. 문자 메시지 보물 인터페이스를 사용하여 여러 휴대 전화 번호로 전송 할 수 있습니다. 주기는 K선 주기를 선택하십시오. K선 주기는 1분이고 1분 내의 데이터를 모니터링합니다.
function _N(v) { return Math.floor(parseFloat(v.toFixed(10))*1000)/1000; } var LastMsg = ""; function SMSSend(msg) { if (msg == LastMsg) { return; } Log('SMS:', msg); LastMsg = msg; var ret = false; var phones = PhoneNum.split(','); for (var i = 0; i < phones.length; i++) { ret = HttpQuery("http://www.smsbao.com/sms?u=" + encodeURIComponent(SMSUser) + "&p=" + SMSPass.toUpperCase() + "&m=" + phones[i] + "&c=" + encodeURIComponent(msg)) == "0"; if (ret) { Log("短信通知", phones[i], "成功"); } else { Log("短信通知", phones[i], "失败"); } } return ret; } function formatDate(t) { var year = t.getFullYear(); var month = t.getMonth() + 1; var day = t.getDate(); var hour = t.getHours(); var minute = t.getMinutes(); var second = t.getSeconds(); if (month < 10) { month = '0' + month; } if (day < 10) { day = '0' + day; } if (hour < 10) { hour = '0' + hour; } if (minute < 10) { minute = '0' + minute; } if (second < 10) { second = '0' + second; } return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second; } function main() { if (exchanges.length > 1) { throw "只支持一个交易所"; } LoopInterval = Math.max(1, LoopInterval); Log('浮动百分比将显示为收益, 超过' + MaxRatio + '% 后报警'); if (EnableSMS && !SMSSend('预警策略启动成功')) { throw "短信接口测试失败"; } var preRatio = 0; var preKRatio = 0; while (true) { var records = exchange.GetRecords(); if (records && records.length > 0) { var r = records[records.length-1]; var n = _N(((r.High - r.Low) * 100) / r.High); if (records.length > 1) { var p = records[records.length-2]; var pn = _N(((p.High - p.Low) * 100) / p.High); if (pn != preKRatio) { preKRatio = pn; if (pn != preRatio) { LogProfit(pn, 'Time:', formatDate(new Date(p.Time)), 'High:', p.High.toFixed(4), 'Low:', p.Low.toFixed(4)); if (EnableSMS && n >= MaxRatio) { SMSSend('当前浮动比: ' + n + '%'); } } } } if (n != preRatio) { LogProfit(n, 'Time:', formatDate(new Date(r.Time)), 'High:', r.High.toFixed(4), 'Low:', r.Low.toFixed(4)); preRatio = n; if (EnableSMS && n >= MaxRatio) { SMSSend('当前浮动比: ' + n + '%'); } } } Sleep(LoopInterval * 1000); } }