// 定义对象 var e = exchange e.SetContractType('XBTUSD') var LastBarTime = 0 Idle = -1 status = Idle // 链接交易所, 获取相关信息 function UpdateInfo() { var account = exchange.GetAccount() records = exchange.GetRecords() ticker = exchange.GetTicker() balance = account.Stocks Bar = records[records.length - 1] } // 指标计算获取 function Get_MA() { var MA = TA.MA(records, 30) MA_close = MA[MA.length - 1] } // 开平仓规则 function onTick() { if (LastBarTime !== Bar.Time) { // K线结束后进行交易 if (status === Idle) { if (Bar.Close > MA_close) { exchange.SetDirection("buy") exchange.Buy(ticker.Sell, Amount) status = PD_LONG } if (Bar.Close < MA_close) { exchange.SetDirection("sell") exchange.Sell(ticker.Buy, Amount) status = PD_SHORT } } if (status === PD_LONG) { if (Bar.Close < MA_close) { exchange.SetDirection("closebuy") exchange.Sell(ticker.Buy, Amount) exchange.SetDirection("sell") exchange.Sell(ticker.Buy, Amount) status = PD_SHORT } } if (status === PD_SHORT) { if (Bar.Close > MA_close) { exchange.SetDirection("closesell") exchange.Buy(ticker.Sell, Amount) exchange.SetDirection("buy") exchange.Buy(ticker.Sell, Amount) status = PD_LONG } } LastBarTime = Bar.Time } } function main() { // 主函数, 不停循环 while (1) { // 链接交易所, 获取相关信息 UpdateInfo() // 指标计算获取 Get_MA() // 开平仓规则 onTick() // 打印balance LogStatus(balance) // 轮询sleep时间 Sleep(5 * 1000) } }
로트메콩은 항상 아름답습니다.
FMZ_JH지표위 status = PD_SHORT 사용의 기교, 평선 상에서 구매하지; 평선 아래 평선 상에서 더 많은 공백, 멋져!
FMZ_JH이 프로그램은 단순화 된 것으로 보아도 훌륭합니다. 먼저 보시고 다시 말해주세요!
콩오, fmz의 데모는 아주 잘 쓰여져 있고, 공식 데모에 몇 가지 작은 트릭이 있습니다.