Die Ressourcen sind geladen. Beförderung...

Binance dauerhafte Multikurrency-Hedging-Strategie Originalversion (Mehr überfallen, mehr überhöhten)

Schriftsteller:Das Gras, Datum: 2020-04-04 21:24:43
Tags:Binance

Die Gebühren-Upgrade ist jetzt verfügbar, und WeChat wangweibing_ustb gibt weitere Informationen.

Wichtige Inhalte!

  • Ich muss diese Studie lesen.https://www.fmz.com/digest-topic/5294◦ Verständnis für eine Reihe von Fragen wie Strategieprinzipien, Risiken, wie man den Handel durchsucht, wie man die Parameter setzt, wie man die Anteile an der Eröffnung und dem Gesamtkapital anpasst.
  • Der letzte Bericht muss heruntergeladen und in die eigene Umgebung hochgeladen werden. Die tatsächliche Änderung läuft wieder. Wenn Sie diesen Bericht bereits gelesen haben, aktualisieren Sie die Daten der letzten Woche.
  • Wenn ein Roboter lange stehenbleibt, muss er wieder anfangen, seine Daten neu einstellen oder einen neuen Roboter bauen.
  • Strategien können nicht direkt nachgeprüft werden, sie müssen in der Forschung nachgeprüft werden.
  • Die Strategiecode und die Standardparameter sind nur für Forschungszwecke und die Festplattenbetriebsweise erfordert Vorsicht.Die Risiken
  • Die Strategie kann nicht jeden Tag profitabel sein, und wenn man auf die Geschichte zurückblickt, ist ein bis zwei Wochen lang ein Rückzug normal und muss richtig behandelt werden.
  • Der Code ist öffentlich zugänglich und kann selbst geändert werden. Kommentare und Feedback sind herzlich willkommen, wenn es Probleme gibt.
  • Die Strategie unterstützt nur Devisen-Futures und muss im Voll-Hold-Modus ausgeführt werden, keine zweiseitige Haltung eingerichtet werden!
  • Man muss sich vor Augen halten, dass die Strategie mit anderen Strategien und die manuelle Handhabung in Konflikt stehen.
  • Für den Betrieb der Festplatte benötigen Sie einen ausländischen Host, während der Testphase können Sie einen Ali Cloud Hongkong Server mit einem Klick auf der Plattform mieten und die volle Miete monatlich günstiger machen.https://www.fmz.com/bbs-topic/2848)
  • Die Futures und die Bargeld müssen getrennt hinzugefügt werden.Futures_Binance
  • Diese Strategie hat keinen Einfluss, aber die neuen Roboter werden die historischen Daten erneut aufzeichnen.
  • Die Strategie kann basierend auf dem Feedback der Benutzer aktualisiert werden, direkt Ctrl + A kopieren Code über die Übersicht zu speichern (normalerweise werden die Parameter nicht aktualisiert), und der Roboter neu gestartet wird, um den neuesten Code zu verwenden.
  • Die Strategie beginnt nicht mit dem Handel, die erste Aktivierung erfordert eine Datenerfassung, und es ist notwendig zu warten, bis sich der Markt verändert, bevor man handelt.

4.16 aktualisiert

Ein Fehler wurde geändert, der den Verlust stoppen sollte.

Die Standardparameter wurden geändert:

var Alpha = 0.001 //指数移动平均的Alpha参数,设置的越大,基准价格跟踪越敏感,最终持仓也会越低,降低了杠杆,但会降低收益,具体需要根据回测结果自己权衡
var Update_base_price_time_interval = 60 //多久更新一次基准价格, 单位秒,和Alpha参数相关,Alpha 设置的越小,这个间隔也可以设置的更小

4.13 Aktualisiert

Stop_loss ist auf 0.8 eingestellt, was bedeutet, dass, wenn das Geld unter 80% des ursprünglichen Kapitals erreicht wird, der Stop-Loss, die Freigabe aller Positionen und die Stop-Strategie ausgeführt werden. Wenn die Strategie ausgeführt wird, kann der Stop_loss größer als 1 eingestellt werden (Wiederbelebung wirksam), z. B. von 1.000 bis 1500, der Stop_loss ist auf 1.3 eingestellt, dann wird der Stop auf 1300 Yuan zurückgezogen.

Max_diff und Min_diff beschränken den Abweichungsgrad, der sich anhand des eigenen Handelswerts, des Gesamtkapitals und der Risikobereitschaft selbst feststellen muss.

Ein einfaches Beispiel: Wenn 20 Münzen gehandelt werden, steigt der Wert einer Münze bis zu einer Abweichung von 0,4 und wird nicht mehr gehandelt, während die Preise der anderen Münzen unverändert bleiben und siebenmal den Trade_value verlieren.

var Stop_loss = 0.8 
var Max_diff = 0.4 //当偏差diff大于0.4时,不继续加空仓, 自行设置
var Min_diff = -0.3 //当diff小于-0.3时,不继续加多仓, 自行设置

4.10 Aktualisierung

Wenn Sie den Policy-Code in die lokale Policy kopieren, können Sie ihn direkt überladen, um ihn zu speichern, um den Computer neu zu starten und den ursprünglichen Standort zu erhalten.

Bei der Optimierung der Notebook-Code-Adresse:https://www.fmz.com/bbs-topic/5364

Die ursprüngliche Strategie ist der Kryptowährungsindex = mean ((sum)) (Kryptowährungspreis/Bitcoinpreis) / ((Kryptowährungsstartpreis/Bitcoinstartpreis)). Das größte Problem ist die Kontrast zwischen dem neuesten Preis und dem ursprünglichen Preis, an dem die Strategie gestartet wurde. Im Laufe der Zeit wächst die Abweichung.

Der neueste Kryptowährungsindex = mean ((sum ((((Kryptowährungspreis/Bitcoin-Preis) /EMA ((Kryptowährungspreis/Bitcoin-Preis))), d.h. der Preis wird mit der Ebenenlinie verglichen, um die neuesten Preisänderungen zu verfolgen, ist flexibler, die Rückmessung zeigt, dass die Strategie gehalten und zurückgezogen wurde.

Für ein nahtloses Upgrade wurden zwei dieser Parameter in die ersten beiden Zeilen des Strategiecodes geschrieben und bei Bedarf geändert.

Alpha = 0.04 Indikator-Alpha-Parameter für das bewegliche Gleichgewicht, je größer die Einstellung, desto empfindlicher ist der Benchmark-Preis-Tracking, desto weniger werden Trades getätigt, desto niedriger wird die Haltung, was den Hebel senkt, aber die Erträge reduziert, den maximalen Rückzug reduziert und die Transaktionen erhöhen kann. Update_base_price_time_interval = 30*60 Je länger ein Benchmarkpreis aktualisiert wird, je Sekunden, und je kleiner der Alpha-Einstellung, desto kleiner kann dieser Intervall eingestellt werden

Wenn Sie den Artikel lesen und alle Währungen handeln möchten, hier ist eine Liste.ETH,BCH,XRP,EOS,LTC,TRX,ETC,LINK,XLM,ADA,XMR,DASH,ZEC,XTZ,BNB,ATOM,ONT,IOTA,BAT,VET,NEO,QTUM,IOST

Bewerben Sie sich bei der Weibo-Gruppe, um Updates zu erhalten.

Mit der folgenden Mikrosignal wird die Antwort auf die Anzeige automatisch in die Gruppe gezogen:

https://www.fmz.comimg

Die Strategie

Es wird eine Währung, die den Preis über dem Bitcoin-Coin-Price-Index und die Währung, die den Preis unter dem Bitcoin-Price-Index überschreitet, absetzen. Je größer die Abweichung, desto größer ist die Position.img

Strategische Logik

1. Aktualisierung des Marktes und der Kontobewahrung, wobei der erste Lauf den ursprünglichen Preis (die neu hinzugefügten Währungen berechnet nach dem Zeitpunkt des Beitritts) erfasst 2. Aktualisieren Sie den Index, der Index ist der Münze-Bitcoin-Preisindex = mean ((sum)) 3. Nach Abweichungsindex-Bewusstsein, nach Abweichungsgröße, nach Positionsgröße 4. Die Bestellung und die Menge der Bestellung werden von Ice Mountain beauftragt und werden nach dem Gegenhandelspreis getätigt (Kauf-Verkauf-Preis).Sie werden sofort nach der Bestellung widerrufen. (So sehen Sie viele fehlgeschlagene Zellen 400: {code:-2011,msg:Unknown order sent.}, normal) 5.再次循环

Die Hebelung in der Status-Palette stellt ein gebührenpflichtiges Gewicht dar, das niedrig gehalten werden muss, um neue Positionen zu befriedigen.

Strategieparameter

img

  • Trade_symbols: Handelswährungen, die von der Forschungsplattform selbst gefiltert werden müssen, können auch in BTC aufgenommen werden
  • Trade_value: Bei jeder Abweichung des BTC-Preises (BTC-Bewertung) beträgt der Wert von 1% und sollte je nach Investitionsvolumen und Risikopräferenzen auf 3-10% des Gesamtkapitals festgelegt werden.
  • Adjust_value: Anpassung der Abweichung des Kontraktwerts (USDT-Kurs). Wenn der Index von * Trade_value abweicht - aktuelle Haltung > Adjust_value, d.h. die Differenz zwischen Ziel- und aktuellen Haltungen über diesen Wert, beginnt der Handel. Zu große Anpassungen sind langsamer, zu kleine Trades sind häufiger und dürfen nicht unter 10 liegen, sonst wird die Mindesttransaktion nicht erreicht, es wird empfohlen, die Menge auf mehr als 40% des Trade_value zu setzen.
  • Ice_value: Eisberg Auftragswert, kann auch nicht weniger als 10, in der Tat einfach wählen Adjust_value mit Ice_value, die kleinere, wenn mehr Geld relativ groß ist, kann man so anpassen schneller, empfohlen, nicht weniger als 20% von Adjust_value, so dass 5 Mal Eisberg kann die Transaktion abgeschlossen werden, natürlich, wenn Trade_value nicht groß ist, Ice_value kann relativ groß sein, kann ein oder zwei Mal angepasst werden.
  • Interval: Zyklus-Ruhzeit, die kleiner eingestellt werden kann, wie 1s, aber nicht über die Binance-Frequenzgrenze hinaus.
  • Reset: Setzen Sie historische Daten zurück und setzen Sie den ursprünglichen Preis für die Strategie-Referenz auf den aktuellen Preis zurück.

Strategische Risiken

Beachten Sie, dass, wenn eine Währung aus einem unabhängigen Markt tritt, z. B. ein paar Mal höher als der Index, eine große Anzahl von Leerstandspositionen auf der Währung angesammelt wird. Ein ähnlicher starker Rückgang kann dazu führen, dass die Strategie viel zu tun hat.




var Alpha = 0.001 //指数移动平均的Alpha参数,设置的越大,基准价格跟踪越敏感,最终持仓也会越低,降低了杠杆,但会降低收益,具体需要根据回测结果自己权衡
var Update_base_price_time_interval = 60 //多久更新一次基准价格, 单位秒,和Alpha参数相关,Alpha 设置的越小,这个间隔也可以设置的更小

//Stop_loss设置为0.8表示当资金达到低于初始资金的80%时,止损,清空所有仓位,停止策略。
//随着策略运行,Stop_loss可以设置大于1(重启生效),比如从1000赚到1500,Stop_loss设置为1.3,则回撤到1300元止损。不想止损可以把这个参数设置的很小。
//风险是大家都用这种止损会形成踩踏,加大亏损。
//初始资金在状态栏的init_balance字段,注意提现等操作会影响,别不小心止损了。
//如果还是怕黑天鹅事件,比如某个币归0等,可以手动提现出来。

var Stop_loss = 0.8 
var Max_diff = 0.4 //当偏差diff大于0.4时,不继续加空仓, 自行设置
var Min_diff = -0.3 //当diff小于-0.3时,不继续加多仓, 自行设置

if(IsVirtual()){
    throw '不能回测,回测参考 https://www.fmz.com/digest-topic/5294 '
}
if(exchange.GetName() != 'Futures_Binance'){
    throw '只支持币安期货交易所,和现货交易所不同,需要单独添加,名称为Futures_Binance'
}
var trade_symbols = Trade_symbols.split(',')
var symbols = trade_symbols
var index = 1 //指数
if(trade_symbols.indexOf('BTC')<0){
    symbols = trade_symbols.concat(['BTC'])
}
var update_profit_time = 0
var update_base_price_time= Date.now()
var assets = {}
var init_prices = {}


var trade_info = {}
var exchange_info = HttpQuery('https://fapi.binance.com/fapi/v1/exchangeInfo')
if(!exchange_info){
    throw '无法连接币安网络,需要海外托管者'
}
exchange_info = JSON.parse(exchange_info)
for (var i=0; i<exchange_info.symbols.length; i++){
    if(symbols.indexOf(exchange_info.symbols[i].baseAsset) > -1){
       assets[exchange_info.symbols[i].baseAsset] = {amount:0, hold_price:0, value:0, bid_price:0, ask_price:0, 
                                                     btc_price:0, btc_change:1,btc_diff:0,
                                                     realised_profit:0, margin:0, unrealised_profit:0}
       trade_info[exchange_info.symbols[i].baseAsset] = {minQty:parseFloat(exchange_info.symbols[i].filters[1].minQty),
                                                         priceSize:parseInt((Math.log10(1.1/parseFloat(exchange_info.symbols[i].filters[0].tickSize)))),
                                                         amountSize:parseInt((Math.log10(1.1/parseFloat(exchange_info.symbols[i].filters[1].stepSize))))
                                                        }
    }
}
assets.USDT = {unrealised_profit:0, margin:0, margin_balance:0, total_balance:0, leverage:0, update_time:0, init_balance:0, stop_balance:0, short_value:0, long_value:0, profit:0}

function updateAccount(){ //更新账户和持仓
    exchange.SetContractType('swap')
    var account = exchange.GetAccount()
    var pos = exchange.GetPosition()
    if (!account || !pos){
        Log('update account time out')
        return
    }
    assets.USDT.update_time = Date.now()
    for(var i=0; i<trade_symbols.length; i++){
        assets[trade_symbols[i]].margin = 0
        assets[trade_symbols[i]].unrealised_profit = 0
        assets[trade_symbols[i]].hold_price = 0
        assets[trade_symbols[i]].amount = 0
    } 
    for(var j=0; j<account.Info.positions.length; j++){
        if(account.Info.positions[j].positionSide == 'BOTH'){
            var pair = account.Info.positions[j].symbol 
            var coin = pair.slice(0,pair.length-4)
            if(trade_symbols.indexOf(coin) < 0){continue}
            assets[coin].margin = parseFloat(account.Info.positions[j].initialMargin) + parseFloat(account.Info.positions[j].maintMargin)
            assets[coin].unrealised_profit = parseFloat(account.Info.positions[j].unrealizedProfit)
        }
    }
    assets.USDT.margin = _N(parseFloat(account.Info.totalInitialMargin) + parseFloat(account.Info.totalMaintMargin),2)
    assets.USDT.margin_balance = _N(parseFloat(account.Info.totalMarginBalance),2)
    assets.USDT.total_balance = _N(parseFloat(account.Info.totalWalletBalance),2)
    if(assets.USDT.init_balance == 0){
        if(_G('init_balance')){
            assets.USDT.init_balance = _N(_G('init_balance'),2)
        }else{
            assets.USDT.init_balance = assets.USDT.total_balance 
            _G('init_balance',assets.USDT.init_balance)
        }
    }
    assets.USDT.profit = _N(assets.USDT.margin_balance - assets.USDT.init_balance, 2)
    assets.USDT.stop_balance = _N(Stop_loss*assets.USDT.init_balance, 2)
    assets.USDT.total_balance = _N(parseFloat(account.Info.totalWalletBalance),2)
    assets.USDT.unrealised_profit = _N(parseFloat(account.Info.totalUnrealizedProfit),2)
    assets.USDT.leverage = _N(assets.USDT.margin/assets.USDT.total_balance,2)
    pos = JSON.parse(exchange.GetRawJSON())
    if(pos.length > 0){
        for(var k=0; k<pos.length; k++){
            var pair = pos[k].symbol
            var coin = pair.slice(0,pair.length-4)
            if(trade_symbols.indexOf(coin) < 0){continue}
            if(pos[k].positionSide != 'BOTH'){continue}
            assets[coin].hold_price = parseFloat(pos[k].entryPrice)
            assets[coin].amount = parseFloat(pos[k].positionAmt)
            assets[coin].unrealised_profit = parseFloat(pos[k].unRealizedProfit)
        }
    }
}

function updateIndex(){ //更新指数
    
    if(!_G('init_prices') || Reset){
        Reset = false
        for(var i=0; i<trade_symbols.length; i++){
            init_prices[trade_symbols[i]] = (assets[trade_symbols[i]].ask_price+assets[trade_symbols[i]].bid_price)/(assets.BTC.ask_price+assets.BTC.bid_price)
        }
        Log('保存启动时的价格')
        _G('init_prices',init_prices)
    }else{
        init_prices = _G('init_prices')
        if(Date.now() - update_base_price_time > Update_base_price_time_interval*1000){
            update_base_price_time = Date.now()
            for(var i=0; i<trade_symbols.length; i++){ //更新初始价格
                init_prices[trade_symbols[i]] = init_prices[trade_symbols[i]]*(1-Alpha)+Alpha*(assets[trade_symbols[i]].ask_price+assets[trade_symbols[i]].bid_price)/(assets.BTC.ask_price+assets.BTC.bid_price)
            }
            _G('init_prices',init_prices)
        }
        var temp = 0
        for(var i=0; i<trade_symbols.length; i++){
            assets[trade_symbols[i]].btc_price =  (assets[trade_symbols[i]].ask_price+assets[trade_symbols[i]].bid_price)/(assets.BTC.ask_price+assets.BTC.bid_price)
            if(!(trade_symbols[i] in init_prices)){
                Log('添加新的币种',trade_symbols[i])
                init_prices[trade_symbols[i]] = assets[trade_symbols[i]].btc_price / index
                _G('init_prices',init_prices)
            }
            assets[trade_symbols[i]].btc_change = _N(assets[trade_symbols[i]].btc_price/init_prices[trade_symbols[i]],4)
            temp += assets[trade_symbols[i]].btc_change
        }
        index = _N(temp/trade_symbols.length, 4)
    }
    
}

function updateTick(){ //更新行情
    var ticker = HttpQuery('https://fapi.binance.com/fapi/v1/ticker/bookTicker')
    try {
        ticker = JSON.parse(ticker)
    }catch(e){
        Log('get ticker time out')
        return
    }
    assets.USDT.short_value = 0
    assets.USDT.long_value = 0
    for(var i=0; i<ticker.length; i++){
        var pair = ticker[i].symbol 
        var coin = pair.slice(0,pair.length-4)
        if(symbols.indexOf(coin) < 0){continue}
        assets[coin].ask_price = parseFloat(ticker[i].askPrice)
        assets[coin].bid_price = parseFloat(ticker[i].bidPrice)
        assets[coin].ask_value = _N(assets[coin].amount*assets[coin].ask_price, 2)
        assets[coin].bid_value = _N(assets[coin].amount*assets[coin].bid_price, 2)
        if(trade_symbols.indexOf(coin) < 0){continue}
        if(assets[coin].amount<0){
            assets.USDT.short_value += Math.abs((assets[coin].ask_value+assets[coin].bid_value)/2)
        }else{
            assets.USDT.long_value += Math.abs((assets[coin].ask_value+assets[coin].bid_value)/2)
        }
        assets.USDT.short_value = _N(assets.USDT.short_value,0)
        assets.USDT.long_value = _N(assets.USDT.long_value,0)
    }
    updateIndex()
    for(var i=0; i<trade_symbols.length; i++){
        assets[trade_symbols[i]].btc_diff = _N(assets[trade_symbols[i]].btc_change - index, 4)
    }
}

function trade(symbol, dirction, value){ //交易
    if(Date.now()-assets.USDT.update_time > 10*1000){
        Log('更新账户延时,不交易')
        return
    }
    var price = dirction == 'sell' ? assets[symbol].bid_price : assets[symbol].ask_price
    var amount = _N(Math.min(value,Ice_value)/price, trade_info[symbol].amountSize)
    if(amount < trade_info[symbol].minQty){
        Log(symbol, '合约价值偏离或冰山委托订单的大小设置过小,达不到最小成交, 至少需要: ', _N(trade_info[symbol].minQty*price,0)+1)
        return
    }
    exchange.IO("currency", symbol+'_'+'USDT')
    exchange.SetContractType('swap')
    exchange.SetDirection(dirction)
    var f = dirction == 'buy' ? 'Buy' : 'Sell'
    var id = exchange[f](price, amount, symbol)
    if(id){
        exchange.CancelOrder(id) //订单会立即撤销
    }
    return id
}



function updateStatus(){ //状态栏信息
        var table = {type: 'table', title: '交易对信息', 
             cols: ['币种', '数量', '持仓价格',  '当前价格', '偏离平均', '持仓价值', '保证金', '未实现盈亏'],
             rows: []}
    for (var i=0; i<symbols.length; i++){
        var price = _N((assets[symbols[i]].ask_price + assets[symbols[i]].bid_price)/2, trade_info[symbols[i]].priceSize)
        var value = _N((assets[symbols[i]].ask_value + assets[symbols[i]].bid_value)/2, 2)
        var infoList = [symbols[i], assets[symbols[i]].amount, assets[symbols[i]].hold_price, price, assets[symbols[i]].btc_diff, value, _N(assets[symbols[i]].margin,3), _N(assets[symbols[i]].unrealised_profit,3)]
        table.rows.push(infoList)
    }
    var logString = _D() + '   ' + JSON.stringify(assets.USDT) + ' Index:' + index + '\n'
    LogStatus(logString + '`' + JSON.stringify(table) + '`')
    
    if(Date.now()-update_profit_time > Log_profit_interval*1000){
        LogProfit(_N(assets.USDT.margin_balance,3))
        update_profit_time = Date.now()
    }
    
}

function stopLoss(){ //止损函数
    while(true){
        if(assets.USDT.margin_balance < Stop_loss*assets.USDT.init_balance && assets.USDT.init_balance > 0){
            Log('触发止损,当前资金:', assets.USDT.margin_balance, '初始资金:', assets.USDT.init_balance)
            Ice_value = 200 //止损的快一些,可修改
            updateAccount()
            updateTick()
            var trading = false //是否正在交易
            for(var i=0; i<trade_symbols.length; i++){
                var symbol = trade_symbols[i]
                if(assets[symbol].ask_price == 0){ continue }
                if(assets[symbol].bid_value >= trade_info[symbol].minQty*assets[symbol].bid_price){
                    trade(symbol, 'sell', assets[symbol].bid_value)
                    trading = true
                }
                if(assets[symbol].ask_value <= -trade_info[symbol].minQty*assets[symbol].ask_price){
                    trade(symbol, 'buy', -assets[symbol].ask_value)
                    trading = true
                }
            }
            Sleep(1000)
            if(!trading){
                throw '止损结束,如果需要重新运行策略,需要调低止损'
            }
        }else{ //不用止损
            return
        }
    }    
}

function onTick(){ //策略逻辑部分
    for(var i=0; i<trade_symbols.length; i++){
        var symbol = trade_symbols[i]
        if(assets[symbol].ask_price == 0){ continue }
        var aim_value = -Trade_value * _N(assets[symbol].btc_diff/0.01,3)
        if(aim_value - assets[symbol].ask_value >= Adjust_value && assets[symbol].btc_diff > Min_diff && assets.USDT.long_value-assets.USDT.short_value <= 1.1*Trade_value){
            trade(symbol,'buy', aim_value - assets[symbol].ask_value)
        }
        if(aim_value - assets[symbol].bid_value <= -Adjust_value && assets[symbol].btc_diff < Max_diff && assets.USDT.short_value-assets.USDT.long_value <= 1.1*Trade_value){
            trade(symbol,'sell', -(aim_value - assets[symbol].bid_value))
        }
    }
}

function main() {
    while(true){
        updateAccount()
        updateTick()
        stopLoss() //止损
        onTick()
        updateStatus()
        Sleep(Interval*1000)
    }
}

Verwandt

Mehr

Zitronen@tmbs95 Fügen Sie mich zum Telegramm hinzu.

Auch die BrautBitte zeigen Sie mir, dass es in der Funktion onTick ((() eine Zeile gibt, die lautet: assets.USDT.long_value-assets.USDT.short_value <= 1.1*Trade_value. Ich verstehe, dass dies so eingestellt wurde, um zu vermeiden, dass zu viele Leerzeichen zu groß sind.

- Ich weiß nicht.Wir können sie nicht finden?

Anlage-KapitalSollten Max_diff und Min_diff nicht 0.04 und -0.03 sein?

Die Luftwaffe wird nie Sklaven sein.Geben Sie diesem geschlossenen Kreis ein wenig Sonnenlicht.

Das Gras/upload/asset/1b39347a88aa4cff916.jpg

Quantifizierung der ZonenEinige Leute schlagen vor, mehr zu überschreiten und weniger zu überschreiten, um die BNB auszuschalten.

Auch die BrautDas sind zwei Dinge.

Auch die BrautEine Währung geht aus dem unabhängigen Markt, und diese Multi-Leer-Gleichgewichts-Einstellung kann große Verluste verhindern, also entscheidet man, dass es nicht ausgeglichen werden kann.

Das GrasDas ist falsch, wangweibing_ustb

ZürichIn der Tat, wenn man sich den Code anschaut, weiß man, dass die Rückmeldung der gesamten Währung erfolgt, keine Sorge. Bei der Einbeziehung, Alpha = 0.05, fügen Sie LINK, ETC, BNB hinzu, der anfängliche Rückzug der Geschichte beträgt 3%, der maximale Rückzug des extremen Marktes beträgt weniger als 25%, Trade_Value mit 3% sicherer Überwältigung der gesamten Währung.