Estrategias de la plataforma de cuantificación de FMZ para la redacción de tutoriales iniciales (un must)

El autor:Las hierbas, Creado: 2019-08-13 17:47:27, Actualizado: 2021-08-06 10:29:46

Información histórica de la línea K. La desventaja de este mecanismo es evidente: en una línea K, solo se puede generar una compra y venta, y el precio generalmente se basa en el precio de cierre de la línea K. Y una línea K solo puede obtener cuatro precios de alta y baja, y no se obtiene información sobre cómo cambia el precio dentro de una línea K, si el precio más alto ocurre primero o si el precio más bajo ocurre primero, etc. Por ejemplo, en la línea K de 1 hora, se obtiene una información de movimiento a intervalos de segundos en tiempo real, y las instrucciones de negociación se emiten en el disco en lugar de esperar que termine la línea K. El mecanismo de retorno onbar es muy fácil de entender, el retorno es muy rápido.

La plataforma FMZ repetió dos tipos de repetición a nivel analógico y a nivel de disco real. La repetición a nivel analógico generará 14 puntos de tiempo de repetición en cada ciclo de línea K de base, según el tick generado en la simulación.El nivel de disco real es el tick real recogido, aproximadamente una vez cada pocos segundos, y actualmente parte de él es compatible con la profundidad real (incluye 20 archivos) y la transacción real por pieza.El volumen de datos es grande y la velocidad de repetición es lenta, por lo que no se puede volver a replicar en un tiempo particularmente largo. El mecanismo de repetición de FMZ puede hacer que la estrategia se negocie varias veces en una línea K, evitando situaciones en las que solo se puede cerrar el precio de transacción, y es más precisa y tiene en cuenta la velocidad de repetición.https://www.fmz.com/digest-topic/4009

El marco de la política de repetición es el mismo que el disco real y es un ciclo muerto. Como la repetición se hace saltando a diferentes puntos de repetición, en este momento se puede dejar de usar Sleep, que salta automáticamente al siguiente punto de tiempo al final de un ciclo.Sleep(10)En el video, el hombre dice que su esposa y su hijo fueron asesinados.

Reproducción de las imágenes

El motor de repetición se basa en el precio de compra del usuario y el precio de salida en el momento de repetición. Si el precio de compra es mayor que el precio de venta, se vende una transacción. Si no se puede realizar, se genera un listado.

Configuración de la página de revisión

img

  • 1.回测页面的选择,左侧是策略编辑页面。
  • 2.回测起始结束时间,由于数据不完整,回测可能直接从有数据的时间开始。
  • 3.回测GetRecords()Los ciclos predeterminados de las funciones también pueden especificar parámetros de ciclos en el código.
  • 4.回测机制的选择。
  • 5.展示或隐藏跟多回测设置。
  • 6.最大日志数、收益数据数、图表数据数等,为了防止数据量过大导致浏览器卡死。
  • 6.底层tick生成依据K线周期。
  • 7.交易滑点。
  • 7.容错,会模拟API请求出错情况,检查策略容错能力。
  • 8.是否绘制行情图标,回测中如果使用了TA指标函数,会自展示在图标上,买卖也会标记。
  • 9.手续费设置
  • 10. Añadir intercambios - pares de transacciones y activos.
  • 11.回测参数设置,如果参数是数字还支持一键优化参数,自动按照一定范围遍历参数回测。

Diferencias entre las pruebas y los discos reales

  • 1.回测时有效的行情只有GetTicker和GetRecords,其它如获深度、成交历史都不是真实的(因为数据量太大,实盘级回测目前已经支持这些数据,但只有最近数据)。
  • 2.回测添加的交易所都是独立账户,目前不支持切换交易对。因此无法在一个账户里操作两个交易对。
  • 3.回测中无法使用网络请求。
  • 4.回测无法使用IO扩展,只能操作最基础的API。
  • 5.回测只能获取标准的数据,像Info之类的牵扯到实盘的数据不存在。
  • 6.回测中也有可能不成交,注意冻结订单情况。
  • 7.商品期货回测不支持市价单。

La estrategia es tolerante con los errores comunes

Como se mencionó anteriormente, el uso de interfaces API en el disco físico también puede causar que el acceso falle y regrese.nullLa política es la de tolerar los errores, ya que el uso de los datos en ellos puede generar errores y causar que el disco se detenga.

El uso frecuente de la forma errónea

Los errores más comunes:

  • El API accede a errores de red, el tiempo de acceso a la interfaz regresará a cero, y el uso de este tiempo reportará errores.
  • Los intercambios limitan los errores, como el límite de IP, la precisión del pedido, la frecuencia de acceso, los errores de parámetros, la falta de activos, la imposibilidad de negociar en el mercado, la revocación de pedidos realizados, etc. Puede consultarse la documentación de la API en función del código de error.
  • Los intercambios devuelven errores en los datos, que ocurren de vez en cuando, como la profundidad de los vacíos devueltos, la información de la cuenta retrasada, el estado de los pedidos retrasados, etc.
  • El error de programación y lógica.

Antes de usar la API para devolver los datos, se debe juzgar si es null o no. A continuación se presentan los métodos comunes de agrupamiento:

//1.判断为null进行处理
var ticker = exchange.GetTicker();
while(ticker == null){
     Log('ticker 获取出错');
     ticker = exchange.GetTicker();
 }
 Log(ticker.Last);
 // 2.判断不为null再进行引用
 var ticker = exchange.GetTicker();
 if(!ticker){
     Log(ticker.Last);
 }
 // 3._C()函数重试
 var ticker = _C(exchange.GetTicker);
 Log(ticker.Last);
 // 4. try catch容错
 try{
     var ticker = exchange.GetTicker();
     Log(ticker.Last);
 }
 catch(err){
     Log('ticker 获取出错');
 } 

Si quieres obtener información errónea, puedes usarla.GetLastError(), devolverá la última cadena de información de error, y se puede procesar la diferenciación de errores.

Preguntas frecuentes

En la actualidad, hay muchos errores en los resúmenes de los mensajes en los foros:https://www.fmz.com/bbs-topic/1427Aquí hay un resumen de algunos problemas que pueden ser resueltos con la búsqueda CTRL+F.

¿Cómo se colocan los custodios?

Para más información, véase la sección Añadir administradores.

¿Puede alguien encontrar una estrategia para la escritura genérica?

https://www.fmz.com/marketsAlgunas personas ofrecen servicios de redacción o consultan en grupos, y necesitan comunicarse a su propio riesgo.

Todos los accesos a las interfaces indican un tiempo de espera

Se refiere al tiempo de acceso a la interfaz de intercambio, si ocasionalmente no es un problema, si siempre se indica que la red en la que se encuentra no se puede acceder, se necesita usar un servidor extranjero.

Error en la ubicación de error.

El sistema de detección de errores, generalmente un error escrito para la estrategia, provoca el error al intentar bajar el nivel de la posición cuando no hay tenencia o no hay suficiente cantidad de tenencia.

símbolo no establecido

Las bolsas de futuros no tienen contratos establecidos en el código, por lo que consulte la función exchange.SetContractType

BITMEX 429 error, {error:{message:Rate limit exceeded retry in 1 seconds......}}

La frecuencia de acceso a las interfaces de los intercambios es demasiado alta.

El estado está fuera de alcance.

El horario del servidor está fuera de su rango y necesita actualizar el tiempo del servidor, no puede ser demasiado desviado.

GetOrder ((455284455)): Error: ID de pedido no válido o orden cancelada.

Algunos intercambios han cancelado sus órdenes y no tienen acceso a la información de las mismas, ya que las mismas no la mantienen.

Obtener órdenes: 400: {código:-1121, msg: símbolo no válido. }

Los pares de transacciones no válidos, se comprueban si hay un error en la configuración de los pares de transacciones.

El descifrado de la clave secreta falló.

Si se ha modificado el código de FMZ después de la configuración de APIKEY, intente agregar una página de intercambio en FMZ y reconfigure el APIKEY de la bolsa.

Signature not valid: Invalid submission time or incorrect time format (La firma no es válida: tiempo de presentación no válido o formato de tiempo incorrecto)

Se recomienda usar servidores Linux o software de sincronización de tiempo de instalación en los sistemas windows en los que se presente el problema.

¿Por qué se ha creado un agente global y los administradores no pueden acceder a la API de los intercambios?

Los agentes globales no tienen puertos de red de hosts de agentes, por lo que es mejor que los hosts de servidores extranjeros se desplieguen debido a problemas de latencia.

¿Cómo se mantiene la estrategia local y no en la FMZ subida?

Se puede importar un archivo local con Python, guardar las políticas normalmente escritas en base a la API de FMZ en un archivo bajo el camino de ejecución en su propio servidor y leer directamente la ejecución.

#!python2.7

def run(runfile):
      with open(runfile,"r") as f:
            exec(f.read())
            
def main():
    run('my.py')

Cómo usar la red de pruebas de los intercambios o cambiar la dirección de base de la API

Se puede cambiar directamente a la dirección de la base de la API correspondiente con el exchange.SetBase (():

exchange.SetBase("https://www.okex.me")

Más.

el gaoencheerApio

Ciencia¿Cómo implementar la política en local? He escrito una sencilla declaración de salida de Log y he seguido la operación al final de la frase. El primer paso es usar una computadora portátil como servidor y ejecutar el programa administrador. El segundo paso es escribir un programa test.py para la salida de la información de Log (la función de la interfaz API de FMZ). El tercer paso, al igual que al final del texto, es escribir un runfile que se ejecute mediante la llamada run.py a test.py.

el giso9¿Qué pasa con el curso de comercio cuantificado en la nube que compré?

¿ Qué es eso?Muchos

¿ Qué es eso?- ¿ Qué pasa?

¿Qué es eso?Aprendiendo

¿Qué es?Hay un pequeño error de texto, GetAccount tiene acceso a la cuenta. En la introducción, FrozenStocks debería ser un saldo congelado y no disponible.

¿Qué es eso?getorder outtime ¿Qué sucede cuando obtienes un pedido fuera de tiempo?

Los árboles de madera hacen trucos.La tasa de garantía de los activos no se puede obtener, hasta el 0% será obligado a liquidar la tasa de garantía de los activos

el año 2020Yo estoy viendo el operador de la k-string de 1 minuto, por lo que el tiempo de sueño del ciclo muerto de Python se puede configurar en 0.1s, es decir, sleep ((100) ¿Veo que has escrito un sleep ((10)), es decir, 0.1s no excederá el límite de API de huobi HM?

El templo del viento orientalexchange.SetDirection (("closebuy"); // si es un contrato permanente, establece directamente el exchange.SetDirection (("sell") Aquí probé el contrato perpetuo OKex, y si lo ponemos en sell, se abre directamente, no es tan barato.

El templo del viento orientalexchange.SetDirection (("closebuy"); // si es un contrato permanente, establece directamente el exchange.SetDirection (("sell") Aquí probé el contrato perpetuo OKex, y si lo ponemos en sell, se abre directamente, no es tan barato.

El templo del viento orientalHay dos errores de ortografía en el código de GetOrders. Uno es que la función se escribe como una función y el otro como una condición del ciclo for.

El templo del viento orientalEs mi culpa. exchange.Buy ((-1, 0.5), el par de transacciones es ETH_BTC, y el listado de mercado representa la compra de ETH de 0.5BTC exchange.Buy ((price, 0.5), si este es el tipo de lista de precios, representa comprar 0.5ETH con el precio de precio.

El templo del viento orientalexchange.Buy ((-1, 0.5), el par de transacciones es ETH_BTC, que representa la compra de ETH de 0.5BTC al precio del mercado Esto es lo que se supone que es el precio de compra de 0.5 ETH de aluminio.

el giso9Gracias.

Las hierbasEl curso está disponible en línea desde hace mucho tiempo.

Las hierbasAñade WeChat a la página de inicio para que te atraiga.

¿Qué es?¿Tenemos algún grupo oficial de intercambio? A veces tenemos problemas y no sabemos dónde preguntar.

Las hierbasCambiado

Las hierbasObtener otra vez

Las hierbasLa información original se puede ver en GetRawJSON o en el campo de información

El templo del viento orientalMuy bien, muy bien, también hay respuesta administrativa.

Las hierbasOh, corregido, gracias por señalar el error.

Las hierbasAlgunos contratos perpetuos permiten el mantenimiento bidireccional, por lo que se requiere establecer el equilibrio.