Aprender a construir un módulo de visualización es una estrategia de transacción, una comprensión conceptual de cómo construir un módulo de visualización, y una comprensión conceptual de cómo construir un módulo de visualización. Después, es fácil aprender a usar otros módulos. Las funciones más complejas pueden combinarse.
En estudios y pruebas anteriores, ya hemos abordado varios módulos de "categorias de transacciones". Por ejemplo: El módulo "Exchanges Acquire Markets" Modulo "Exchanges obtienen K-Line" ¿Qué es esto?
Los que ya han sido usados no se describen.
Cuando se escribe una estrategia para realizar operaciones con robots, se puede agregar más de un objeto de intercambio, como una estrategia de cobertura. O puede ser necesario recorrer (que significa recorrer una vez por cada uno) el objeto de la bolsa, cuando se visita el mercado. En este momento, se necesita un módulo para obtener el número de intercambios.
Para empezar, podemos imprimir el número de bolsas que están configuradas en la actualidad con una estructura simple:
En realidad, es como llamar a este código de la política de JavaScript:
function main () {
Log(exchanges.length)
}
Veamos el resultado de este módulo combinado:
Se puede ver que hemos añadido 3 objetos de intercambio que representan tres cuentas de intercambio diferentes, y el resultado de retrospección de los logs es 3.
Cuando se agregan tres objetos de intercambio, el menú desplegable muestra tres opciones. Aprender un módulo de ciclo con anticipación, en el tipo de ciclo.
En este artículo, vamos a aprender un módulo de determinación condicional:Los criterios de juicio pueden ser:
Usamos el módulo circular para recorrer los nombres de las bolsas agregadas. Utiliza el módulo de juicio condicional para determinar si el conteo de ciclos actual corresponde al nombre de la bolsa a imprimir.
Los resultados de la prueba:
Por ejemplo, el código de la política de JavaScript:
function main () {
for (var i = 1 ; i <= exchanges.length ; i++) {
if (i == 1) {
Log(exchanges[0].GetName())
} else if (i == 2) {
Log(exchanges[1].GetName())
} else {
Log(exchanges[2].GetName())
}
}
}
Un ejemplo sencillo es obtener el primer par de transacciones de un objeto de intercambio en la configuración actual y asignar un valor a la variable text (creado de antemano en la categoría de variables).
Los resultados de las pruebas:
Si se llama el código de la política de JavaScript:
function main () {
var text = exchange.GetCurrency()
Log(text)
}
Este módulo es muy importante para la operación de pedido, donde la primera posición de la barra de precios está incrustada en la variable de precio, para especificar el precio del pedido, o también puede ingresar directamente un número fijo. La segunda posición de la barra (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
Por ejemplo, podemos juntar un ejemplo de pago de un último precio basado en datos de transacción de ticks actuales, más un precio de deslizamiento de 10 dólares, un mínimo de unidad de 0.1 centavos, y imprimir el ID del pedido.
Los resultados de la prueba:
Por ejemplo, el siguiente código de la política de JavaScript:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last + 10, 0.1)
Log(id)
}
El módulo devuelve todos los pedidos de comisión que están en estado de no finalización en el par de transacciones actuales, y devuelve una estructura de lista (arreglo) que se puede procesar con módulos de tipo lista (operación de recorrido, etc.). Por ejemplo: modificamos un poco el ejemplo de módulo de compra de 4 puntos de venta anterior, cambiando el precio de 10 dólares añadidos al momento de la compra a menos de 10 dólares. La orden no se pagará inmediatamente, sino que estará suspendida en la profundidad de compra y venta (es decir, en un rango de compra 1, compra 2 y compra N), de modo que la orden esté en el estado de espera de la lista de espera de la transacción. A continuación, usamos el módulo "Obtener la transacción actual de la orden de encargo" para obtener la lista de pedidos que están en estado PENDING ("en espera de transacción"). Para evitar que la transacción de pedidos en el mercado posterior afecte a la revisión de la última observación, después de ejecutar el módulo "Obtener transacciones actuales para pedidos de encargo", imprimimos la lista de pedidos e inmediatamente utilizamos el módulo "Echar excepciones" para detener el proceso.
El análisis muestra:
El precio de la próxima compra es 10 dólares menos que el precio más reciente, por lo que no se realizará de inmediato. Luego, se obtienen los pedidos que están en espera de transacción y se imprimen. Por último, lanza una excepción y detiene el programa.
El módulo entero se agrupa como si llamara a una política de JavaScript:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(id)
Log(exchange.GetOrders())
throw "stop"
}
Este módulo se utiliza para cancelar pedidos.
Hay muchos escenarios que requieren esto cuando se escribe una estrategia:
En la actualidad, el sitio web de Facebook de la empresa, Twitter, ha anunciado la cancelación de todos los pedidos que están pendientes.
Sin duda, esto se debe a que se utiliza el "módulo de retiro", mientras que al mismo tiempo que se aprende el módulo de retiro, se puede utilizar el módulo de retiro 5 para obtener la transacción actual de la orden de encargo, la combinación para implementar esta función.
En primer lugar, para probar la revocación de todos los pedidos, colgar un pedido no es muy obvio, comenzamos a hacer dos pedidos, con diferentes cantidades de precios para distinguir los dos pedidos.
Utiliza el módulo "Corre cada elemento de la lista" en el módulo de tipo de ciclo para recorrer los pedidos en la lista de menús en curso.Cuando se recorre, cada orden extraída se asigna al módulo de variables order ((creado en el tipo de módulo de variables, como se muestra a continuación:)En el módulo de tipos de herramientas:Extraer el ID de la orden, enviarlo a la posición de la barra de la unidad de cancelación de la orden, y ejecutar la orden de cancelación en el módulo de cancelación de la orden.
La prueba está en marcha:
Describir con las políticas de JavaScript:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(id)
var id2 = exchange.Buy(_C(exchange.GetTicker).Last - 12, 0.2)
Log(id2)
var orders = exchange.GetOrders()
Log(orders)
for (var i in orders) {
var order = orders[i]
Log(exchange.CancelOrder(order.Id))
}
}
El módulo tiene acceso a un módulo de variables de ID de pedido, que puede devolver información detallada sobre el pedido.
Observe los pedidos que regresan después de la operación:
La comparación de los resultados de la ejecución en el ejemplo de la 5a tonelada y la 5a tonelada muestra que la orden impreso es una información de orden separada, sin[]
Los paréntesis en el centro del paquete.
Dado que en el ejemplo de la columna 5 se devuelve una lista, este ejemplo devuelve una información de orden separada (obtención de un módulo de variables ID basadas en la posición de la columna en la que se transmite el módulo).
Los ejemplos anteriores son similares a las políticas de JavaScript:
function main () {
var id = exchange.Buy(_C(exchange.GetTicker).Last - 10, 0.1)
Log(exchange.GetOrder(id))
}
En el módulo anterior, aprendemos uno por uno, probando los intercambios que establecemos como futuros de productos.
El cambio de configuración:Los siguientes ejemplos se utilizan para realizar pruebas de retrospección en función de esta configuración.
Modulo de estado de conexión de servidores de futuros de commodities y de futuros de CTP
Los futuros de mercancías tienen horario de apertura y horario de cierre, y no se pueden conectar durante el cierre.
Configurar el módulo de contrato
Cuando el objeto de la bolsa se configura como una bolsa de futuros, no se establece un contrato y se obtiene directamente el mercado, se produce un error:
Hemos establecido el contrato como MA909, y el metanol es el contrato principal ahora.Así se obtiene el valor del precio más reciente en el tick actual del contrato MA909.
Configurar un módulo unidireccional para el comercio de futuros
Se ejecuta en el módulo de subordinación
Los futuros tienen:
Buy: más posiciones
Vender: el almacén vacío
closebuy: el precio de compra más alto
Closesell: almacenamiento en plano
Cuatro direcciones (los futuros de productos son dos direcciones adicionales: closebuy_today, y closesell_today, que es una posición plana en la que hay más de una posición).
Por ejemplo, si el módulo de la orden se configura para comprar, entonces hay dos significados de almacén abierto y almacén vacío, lo que produce una binomial. Por lo tanto, se necesita el módulo "Configurar la dirección de la operación de futuros" para establecer una dirección de la orden clara.
Los resultados muestran:
Por ejemplo, el código de la política de JavaScript:
function main () {
while (true) {
if (exchange.IO("status")) {
exchange.SetContractType("MA909")
Log(exchange.GetTicker().Last)
exchange.SetDirection("buy")
Log(exchange.Buy(1000, 1))
throw "stop"
} else {
Log("未连接商品期货前置机")
}
Sleep(1000)
}
}
El uso de los futuros de la moneda digital es básicamente el mismo que el uso de los futuros de mercancías en los 8 de arriba.
El código de contrato, en el caso de OKEX, puede ser:
BitMEX:
Configurar el módulo de palanca
Para establecer el apalancamiento de los futuros de las monedas digitales.
# 注意 : 回测不支持。
Por ejemplo, la política de JavaScript:
function main () {
exchange.SetMarginLevel(10)
}
Las estrategias para visualizar el paradigma:
Para más estrategias:https://www.fmz.com/square
Otros artículos de esta serie
- ¿ Qué pasa?¡Después de haber aprendido más de un mes de programación, no puedo escribir estrategias, y ahora todo depende de los bloques!
Los inventores cuantifican - sueños pequeñosGracias por su apoyo, esta serie de artículos continuará. De hecho, según el código de la política de JavaScript correspondiente detrás de cada patrón, es fácil dominar la política de escritura en JS.