다중 플랫폼의 전체 자산을 모니터링하고 표시합니다. 계정 자금이 변경되면 다시 표시됩니다. 모든 플랫폼의 돈과 동전은 순자산으로 전환되어 수익 곡선에 표시됩니다.
var LastState = null; function adjustFloat(v) { return Math.floor(v*1000)/1000; } function getExchangesState() { var isUpdate = false; var allBalance = 0; var allNetStocks = 0; var Cache = []; var CurrencyCache = []; for (var i = 0; i < exchanges.length; i++) { var account = null; var ticker = null; while (!(account = exchanges[i].GetAccount())) { Sleep(Interval); } while (!(ticker = exchanges[i].GetTicker())) { Sleep(Interval); } var name = typeof(exchanges[i].GetLabel) == 'undefined' ? exchanges[i].GetName() : exchanges[i].GetLabel(); var currency = exchanges[i].GetCurrency(); if (typeof(CurrencyCache[currency]) == 'undefined') { CurrencyCache[currency] = 0; } CurrencyCache[currency] = adjustFloat(CurrencyCache[currency] + account.Stocks + account.FrozenStocks); if (typeof(Cache[name]) == 'undefined') { Cache[name] = true; allBalance += account.Balance + account.FrozenBalance; } allNetStocks += (account.Stocks + account.FrozenStocks) * ticker.Last; } var update = false; var str = ""; for (var currency in CurrencyCache) { str += ' '+currency + ': ' + CurrencyCache[currency]; if (LastState != null) { if (LastState.CurrencyCache[currency] != CurrencyCache[currency]) { update = true; } } } allBalance = adjustFloat(allBalance); if (LastState != null) { if (LastState.allBalance != allBalance) { update = true; } } return {allStocks: str, Net: adjustFloat(allNetStocks + allBalance), CurrencyCache: CurrencyCache, allBalance: allBalance, update: (LastState == null) || update}; } function main() { Log("所有平台的钱和币将换算成净资产显示到收益曲线里"); while (true) { var state = getExchangesState(); if (state.update) { LastState = state; Log('总钱: ', state.allBalance, '总币: ', state.allStocks); LogProfit(state.Net); } Sleep(Math.max(TickInterval, 100)); } }
이름이 전략은 동적으로 자산의 변화를 추적할 수 없나요? 시작 시에 한 번 갱신하고 다시 갱신하지 않는 것처럼 보이나요?