BTC와 ETH의 다양한 헤지킹 사고 테스트 DEMO 가격대비에 따라 그래프를 그리고 분석합니다. 가격대비의 변화, 유치 공간을 찾습니다. 전략의 타당성 모르는, 관심있는 동료는 연구 할 수 있습니다.
리틀드림
/*exchanges A : BTC B : ETH */ var RateUpDateTime = new Date().getTime() var UpDateCyc = 60 * 60 * 1000 var SumInCyc = 0 var AddCounts = 1 var RateArray = [] var BTC_hold_amount = 0 var ETH_hold_amount = 0 var IDLE = 0 var PLUS = 1 var STATE = IDLE var fee_btc = { buy : 0.2, // 0.2 % , 千分之四 sell : 0.2 } var fee_eth = { buy : 0.2, sell : 0.2 } var ModeStr = ["BOLL", "SMA"][Mode] function CalcPriceForNoFee(price, fee, type){ if(type == "buy"){ return price * (1 - fee / 100) }else if(type == "sell"){ return price * (1 + fee / 100) } } function loop(nowTime){ var depthA = exchanges[0].GetDepth() var depthB = exchanges[1].GetDepth() var sma120 = null var sma10 = null var boll = null if(!depthA || !depthB || depthA.Asks.length == 0 || depthA.Bids.length == 0 || depthB.Asks.length == 0 || depthB.Bids.length == 0){ return } var Rate = CalcPriceForNoFee((depthA.Bids[0].Price + depthA.Asks[0].Price) / 2, 0.2, "buy") / CalcPriceForNoFee((depthB.Bids[0].Price + depthB.Asks[0].Price) / 2, 0.2, "sell") if(nowTime - RateUpDateTime > UpDateCyc){ RateArray.push(Rate) $.PlotLine("avgRate", RateArray[RateArray.length - 2], RateUpDateTime) if(RateArray.length > 60){ if(ModeStr == "SMA"){ sma120 = talib.SMA(RateArray, 60) sma10 = talib.SMA(RateArray, 10) $.PlotLine("sma120", sma120[sma120.length - 2], RateUpDateTime) $.PlotLine("sma10", sma10[sma10.length - 2], RateUpDateTime) }else if(ModeStr == "BOLL"){ boll = TA.BOLL(RateArray, 20, 2.5) $.PlotLine("up", boll[0][boll[0].length - 2], RateUpDateTime) $.PlotLine("down", boll[2][boll[2].length - 2], RateUpDateTime) } } RateUpDateTime += UpDateCyc SumInCyc = 0 AddCounts = 1 }else{ SumInCyc += Rate AddCounts++ RateArray[RateArray.length - 1] = (SumInCyc / AddCounts) $.PlotLine("avgRate", RateArray[RateArray.length - 1], RateUpDateTime) if(RateArray.length > 60){ if(ModeStr == "SMA"){ sma120 = talib.SMA(RateArray, 60) sma10 = talib.SMA(RateArray, 10) $.PlotLine("sma120", sma120[sma120.length - 1], RateUpDateTime) $.PlotLine("sma10", sma10[sma10.length - 1], RateUpDateTime) }else if(ModeStr == "BOLL"){ boll = TA.BOLL(RateArray, 20, 2.5) $.PlotLine("up", boll[0][boll[0].length - 1], RateUpDateTime) $.PlotLine("down", boll[2][boll[2].length - 1], RateUpDateTime) } } } if(ModeStr == "SMA"){ if(STATE == IDLE && (sma120 && sma10) && sma120[sma120.length - 2] > sma10[sma10.length - 2] && sma120[sma120.length - 1] < sma10[sma10.length - 1]){ // PLUS var SellInfo = $.Sell(exchanges[1], 5) var sumMoney = SellInfo.price * SellInfo.amount var amount = _N(sumMoney / depthA.Asks[0].Price, 2) var BuyInfo = $.Buy(exchanges[0], amount) ETH_hold_amount = SellInfo.amount BTC_hold_amount = amount STATE = PLUS // throw "stop" // ceshi } if(STATE == PLUS && (sma120 && sma10) && sma120[sma120.length - 2] < sma10[sma10.length - 2] && sma120[sma120.length - 1] > sma10[sma10.length - 1]){ // COVER var BuyInfo = $.Buy(exchanges[1], ETH_hold_amount) var SellInfo = $.Sell(exchanges[0], BTC_hold_amount) ETH_hold_amount = 0 BTC_hold_amount = 0 STATE = IDLE Log(exchanges[0].GetAccount(), exchanges[1].GetAccount()) } } } function main() { var AccountA = exchanges[0].GetAccount() var AccountB = exchanges[1].GetAccount() Log("AccountA:", AccountA, "AccountB:", AccountB) while(true){ var beginTime = new Date().getTime() loop(beginTime) Sleep(500) } }
dayTrader2018문제를 제기합니다. 위의 코드에서 플롯라인 함수는 어디서 왔으며, 어떤 용도로 사용되었나요?
코보이글쓰기 용기가 있어, 멋지다
코보이글쓰기 용기가 있어, 멋지다
로가꿈의 무술
발명가들의 수량화 - 작은 꿈
발명가들의 수량화 - 작은 꿈이 글은 매우 간단하고 간단한 문장을 작성하여 실행 가능한지 확인하는 것이 좋습니다.