CrpytoQuant加密资产量化从0开始之1下单执行(小白版)
0x0 题记书接上文 上次一次不是写了一篇《Crpyto-Quant 加密资产量化从0开始之0信号通知》。但是没写如何自动下单交易。既然quant肯定要自动化了。今天就开始如何自动化,由0到1了。0x1 操作修改原来信号模块,增加返回 return 数据信号数据1 和-1 ,注释掉邮件通知。function getboll() { //信号捕捉模块 var records = exchange.GetRecords(14400); //获取K线周期为4小时的K线数据 if (records && records.length > 20) { var boll = TA.BOLL(records, 20, 3) //将K线数据转换为boll带数据 var upLine = boll[0] var midLine = boll[1] var downLine = boll[2] var price = exchange.GetTicker().Last if (price > upLine[upLine.length - 1]) { // 对比成交价与boll上轨线 //注释邮件通 sendtomail("卖出信号", "价格:" + price + "大于BOLL上轨线:" + upLine[upLine.length - 1]) //发送邮件 Log("卖出信号:" + "价格:" + price + "大于BOLL上轨线:" + upLine[upLine.length - 1] + "@") //打印信号信息 return -1; //返回-1 等于返回一个卖出信号 } else if (price < downLine[downLine.length - 1]) { //注释邮件通知 sendtomail("买入信号", "价格:" + price + "小于BOLL下轨线:" + downLine[downLine.length - 1]) Log("买入信号:" + "价格:" + price + "小于BOLL下轨线:" + downLine[downLine.length - 1] + "@") return 1 //返回-1 等于返回一个卖出信号 } } return 0; } 设置一个全局的交易者信息,主要用于设置一些全局信息 let trader = { //初始化 direction: 0, //买卖方向标记 tip: 10, //下单数量 order: 0, //下单确认开关 lever: 20, ////杠杆倍数 period: "quarter", ////合约类型,这儿设置为季度合约 long: 35, //止盈点设置,均已usd都是简单计算 close: -50 //止损点设置 }; 添加主执行模块 function fox(trader) { //执行主模块 var id; var aount = exchange.GetAccount(); //获取账户信息 if (trader.order == 1) { //再次确认下单信号 if (trader.direction == 1) { //判断下单方向 price = getprice("buy", 1); //获取执行价格,这儿是买二价格, if (aount.Stocks > trader.tip / trader.lever) { exchange.SetDirection("buy"); id = exchange.Buy(price, trader.tip); if (id != null) { trader.price = price; trader.direction = 0; } } } else if (trader.direction == -1) { price = getprice("sell", 1); if (aount.Stocks >= trader.tip / trader.lever) { exchange.SetDirection("sell") id = exchange.Sell(price, trader.tip) trader.price = price; trader.direction = 0; } } } return trader; } 修改主函数 while (true) { if (tm == 60) { //1分钟执行一次 if(trader.order==0){ //确认无订单状态 let signal=getboll(trader); //获取入市信号 if(signal!=0){ //确认入市信号 trader.order=1 //改变交易下单信息 trader.direction=signal;//设置买卖方向 trader = fox(trader); //进入执行模块 } } tm = 0; } trader = riskcode(trader); //执行风险控制代码 Sleep(1000); //1秒执行一次 tm++; } } 0x2 回测设置回测信息 /*backtest start: 2022-01-01 00:00:00 end: 2023-03-09 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_HuobiDM","currency":"BTC_USD"}] */
当然也可以通过系统提供来设置 回测效果展示
可以通过K线图来判断,是否策略执行效果,是否在需要的点位上。
夏普率是有点低,回撤还好。当然这是完全用的固定回报比垃圾风控仓位管理方式。其实很多系统的灵魂其实不是在入市信号上,更多的灵魂是在风控上或者是在平仓方面。 0x3 后记今天展示如何执行订单。本来还计划准备专门写一下动态仓位管理与风控的。可能短期没什么时间。看看以后…目前也算由0到1了。 附录全部源码 /*backtest start: 2022-01-01 00:00:00 end: 2023-03-09 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_HuobiDM","currency":"BTC_USD"}] */ function main() { //主程序入口 let tm = 0; //初始化次数 let trader = { //初始化 direction: 0, //买卖方向标记 tip: 10, //下单数量 order: 0, //下单确认开关 lever: 20, ////杠杆倍数 period: "quarter", ////合约类型,这儿设置为季度合约 long: 35, //止盈点设置,均已usd都是简单计算 close: -50 //止损点设置 }; exchange.SetContractType(trader.period); //设置合约类型 exchange.SetMarginLevel(trader.lever); //设置杠杆倍数 while (true) { if (tm == 60) { //1分钟执行一次 if (trader.order == 0) { let signal = getboll(trader); if (signal != 0) { trader.order = 1 trader.direction = signal; trader = fox(trader); } } tm = 0; } trader = riskcode(trader); //执行风险控制代码 Sleep(1000); //1秒执行一次 tm++; } } function getboll() { //信号捕捉模块 let records = exchange.GetRecords(14400); //获取K线周期为4小时的K线数据 if (records && records.length > 20) { var boll = TA.BOLL(records, 20, 3) //将K线数据转换为boll带数据 var upLine = boll[0] var midLine = boll[1] var downLine = boll[2] var price = exchange.GetTicker().Last if (price > upLine[upLine.length - 1]) { // 对比成交价与boll上轨线 //注释邮件通 sendtomail("卖出信号", "价格:" + price + "大于BOLL上轨线:" + upLine[upLine.length - 1]) //发送邮件 Log("卖出信号:" + "价格:" + price + "大于BOLL上轨线:" + upLine[upLine.length - 1] + "@") //打印信号信息 return -1; //返回-1 等于返回一个卖出信号 } else if (price < downLine[downLine.length - 1]) { //注释邮件通知 sendtomail("买入信号", "价格:" + price + "小于BOLL下轨线:" + downLine[downLine.length - 1]) Log("买入信号:" + "价格:" + price + "小于BOLL下轨线:" + downLine[downLine.length - 1] + "@") return 1 //返回-1 等于返回一个卖出信号 } } return 0; } function getprice(type, i) { //获取买卖二价 var price = 0; var depth = exchange.GetDepth(); if (type == "buy") { price = depth.Asks[i].Price; } else if (type == "sell") { price = depth.Bids[i].Price; } else { Log("不交易"); } return price; } function fox(trader) { //执行主模块 var id; var aount = exchange.GetAccount(); if (trader.order == 1) { if (trader.direction == 1) { price = getprice("buy", 1); if (aount.Stocks > trader.tip / trader.lever) { exchange.SetDirection("buy"); id = exchange.Buy(price, trader.tip); if (id != null) { trader.price = price; trader.direction = 0; } } } else if (trader.direction == -1) { price = getprice("sell", 1); if (aount.Stocks >= trader.tip / trader.lever) { exchange.SetDirection("sell") id = exchange.Sell(price, trader.tip) trader.price = price; trader.direction = 0; } } } return trader; } function usdt(trader) { //usdt转换 pricedata = { long: 0, close: 0 } price = getprice("sell", 0); pricedata.long = trader.long / price; pricedata.close = trader.close / price; return pricedata; } function closeorder(direction, trader) { var id; var pricedata = usdt(trader); if (direction.Profit > pricedata.long || direction.Profit < pricedata.close) { if (direction.Type == 0) { price = getprice("sell", 0); exchange.SetDirection("closebuy"); id = exchange.Sell(price, trader.tip); if (id != null) { trader.order = 0; } else { price = getprice("sell", 0); id = exchange.Sell(price, trader.tip); } } else if (direction.Type == 1) { price = getprice("buy", 0); exchange.SetDirection("closesell"); id = exchange.Buy(price, trader.tip); if (id != null) { trader.order = 0; } else { price = getprice("buy", 0); id = exchange.Buy(price, trader.tip); } } Log(direction.Profit); } } function riskcode(trader) { var position = exchange.GetPosition(); if (position.length >= 1) { for (var i = 0; i < position.length; i++) { closeorder(position[i], trader); } } return trader; }
明镜为鉴10个数字化转型成功案例全球多数企业正纷纷启动企业数字化的相关计划,借以提升业务增长和运营绩效。本文所列举的数字化转型范例,将为读者详细介绍IT领导者所面临的策略实践过程及挑战。www。szhzxw。cn
荣耀时刻丨国贸地产获评2022年度客户口碑奖12月16日,由中国信息协会客户联络中心分会客户观察联合主办的2022(第七届)中国客户联络中心行业发展年会盛大举行,厦门国贸地产集团有限公司荣获中国客户联络中心颁发的2022年度
IPO数次折戟的燕之屋,难破资本困局编辑于斌出品潮起网于见专栏燕窝自古以来,便被奉为滋补养生之佳品,尤其是对本就对美有着天然追求的女性,能每日食用一些燕窝,是许多女性的养颜梦想。作为燕窝行业的龙头老大,燕之屋一直致力
华为门店里要卖的车越来越多争夺华为渠道资源的车企越来越多。与此同时,华为不造车的三年之约,还有一年到期华为上海南京东路旗舰店内的问界车型。摄影财经记者王静仪文财经记者王静仪李皙寅编辑赵成诞生不到一年的新品牌
历时5年,手K关键帧年度现象级国产动画三体的制作过程整理自中国电影报道综艺报导演帮订阅0108609206212月10日,期待已久的三体动画在哔哩哔哩全网独家上线,首周两集连播。首播日全网热搜120个,开播10小时播放量破亿,创下动
印度侵占东章瀑布东章瀑布位于我国西藏自治区山南市错那县浪坡乡南部浪坡沟的一个风景如画的高原原始森林河谷处。东章瀑布是来源于错那河,由于东章瀑布地区属于藏南地区,由于喜马拉雅山阻挡,来自印度洋的暖湿
西藏冒险王镜头里喜马拉雅山间的蓝宝石冰川科普探险家王相军先生2020年五月份发布的作品,喜马拉雅山调研现场。当时和他同行的是他雇佣的印度向导。帮他引路和背包。老王随着镜头解说道现在我到了一个蓝色的冰冻湖的一个位置啊!
6000字长文印度第一财团塔塔集团,到底是什么来头?最近,芯片行业依旧新事不断,台积电追加美国新厂投资至400亿美元,大有成为美积电之势。与国内芯片热潮类似,印度同样开始用巨型投资推动印度芯片自主化,著名的塔塔集团领下任务,宣布未来
铝碳酸镁对伴胆汁反流的胃溃疡患者的作用胃溃疡是一种广泛发作的消化系统疾病,一般认为是十二指肠活动异常所致,十二指肠与胃窦失去协调性,进入十二指肠的胆汁随食糜反流入胃,胆汁中含有大量的胆汁酸,对胃无明显刺激。但经过与食糜
丁俊晖作为主任!没有起到监督作用,还拒绝为假球担责,引起争议丁俊晖作为主任!没有起到监督作用,还拒绝为假球担责,引起争议。中国斯诺克7位球员打假球的事件持续发酵,目前世界台联已经开始调查所有中国球员的手机,以便获取更多的信息,后面还会公布相
重温东方快车谋杀案!见证推理女王阿加莎创作过程WELCOMETOISTANBUL探索伊斯坦布尔第一家奢华酒店见证推理女王创作东方快车谋杀案乘坐东方快车开启一场神秘的豪华异域之旅吧一直去往欧亚大陆的心脏地带到达浪漫的土耳其让伊斯