Type/to search
8
Follow
1361
Followers
Implementar un robot simple de comercio al contado de moneda digital
Discussions
Created 2021-02-18 16:09:43  Updated 2023-09-26 20:57:30
 6
 4118

img

Implementar un robot simple de comercio al contado de moneda digital

Hay muchos traders manuales en el mundo de las criptomonedas que necesitan robots imitadores, pero les preocupa el hecho de que lleva mucho tiempo comenzar con el diseño programático cuando no tienen conocimientos básicos. Basándonos en este tipo de demanda, en este artículo diseñaremos un robot de copia de comercio al contado sencillo para ayudar a los amigos en el círculo de las criptomonedas que no tienen conocimientos básicos de comercio algorítmico.

En primer lugar, analicemos las necesidades. La función de este robot es garantizar que cuando una cuenta realice una operación de compra o venta, otras cuentas de copia sigan el ejemplo y ejecuten esta operación.
Por ello, primero aclararemos dos cuestiones:

  • Cuenta de referencia: Una cuenta monitoreada que monitorea cada movimiento de esta cuenta.
  • Cuenta de copia: La cuenta que sigue órdenes. Cuando se produce una acción en la cuenta de referencia, la cuenta de copia realiza la misma acción.

Ahora que hemos identificado preliminarmente esta necesidad, debemos seguir pensando en el siguiente paso. ¿Cómo identificamos las acciones de las cuentas de referencia?

El seguimiento de las cuentas de referencia es muy sencillo para las cuentas al contado. Solo tenemos que comparar la cantidad de monedas en los datos de información de cuenta más recientes con la cantidad de monedas en los datos de información de cuenta más recientes obtenidos actualmente.
Si el número de monedas en los últimos datos de información de la cuenta obtenidos actualmente es mayor que el registro anterior, demuestra que la cuenta de referencia ha ejecutado una operación de compra y la compra fue exitosa. Por el contrario, si hay menos monedas, se realiza una operación de venta de la cuenta de referencia. Después de descubrir esta acción, podemos permitir que otras cuentas de intercambio realicen la misma operación.

Cuando se descubre que se ha ejecutado una transacción en una cuenta de referencia, se debe actualizar el registro de datos de la cuenta más reciente para compararlo con la información de la cuenta que se obtenga la próxima vez para determinar si hay alguna nueva acción de transacción.

La lógica anterior se describe mediante el código de estrategia:

javascript
// 检测跟单 var amount = (nowAcc.Stocks + nowAcc.FrozenStocks) - (initAcc.Stocks + initAcc.FrozenStocks) // 检测币数发生的变化 var func = null if (amount > 0) { // 币变多了 func = $.Buy // 买入 } else if (amount < 0) { // 币变少了 func = $.Sell // 卖出 } else { continue } // 执行跟单 Log("跟单!数量:", Math.abs(amount), "#FF0000") for (var i = 1 ; i < exchanges.length ; i++) { // i 等于 0 时,是参考交易所,不处理,处理其它的跟单交易所 func(exchanges[i], Math.abs(amount)) // 执行具体的交易函数,可能是$.Buy 或者是 $.Sell ,具体看amount 是大于0,还是小于0 } // 执行跟单之后更新参考交易所账户信息记录 initAcc = nowAcc // 更新参考交易所最近一次的账户信息,用于下次对比

La lógica de detección principal de la estrategia es el código anterior. Para simplificar el diseño, la estrategia utiliza la plantilla oficial FMZ [Biblioteca de comercio de divisas digitales].$.Buy , $.SellTodas estas son funciones de esta plantilla, y su función es ejecutar operaciones de orden.

Agregue algunas barras de estado a la estrategia para facilitar el seguimiento de los datos de cada cuenta. La estrategia completa es la siguiente:

javascript
function test() { // 测试函数 var ts = new Date().getTime() if (ts % (1000 * 60 * 60 * 6) > 1000 * 60 * 60 * 5.5) { Sleep(1000 * 60 * 10) var x = Math.random() if (x > 0.5) { $.Buy(exchange, x / 10) } else { $.Sell(exchange, x / 10) } } } function main() { LogReset(1) if (exchanges.length < 2) { throw "没有跟单的交易所" } var exName = exchange.GetName() // 检测参考交易所 if (exName.includes("Futures_")) { throw "仅支持现货跟单" } Log("开始监控", exName, "交易所", "#FF0000") // 检测跟单交易所 for (var i = 1 ; i < exchanges.length ; i++) { if (exchanges[i].GetName().includes("Futures_")) { throw "不支持期货交易所跟单" } } var initAcc = _C(exchange.GetAccount) while(1) { if(IsVirtual()) { // 测试函数 test() } Sleep(5000) // 更新参考账户当前的账户信息 var nowAcc = _C(exchange.GetAccount) // 参考交易所账户信息 var refTbl = { type : "table", title : "参考交易所", cols : ["名称", "币", "冻结币", "钱", "冻结钱"], rows : [] } refTbl.rows.push([exName, nowAcc.Stocks, nowAcc.FrozenStocks, nowAcc.Balance, nowAcc.FrozenBalance]) // 跟单交易所账户信息 var followTbl = { type : "table", title : "跟单交易所", cols : ["名称", "币", "冻结币", "钱", "冻结钱"], rows : [] } for (var i = 1 ; i < exchanges.length ; i++) { var acc = _C(exchanges[i].GetAccount) var name = exchanges[i].GetName() followTbl.rows.push([name, acc.Stocks, acc.FrozenStocks, acc.Balance, acc.FrozenBalance]) } // 状态栏显示 LogStatus(_D(), "\n`" + JSON.stringify(refTbl) + "`", "\n`" + JSON.stringify(followTbl) + "`") // 检测跟单 var amount = (nowAcc.Stocks + nowAcc.FrozenStocks) - (initAcc.Stocks + initAcc.FrozenStocks) var func = null if (amount > 0) { func = $.Buy } else if (amount < 0) { func = $.Sell } else { continue } // 执行跟单 Log("跟单!数量:", Math.abs(amount), "#FF0000") for (var i = 1 ; i < exchanges.length ; i++) { func(exchanges[i], Math.abs(amount)) } // 执行跟单之后更新参考交易所账户信息记录 initAcc = nowAcc } }

Hagamos una prueba en tiempo real utilizando la prueba de intercambio simulada wexApp de FMZ. Aquí agregué tres cuentas wexApp, que son independientes entre sí. Uno de ellos sirve como intercambio de referencia y los otros dos sirven como intercambio de copias.

img

Luego, colocamos manualmente un pedido utilizando la terminal comercial de FMZ para ver si el robot seguirá automáticamente el pedido.

img

Puede ver que el robot detectó la transacción y ejecutó la operación de copia.

img

Estrategia completa: https://www.fmz.com/strategy/255182

La estrategia es solo para aprender. Si tienes alguna pregunta, deja un mensaje.

Related Recommendations
Comment
All comments (6)

    你好,可以帮忙部署吗,付费求助。感谢。微237650136

    5 years ago

    这个策略代码开源的,策略公开在策略广场了,可以看下FMZ社区置顶的教程,初级教程是教学使用的,会基本的使用就可以部署了。

    5 years ago

    你好,可以帮忙部署吗,付费求助。感谢。微237650136

    5 years ago

    挂单可以检测跟挂单么?

    5 years ago

    您好我想问一下这个可以拿来跟单币coin上面的人码

    5 years ago

    本身币coin上就有延迟,可能你的价格跟他们的就相差很多。

    5 years ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)