이 문서의 코드는 원본 버전입니다.https://www.fmz.com/bbs-topic/4908
현재는 계약판으로 변경되었습니다.
좋은 거래 플랫폼은 당신의 전략을 90,000마일까지 흔들 수 있습니다. 링크 등록을 통해 2개월 동안 VIP5 요금 할인을 받을 수 있습니다. (현재: 0%, 0.07%). 계약: 0%, 0.04%)https://www.kucoin.cc/ucenter/signup?rcode=1wxJ2fQ&lang=zh_CN&utmsource=VIP_TF
'''backtest start: 2021-05-01 00:00:00 end: 2021-05-29 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] ''' # 原版代码是现货版: # https://www.fmz.com/bbs-topic/4908 # 现在改为合约版。 # ———— 韬奋量化(微信:himandy) # 好的交易平台可以让你的策略扶摇直上九万里,通过链接注册可获得两个月VIP5的手续费率优惠: # (现货:挂单0%,吃单0.07%。合约:挂单0%,吃单0.04%) # https://www.kucoin.cc/ucenter/signup?rcode=1wxJ2fQ&lang=zh_CN&utmsource=VIP_TF import time basePrice = -1 ratio = 0.05 acc = _C(exchange.GetAccount) pos = _C(exchange.GetPosition) lastCancelAll = 0 minStocks = 0.01 def CancelAll(): while True : orders = _C(exchange.GetOrders) for i in range(len(orders)) : exchange.CancelOrder(orders[i]["Id"], orders[i]) if len(orders) == 0 : break Sleep(1000) def main(): global basePrice, acc, lastCancelAll, leverage, StopGain, StopLoss #Log(StopLoss * -1) exchange.SetContractType("swap") exchange.SetMarginLevel(leverage) exchange.SetPrecision(2, 3) pos = _C(exchange.GetPosition) while True: ticker = _C(exchange.GetTicker) if basePrice == -1 : basePrice = ticker.Last if ticker.Last - basePrice > 0 and (ticker.Last - basePrice) / basePrice > ratio : acc = _C(exchange.GetAccount) if acc.Balance * ratio * leverage / ticker.Last > minStocks and len(pos) == 0: exchange.SetDirection("buy") exchange.Buy(_N(ticker.Last, 2), _N(acc.Balance * ratio / ticker.Last, 3)) basePrice = ticker.Last ts = time.time() if ts - lastCancelAll > 60 * 5 : CancelAll() lastCancelAll = ts pos = _C(exchange.GetPosition) if ticker.Last - basePrice < 0 and (basePrice - ticker.Last) / basePrice > ratio : acc = _C(exchange.GetAccount) pos = _C(exchange.GetPosition) if acc.Balance * ratio * leverage / ticker.Last > minStocks and len(pos) == 0: exchange.SetDirection("sell") exchange.Sell(_N(ticker.Last, 2), _N(acc.Balance * ratio / ticker.Last, 3)) basePrice = ticker.Last ts = time.time() if ts - lastCancelAll > 60 * 5 : CancelAll() lastCancelAll = ts pos = _C(exchange.GetPosition) if len(pos) == 1 : #Log(pos) if pos[0]["Profit"] / pos[0]["Margin"] > StopGain : if pos[0]["Type"] == 0 : exchange.SetDirection("closebuy") exchange.Sell(-1, pos[0]["Amount"]) pos = _C(exchange.GetPosition) elif pos[0]["Type"] == 1 : exchange.SetDirection("closesell") exchange.Buy(-1, pos[0]["Amount"]) pos = _C(exchange.GetPosition) elif pos[0]["Profit"] / pos[0]["Margin"] < StopLoss * -1 : if pos[0]["Type"] == 0 : exchange.SetDirection("closebuy") exchange.Sell(-1, pos[0]["Amount"]) pos = _C(exchange.GetPosition) elif pos[0]["Type"] == 1 : exchange.SetDirection("closesell") exchange.Buy(-1, pos[0]["Amount"]) pos = _C(exchange.GetPosition) LogStatus(_D(), "\n", "行情信息:", ticker, "\n", "账户信息:", acc) if exchange.GetName() == "Futures_Binance" and IsVirtual() == false : LogProfit(_N(float(acc["Info"]["totalWalletBalance"], 4))) Sleep(500)
77924998이 문서는 다른 언어의 문자를 쓸 수 있는 문자를 작성하는 것입니다.
노력하는 양성어렵지 않습니다.