- Square
- A simple grid test
A simple grid test
Author:
cnxzcxy, Date: 2018-09-12 15:54:58
Tags:
Grid
/*backtest
start: 2018-08-01 00:00:00
end: 2018-09-01 15:00:00
period: 15m
exchanges: [{"eid":"Huobi","currency":"LTC_BTC","stocks":0}]
*/
var runBuyOrder = [];
var runSellOrder = [];
var basePrice = 0;
var percent = 0.05;
function onTick(){
var date = _D();
var depth = exchange.GetDepth();
account = exchange.GetAccount();
//初始化账户
if((account.Balance > 0) && (basePrice == 0)){
buyMoney = account.Balance * 0.09;
basePrice = depth.Asks[0].Price;
buyPrice = basePrice * (1-percent * 0);
runBuyOrder.push(exchange.Buy(buyPrice, buyMoney / buyPrice));
buyPrice = basePrice * (1-percent * 1);
runBuyOrder.push(exchange.Buy(buyPrice, buyMoney / buyPrice));
buyPrice = basePrice * (1-percent * 2);
runBuyOrder.push(exchange.Buy(buyPrice, buyMoney / buyPrice));
buyPrice = basePrice * (1-percent * 3);
runBuyOrder.push(exchange.Buy(buyPrice, buyMoney / buyPrice));
buyPrice = basePrice * (1-percent * 4);
runBuyOrder.push(exchange.Buy(buyPrice, buyMoney / buyPrice));
buyPrice = basePrice * (1-percent * 5);
runBuyOrder.push(exchange.Buy(buyPrice, buyMoney / buyPrice));
buyPrice = basePrice * (1-percent * 6);
runBuyOrder.push(exchange.Buy(buyPrice, buyMoney / buyPrice));
buyPrice = basePrice * (1-percent * 7);
runBuyOrder.push(exchange.Buy(buyPrice, buyMoney / buyPrice));
buyPrice = basePrice * (1-percent * 8);
runBuyOrder.push(exchange.Buy(buyPrice, buyMoney / buyPrice));
buyPrice = basePrice * (1-percent * 9);
runBuyOrder.push(exchange.Buy(buyPrice, buyMoney / buyPrice));
buyPrice = basePrice * (1-percent * 10);
runBuyOrder.push(exchange.Buy(buyPrice, buyMoney / buyPrice));
Log(date);
Log('交易所:', exchange.GetName(), ' 账户:', exchange.GetAccount());
Log('卖单:', runSellOrder, ' 买单:', runBuyOrder);
}
//检查订单轮询
allOrders = runBuyOrder.concat(runSellOrder);
allOrders.forEach(function(orderId){
order = exchange.GetOrder(orderId);
//检查卖单
if(runSellOrder.indexOf(order.Id) > -1){
if((order.Status == ORDER_STATE_CLOSED) && (order.Type == ORDER_TYPE_SELL)){
Log(date);
Log('卖单成功 价格:', order.Price, ' 数量:', order.DealAmount);
Log('交易所:', exchange.GetName(), ' 账户:', exchange.GetAccount());
//从本地数据库里面去掉并挂新的买单
index = runSellOrder.indexOf(order.Id);
runSellOrder.splice(index, 1);
buyPrice = order.Price * (1 - percent);
runBuyOrder.push(exchange.Buy(buyPrice, order.DealAmount * order.Price / buyPrice));
}
}
//检查买单
if(runBuyOrder.indexOf(order.Id) > -1){
if((order.Status == ORDER_STATE_CLOSED) && (order.Type == ORDER_TYPE_BUY)){
Log(date);
Log('买单成功 价格:', order.Price, ' 数量:', order.DealAmount);
Log('交易所:', exchange.GetName(), ' 账户:', exchange.GetAccount());
//从本地数据库里面去掉并挂新的卖单
index = runBuyOrder.indexOf(order.Id);
runBuyOrder.splice(index, 1);
sellPrice = order.Price * (1 + percent);
runSellOrder.push(exchange.Sell(sellPrice, order.DealAmount));
}
}
});
}
function main(){
while(true){
onTick();
}
}
Related
More