Binance Strategy Hedging Multi-currency yang Berkelanjutan (Binance) Modul Stop Loss Terbaru pada 13 April

Penulis:Rumput, Tarikh: 2020-04-04 21:24:43
Tag:Binance

Kebijakan ini boleh digunakan untuk menaik taraf bayaran, ditambah WeChat wangweibing_ustb untuk maklumat lanjut.

Maklumat penting!

  • Kita perlu lihat kajian ini.https://www.fmz.com/digest-topic/5294◦ Mengenalpasti pelbagai isu seperti prinsip strategi, risiko, cara menyaring dagangan, cara menetapkan parameter, peratusan kedudukan dan jumlah modal;
  • Laporan kajian sebelumnya perlu dimuat turun dan dimuat naik ke persekitaran penyelidikan anda sendiri. Perubahan sebenar berjalan lagi. Jika anda telah membaca laporan ini, anda baru sahaja mengemas kini data minggu ini.
  • Robot berhenti untuk masa yang lama dan mulakan semula, mesti menghidupkan semula data atau membina robot baru.
  • Strategi tidak boleh diuji semula secara langsung, ia perlu diuji semula dalam persekitaran penyelidikan.
  • Kod strategi dan parameter lalai adalah untuk kajian sahaja, operasi cakera sebenar memerlukan berhati-hati, dan parameter keputusan berdasarkan kajian anda sendiri.Mengambil risiko sendiri
  • Strategi tidak boleh menguntungkan setiap hari, lihat kembali sejarah, 1 atau 2 minggu berturut-turut dan mundur adalah normal, perlu dirawat dengan betul.
  • Kodnya terbuka, boleh diubah sendiri, jika ada masalah, maklum balas komen dialu-alukan, lebih baik bergabung dengan kumpulan pencipta Binance (masih ada cara untuk menyertai laporan kajian) untuk mendapatkan pemberitahuan kemas kini
  • Kaedah ini hanya menyokong masa hadapan mata wang tin, perlu beroperasi dalam mod stok penuh, jangan menetapkan pegangan dua arah!!, apabila membuat bot dengan pasangan perdagangan lalai dan kitaran K, strategi ini tidak digunakan untuk K line
  • Strategi dan strategi lain serta operasi manual bercanggah dan perlu diperhatikan.
  • Dalam tahap ujian, anda boleh menyewa pelayan Ali Cloud Hong Kong pada satu butang di platform, sewa sendiri lebih murah setiap bulan ((konfigurasi minimum sahaja, pelaksanaan tutorial:https://www.fmz.com/bbs-topic/2848)
  • Futures dan spot untuk Binance perlu ditambahkan secara berasingan, dan Futures Binance adalahFutures_Binance
  • Strategi ini tidak akan memberi kesan, tetapi robot baru akan merakam semula data sejarah.
  • Dasar ini mungkin akan dikemas kini berdasarkan maklum balas pengguna, terus Ctrl + A untuk menyalin kod yang diselubungi dengan menyimpan (secara amnya tidak akan mengemas kini parameter), dan mulakan semula bot untuk menggunakan kod terkini.
  • Strategi tidak berdagang pada mulanya, mula-mula perlu merakam data, menunggu perubahan pasaran untuk berdagang

Update pada 4.16

Mengubah pepijat untuk menghentikan kerosakan

Perubahan parameter lalai:

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

4.13 Mengemas kini kandungan

Stop_loss ditetapkan sebagai 0.8 menunjukkan apabila dana mencapai 80% daripada modal awal, stop loss, kosongkan semua kedudukan, hentikan strategi. Apabila strategi berjalan, Stop_loss boleh ditetapkan lebih besar daripada 1 ((kembalikan semula berkesan), contohnya dari 1000 sen hingga 1500, Stop_loss ditetapkan sebagai 1.3, maka kembali ke 1300 yuan stop loss. Tidak mahu stop loss boleh menetapkan parameter ini sangat kecil. Risiko adalah semua orang menggunakan stop loss ini untuk membentuk tapak kaki, meningkatkan kerugian.

Max_diff dan Min_diff mengehadkan tahap penyimpangan, yang perlu ditentukan sendiri berdasarkan nilai perdagangan, jumlah dana dan kemampuan menanggung risiko anda sendiri.

Sebagai contoh mudah, jika 20 mata wang diperdagangkan, satu mata wang akan meningkat ke deviasi 0.4 dan tidak diperdagangkan lagi, sementara mata wang lain akan kekal sama, kehilangan 7 kali nilai perdagangan.

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

4.10 Mengemas kini kandungan

Menyalin kod dasar ke dasar tempatan, langsung menaikkan simpanan, mulakan semula mesin untuk berkesan, tetapi mengekalkan lokasi asal

Pada bulan Mei tahun ini, Bitcoin telah menjadi satu-satunya mata wang asing yang mempunyai nilai lebih tinggi daripada mata wang asing.https://www.fmz.com/bbs-topic/5364

Strategi asal indeks syiling = mean(sum(((harga syiling / harga bitcoin) / ((harga awal syiling / harga awal bitcoin)));; Masalah terbesar adalah perbandingan harga terkini dan harga awal permulaan strategi, yang akan semakin menyimpang dari masa ke masa, satu syiling mungkin memegang banyak kedudukan, berisiko tinggi, dan akhirnya akan memegang banyak kedudukan, meningkatkan risiko dan mundur;

Indeks kripto terkini = mean ((sum)) / EMA ((price kripto/price bitcoin))), iaitu berbanding dengan harga pada garis rata, dapat menjejaki perubahan harga terkini, lebih fleksibel, dan mengesan semula mendapati penurunan strategi pegangan dan juga pengunduran rendah. Lebih stabil. Yang paling penting, strategi asal jika ditambah dengan beberapa pasangan perdagangan yang tidak biasa, berisiko tinggi, kemungkinan besar akan pecah, tetapi kini hampir tidak terpengaruh.

Untuk peningkatan yang lancar, dua parameter ditulis pada dua baris pertama kod strategi, dan diubah apabila diperlukan.

Alpha = 0.04 parameter indeks pergerakan rata-rata, semakin besar yang ditetapkan, harga rujukan yang lebih sensitif untuk mengikuti, lebih sedikit dagangan, akhirnya pegangan juga akan lebih rendah, menurunkan pelebihan, tetapi akan mengurangkan keuntungan, mengurangkan mundur maksimum, boleh meningkatkan jumlah dagangan, secara khusus perlu meneimbang sendiri berdasarkan hasil retesting. Update_base_price_time_interval = 30*60 Lebih lama untuk mengemas kini harga asas, satuan saat, dan berkaitan dengan parameter Alpha, semakin kecil tetapan Alpha, lebih kecil juga selang yang boleh ditetapkan

Jika anda membaca artikel ini dan ingin berdagang dalam semua mata wang, berikut adalah senarai.ETH,BCH,XRP,EOS,LTC,TRX,ETC,LINK,XLM,ADA,XMR,DASH,ZEC,XTZ,BNB,ATOM,ONT,IOTA,BAT,VET,NEO,QTUM,IOST

Bergabunglah dengan kumpulan Weibo untuk mendapatkan maklumat terkini mengenai Pertempuran Binomo

Dengan isyarat mikro di bawah, anda akan dapat menarik diri secara automatik ke dalam kumpulan dengan membalas:

https://www.fmz.comimg

Prinsip-prinsip strategi

Ia akan membuat mata wang dengan harga yang lebih tinggi daripada indeks harga Bitcoin, lebih rendah daripada indeks, lebih besar penyimpangan, lebih besar kedudukan. Strategi ini tidak melindungi kedudukan yang tidak setara dengan BTC, tetapi juga boleh memasukkan BTC ke dalam pasangan perdagangan.img

Logik Strategi

1. Mengemas kini pasaran dan akaun simpanan, yang pertama kali dijalankan akan merakam harga awal (mata wang yang baru ditambahkan dikira mengikut masa ditambahkan) 2. mengemas kini indeks, indeks adalah indeks harga Bitcoin = mean ((sum)))) harga Bitcoin / harga Bitcoin) / harga awal Bitcoin) 3. Mengira lebih banyak pekerjaan kosong berdasarkan indeks penyimpangan, menentukan kedudukan berdasarkan saiz penyimpangan 4. Memesan, jumlah pesanan yang akan datang akan ditentukan oleh Ice Mountain, mengikut harga transaksi (membeli dan menjual satu harga).Perintah ini akan ditarik balik dengan segera selepas pesanan di bawah. Jadi anda akan melihat banyak fail 400: {code:-2011,msg:Unknown order sent.}, normal 5.再次循环

Leverage dalam keadaan yang terhad mewakili kadar jaminan yang telah digunakan, yang perlu dikekalkan pada tahap yang rendah untuk memenuhi kedudukan baru

Parameter strategi

img

  • Trade_symbols: Mata wang yang diperdagangkan, perlu disaring sendiri berdasarkan platform penyelidikan, juga boleh bergabung dengan BTC
  • Trade_value: Harga Bitcoin (BTC) mempunyai nilai 1% untuk setiap deviasi indeks, dan perlu ditentukan berdasarkan jumlah modal yang anda masukkan dan pilihan risiko anda, disyorkan untuk menetapkan 3-10% daripada jumlah modal. Dengan melihat kembali ukuran leverage melalui kajian persekitaran, Trade_value boleh menjadi lebih kecil daripada Adjust_value, seperti separuh dari Adjust_value, yang bersamaan dengan nilai pemegang deviasi indeks 2%.
  • Adjust_value: Nilai kontrak (USDT) penyesuaian nilai penyimpangan. Apabila indeks penyimpangan * Trade_value - Holding semasa > Adjust_value, iaitu selisih antara Holding sasaran dan Holding semasa melebihi nilai ini, perdagangan akan dimulakan. Penyesuaian yang terlalu besar adalah perlahan, perdagangan yang terlalu kecil sering, tidak boleh di bawah 10, jika tidak, anda tidak akan mencapai transaksi minimum, disyorkan untuk menetapkan lebih daripada 40% dari Trade_value.
  • Ice_value: Nilai penghantaran gunung es, juga tidak boleh kurang daripada 10, sebenarnya pilih sahaja Adjust_value dengan yang lebih kecil daripada Ice_value, jika dana yang lebih banyak boleh ditetapkan agak besar, penyesuaian sedemikian lebih cepat, disyorkan tidak kurang daripada 20% daripada Adjust_value, sehingga 5 kali gunung es dapat menyelesaikan urus niaga, tentu saja, apabila Trade_value tidak besar, Ice_value boleh ditetapkan agak besar, sekali atau dua kali boleh disesuaikan.
  • Interval: Waktu tidur berputar, boleh ditetapkan lebih kecil, seperti 1s, tetapi tidak boleh melebihi had frekuensi binan.
  • Reset: Mengeset semula data sejarah, akan menetapkan semula harga awal rujukan dasar kepada harga semasa, biasanya tidak perlu ditetapkan

Risiko Strategik

Perhatikan bahawa jika mata wang keluar dari pasaran bebas, seperti naik beberapa kali berbanding indeks, maka banyak kedudukan kosong akan terkumpul pada mata wang itu, dan penurunan yang sama juga akan membuat strategi banyak dilakukan.




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)
    }
}

Berkaitan

Lebih lanjut

TIAGOMBALSA@tmbs95 Tambah saya di telegram, berminat

Perempuan juga.Sila tunjukkan, dalam fungsi onTick ((), terdapat satu baris seperti ini, assets.USDT.long_value-assets.USDT.short_value <= 1.1*Trade_value, saya faham ia ditetapkan untuk mengelakkan ketidakseimbangan ruang kosong yang terlalu besar.

MichaelTidak boleh cari WeChat?

Modal rantaiMax_diff dan Min_diff bukan 0.04 dan -0.03?

Tentera Udara Tidak Pernah Menjadi BudakBerikan sedikit cahaya matahari kepada bulatan tertutup ini.

Rumput/upload/asset/1b39347a88aa4cff916.jpg

Kuantiti kelasOrang yang mencadangkan untuk melakukan lebih banyak kenaikan atau penurunan dalam strategi kenaikan atau penurunan, untuk menghilangkan BNB, transaksi ini adalah untuk menarik populariti BNB, dan ia dijangka akan meningkat; tidak boleh dilihat dari segi sejarah sekarang.

Perempuan juga.Ini adalah dua perkara.

Perempuan juga.Satu mata wang keluar dari pasaran bebas, tetapan keseimbangan yang banyak ruang ini dapat mencegah kerugian besar, jadi keputusan tidak boleh diseimbangkan. Hanya boleh mencari cara untuk membuka akaun lindung nilai. Sekarang pelbagai mata wang ribut, rasa tidak sesuai untuk menjalankan strategi ini, mundur sedikit besar.

RumputSalah, wangweibing_ustb

izhangsanPada hakikatnya, lihatlah kod, anda akan mengetahui hasil pengesanan balik semua mata wang, tidak perlu risau. Dalam menyertai, Alpha = 0.05, tambah LINK, ETC, BNB, kemunduran awal dalam sejarah adalah 3%, kemuncak kemuncak pasaran tidak melebihi 25%, Trade_Value menggunakan 3% keselamatan berlebihan mata wang.