Bianco estrategia de cobertura de monedas sostenibles original ((hacer más superbajas más superbajas más superbajas) el 13 de abril último módulo de stop loss)

El autor:Las hierbas, Fecha: 2020-04-04 21:24:43
Las etiquetas:Binance

Esta política ya está disponible en la versión de actualización de tarifas, además de WeChat wangweibing_ustb para más información.

¡Esto es importante!

  • Hay que leer este estudio.https://www.fmz.com/digest-topic/5294■ Conocer los principios estratégicos, el riesgo, cómo filtrar las transacciones, cómo establecer los parámetros, el porcentaje de operaciones abiertas y el capital total, entre otros.
  • El último informe de investigación debe ser descargado y subido a su propio entorno de investigación. La modificación real se ejecuta de nuevo. Si ya ha leído este informe, actualice recientemente los datos de la última semana.
  • Si el robot se detiene durante mucho tiempo, debe reiniciar los datos o construir un nuevo robot.
  • Las estrategias no pueden ser reevaluadas directamente, deben ser reevaluadas en el entorno de la investigación.
  • El código de la estrategia y los parámetros predeterminados son sólo para investigación, y el funcionamiento del disco físico requiere precaución, basándose en los parámetros de su propia investigación.El riesgo
  • La estrategia no puede ser rentable todos los días, si se mira hacia atrás en la historia, 1 o 2 semanas de recorte y retroceso son normales y necesitan ser tratados correctamente.
  • El código es abierto, puede ser modificado por usted mismo, si hay algún problema, bienvenido a comentarios y comentarios, es mejor unirse al grupo de Inventor Binance (hay un método para unirse en los informes de investigación) para recibir notificaciones de actualización.
  • La estrategia solo admite futuros de divisas, necesita funcionar en modo de almacén completo, no configure la posición bidireccional!!, la estrategia no utiliza la línea K cuando se crea el robot con pares de operaciones y ciclos de línea K por defecto.
  • Las tácticas y otras tácticas, así como las operaciones manuales, son conflictivas y deben ser cuidadosas.
  • El disco físico requiere un operador en el extranjero, y durante la fase de prueba, se puede alquilar un servidor de Ali Cloud Hong Kong en la plataforma con un solo clic.https://www.fmz.com/bbs-topic/2848)
  • Los futuros y los actuales del yuan deben añadirse por separado, y los futuros del yuan se denominanFutures_Binance
  • Esta estrategia de reinicio no tiene ningún efecto, pero los nuevos robots volverán a registrar los datos históricos.
  • La política puede actualizarse según la retroalimentación del usuario, copiando el código directamente con Ctrl + A para guardar la cobertura (generalmente no se actualizan los parámetros) y reiniciar el bot para usar el código más reciente.
  • La estrategia no comienza a operar, la primera vez que se inicia se requiere registrar los datos, se requiere esperar a que el mercado cambie para operar.

Contenido actualizado el 4.16

Se ha cambiado el error para detener el daño

Cambiamos los parámetros por defecto:

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

4.13 Actualización de contenido

La configuración de Stop_loss es de 0.8 para indicar cuando el capital alcanza menos del 80% del capital inicial, un stop-loss, vaciando todas las posiciones, una estrategia de detención. Con la ejecución de la estrategia, el Stop_loss se puede establecer en mayor de 1 (reinicio efectivo), por ejemplo, de 1000 pips a 1500, el Stop_loss se configura en 1.3, se retira a un stop-loss de 1.300 yuanes. No se puede establecer este parámetro si no se desea un stop-loss.

Max_diff y Min_diff limitan el grado de desviación, que debe determinarse por sí mismo en función de su propio valor comercial, capital total y capacidad de asumir riesgos.

Para dar un ejemplo simple, si se negocian 20 monedas, una de ellas aumenta gradualmente hasta el desvío de 0.4 y deja de operar, mientras que las otras monedas permanecen invariables, perdiendo 7 veces el valor comercial.

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

4.10 Actualización de contenido

Copia el código de la política a la política local, superpone directamente el guardador, reinicia el equipo para que funcione y mantenga su posición original.

En la actualidad, la mayoría de los mercados de divisas están operando en el mercado de divisas, pero la mayoría de los mercados de divisas están operando en divisas.https://www.fmz.com/bbs-topic/5364

El principal problema es la diferencia entre el precio más reciente y el precio inicial en el que se inicia la estrategia, que crece con el tiempo y se desvía cada vez más, una moneda puede tener muchas posiciones, el riesgo es alto, y finalmente tendrá muchas posiciones, aumentando el riesgo y el retroceso.

El último índice de monedas reales = mean ((sum)) / EMA ((precio de monedas reales / precio de Bitcoin))), es decir, se compara con el precio de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea de la línea

Para una mejora sin problemas, dos de los parámetros se escriben en las primeras dos líneas del código de la estrategia y se cambian según sea necesario.

El parámetro alfa del equilibrio móvil del índice alfa = 0.04 es el parámetro alfa, el más grande que se establece, el más sensible es el seguimiento del precio de referencia, el menor es el número de operaciones, el menor es el mantenimiento final, lo que reduce el apalancamiento, pero reduce el rendimiento, reduce el retraso máximo, puede aumentar la conversión de operaciones, que se debe compensar en función de los resultados de la retrospección. Update_base_price_time_interval = 30*60 La duración de la actualización de un precio de referencia, en unidades de segundo, está relacionada con el parámetro Alpha, y cuanto menor sea el intervalo que se puede establecer, menor será el intervalo.

Si estás leyendo este artículo y quieres negociar con todas las monedas, aquí está la lista.ETH,BCH,XRP,EOS,LTC,TRX,ETC,LINK,XLM,ADA,XMR,DASH,ZEC,XTZ,BNB,ATOM,ONT,IOTA,BAT,VET,NEO,QTUM,IOST

Únete al grupo de microblogging para obtener las actualizaciones de la batalla de los millones de monedas.

Si le das el siguiente micro-signo y le respondes que tienes una moneda, la arrastras automáticamente al grupo:

https://www.fmz.comimg

Principios estratégicos

Las monedas que se desprenden por encima del índice del precio del Bitcoin-Cash, y las monedas que se desprenden por debajo del índice, con mayor desviación, mayor posición.img

La lógica estratégica

1. actualizar el mercado y el depósito de la cuenta, la primera vez que se ejecuta se registra el precio inicial (las monedas recién agregadas se calculan según el momento de la incorporación) 2. actualizar el índice, el índice es el índice de precio de las monedas digitales-bitcoins = mean ((sum))) precio de las monedas digitales / precio de las monedas digitales) / precio inicial de las monedas digitales / precio inicial de las monedas digitales))) 3. Más vacío según el índice de desviación, posición según el tamaño de desviación 4. El pedido y la cantidad del pedido son decididos por Ice Mountain, de acuerdo con el precio de transacción (comprar y vender a un precio).Se cancela inmediatamente después de la orden. Así que verá muchas unidades 400: {code:-2011, msg:Unknown order sent.} que han fallado en la cancelación. 5.再次循环

El apalancamiento en la columna de estado representa que el valor garantizado ya se ha utilizado y debe mantenerse bajo para satisfacer las nuevas posiciones abiertas.

Parámetros de la estrategia

img

  • Trade_symbols: las monedas que se negocian, que necesitan ser seleccionadas por sí mismas según la plataforma de investigación, también pueden unirse a BTC
  • Trade_value: el precio de Bitcoin (BTC) tiene un valor de 1% por cada desviación del índice, que debe decidirse según el total de capitales invertidos y las preferencias de riesgo, se recomienda establecerlo en un 3-10% del total de capitales. Se puede revisar el tamaño del apalancamiento mediante la evaluación del entorno de investigación.
  • Adjust_value: ajuste de la desviación del valor del contrato. Cuando el indicador se desvía * Trade_value - Holding actual > Adjust_value, es decir, la diferencia entre la posición objetivo y la posición actual es superior a este valor, se inicia la negociación.
  • Ice_value: el valor de encargo de la montaña de hielo, también no puede ser inferior a 10, en realidad, solo seleccione Adjust_value con el más pequeño de Ice_value, si hay más fondos que se pueden configurar de forma relativamente grande, se recomienda que no sea inferior al 20% del Adjust_value, por lo que 5 veces la montaña de hielo puede completar la transacción, por supuesto, cuando Trade_value no es grande, Ice_value puede configurar un poco más grande, una o dos veces puede ajustarse hasta el punto.
  • Interval: tiempo de hibernación recurrente, puede ajustarse a algo más pequeño, como 1s, pero no puede exceder el límite de frecuencia de Binance.
  • Reset: restablecer datos históricos, restablece el precio inicial de referencia de la política al precio actual, generalmente sin necesidad de establecerlo

El riesgo estratégico

Tenga en cuenta que si una moneda sale de un mercado independiente, por ejemplo, si sube varias veces en relación con el índice, se acumulará una gran cantidad de posiciones vacías en esa moneda, y las mismas caídas significativas también harán que la estrategia sea mucho más.




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

Relacionados

Más.

las plantas de la familia de las carnívoras@tmbs95 Agregame en el telegrama, interesado.

Las novias también.Por favor, en la función onTick ((), hay una línea como esta, assets.USDT.long_value-assets.USDT.short_value <= 1.1*Trade_value, entiendo que se ha establecido así para evitar que el desequilibrio de espacio sea demasiado grande.

¿Qué quieres decir?¿No puedes encontrarlo?

Capital de la cadenaMax_diff y Min_diff no deberían ser 0.04 y -0.03?

La Fuerza Aérea nunca será esclavo.Demos un poco de luz al círculo cerrado.

Las hierbas/ cargar / activo / 1b39347a88aa4cff916.jpg

Cuantificación de las categoríasLa estrategia de los individuos que proponen hacer más superbajas es eliminar el BNB, una operación que el BNB quiere hacer popular, y se estima que superbajará; no se puede ver ahora con la mirada histórica.

Las novias también.Es una de las dos cosas.

Las novias también.Una moneda sale de un mercado independiente, esta configuración de equilibrio de más espacio puede evitar grandes pérdidas, por lo que se decide no desequilibrarse. Sólo se puede encontrar la manera de abrir una lista de cobertura.

Las hierbasEs un error, wangweibing_ustb.

el izhangsanDe hecho, si miras el código, ya sabes los resultados de la revisión de la moneda entera, no tienes que preocuparte. Al unirte, Alpha = 0.05, añade LINK, ETC, BNB, la retroceso inicial de la historia es de 3%, el mercado extremo máximo de retroceso es de menos del 25%, Trade_Value con 3% de seguridad.