Estrategia de línea media de 30 líneas para crear un sistema de ganancias positivas
Es cierto, es cierto lo que escuchas, son 30 líneas de código.
Los parámetros de la política son los siguientes:
| parámetro | describir | tipo | Valores por defecto |
|---|---|---|---|
| FastPeriod | Ciclo de línea rápida de entrada al mercado | Tipo de número | 3 |
| SlowPeriod | Ciclo de línea lenta de entrada al mercado | Tipo de número | 7 |
| EnterPeriod | Periodo de observación de la entrada en el mercado | Tipo de número | 3 |
| ExitFastPeriod | Ciclo de línea rápida fuera de la ciudad | Tipo de número | 3 |
| ExitSlowPeriod | Ciclo de salida de la ciudad | Tipo de número | 7 |
| ExitPeriod | Período de observación fuera de la ciudad | Tipo de número | 1 |
| PositionRatio | Porcentaje de posiciones | Tipo de número | 0.8 |
| Interval | Periodo de encuesta (segundos) | Tipo de número | 10 |
- Se ha importado.
交易类库Es una estrategia sencilla, no hay que estar pendiente de comprar o vender. - Cuando se encuentran con una variable no declarada que los confunde al leer el código, diríjase al grupo para responder.
function main() {
var STATE_IDLE = -1;
var state = STATE_IDLE;
var opAmount = 0;
var initAccount = $.GetAccount();
Log(initAccount);
while (true) {
if (state === STATE_IDLE) {
var n = $.Cross(FastPeriod, SlowPeriod);
if (Math.abs(n) >= EnterPeriod) {
opAmount = parseFloat((initAccount.Stocks * PositionRatio).toFixed(3));
var obj = n > 0 ? $.Buy(opAmount) : $.Sell(opAmount);
if (obj) {
opAmount = obj.amount;
state = n > 0 ? PD_LONG : PD_SHORT;
Log("开仓详情", obj, "交叉周期", n);
}
}
} else {
var n = $.Cross(ExitFastPeriod, ExitSlowPeriod);
if (Math.abs(n) >= ExitPeriod && ((state === PD_LONG && n < 0) || (state === PD_SHORT && n > 0))) {
var obj = state === PD_LONG ? $.Sell(opAmount) : $.Buy(opAmount);
state = STATE_IDLE;
var nowAccount = $.GetAccount();
LogProfit(nowAccount.Balance - initAccount.Balance, '钱:', nowAccount.Balance, '币:', nowAccount.Stocks, '平仓详情:', obj, "交叉周期", n);
}
}
Sleep(Interval*1000);
}
}
- Esta estrategia solo tiene una función principal principal (), sin otros módulos de la función. La función principal tiene solo un ciclo.
- He publicado una versión de la estrategia con comentarios en el código y la he compartido en el grupo de QQ, para que los estudiantes que están aprendiendo por primera vez puedan ver los comentarios para que les sea más fácil aprender.
- Si no estás en el grupo oficial de QQ, puedes unirte a: 309368835 Inventor Quantitative EA Communication (BotVS) ¦ ¡La estrategia es tan sencilla que sólo tiene que ser decenas de líneas de código!
- Para los estudiantes que no tienen conocimientos básicos de Javascript, vamos a hablar de la gramática para evitar que los estudiantes no entiendan el código.
Declaración de las variables
Las palabras clave.var+ Nombre de la variable, por ejemplovar name = “小明”
El ciclo
while(循环条件){
// 将会重复执行的代码
}
El código dentro de {} se ejecuta repetidamente si la condición de ciclo es verdadera. Si la condición de ciclo es falsa, salta del ciclo.
Subdivisión condicional
if (判断条件){
// 执行代码
} else {
// 执行代码
}
Es muy sencillo, la traducción es que si es verdad (ejecutar este código) entonces su estado (ejecutar este código) es que si es verdad (ejecutar este código) entonces su estado (ejecutar este código) es que si es verdad (ejecutar este código) entonces su estado (ejecutar este código) es que si es verdad (ejecutar este código) entonces su estado (ejecutar este código) es que si es verdad (ejecutar este código) entonces su estado (ejecutar este código) es que si es verdad (ejecutar este código)
Valoración
Uno de ellos.=El número es atribuido, por ejemplo.
name = “张三”;
Es fácil confundir la atribución con la comparación.
Por ejemplo, comparando==El número es igual a 2.
Ejemplos“张三”==“李四”Es evidente que Zhang Shui no es Li Jie, así que...“张三”==“李四”¿Por qué es falso?
Aplicaciones relacionadas
Antes de escribir la demostración de la estrategia, analizamos las API y las funciones de exportación de plantillas utilizadas en la estrategia. Hay una documentación detallada de la API y el código fuente de la plantilla en el inventor de cuantificación.
- $.GetAccount: función de exportación de la plantilla para obtener información sobre las cuentas de las casas de cambio
- Función de registro: API para la salida de información a los registros, mostrar valores, etc.
- $.Cross Función: Función de exportación de la plantilla para detectar el cruce de los indicadores de línea media
- $.Buy: función de exportación de la plantilla para comprar
- $.Sell: función de exportación de la plantilla para operaciones de venta
- Función LogProfit: API, para la salida de ganancias, la función puede agregar otra información a partir del segundo parámetro
- La función Sleep:API, que hace que el programa se detenga por un momento, tiene la unidad de parámetros en milisegundos.
El código de la estrategia también usa las funciones de la biblioteca de Javascript, los métodos de objetos.
- Math.abs() Función: devuelve el valor absoluto de los argumentos
- La función toFixed (() de un objeto Number: guarda los dígitos pequeños en cuadros y quintos según los parámetros. Tenga en cuenta que la función devuelve una cadena
- parseFloat global: devuelve el número de flotación de los argumentos de la cadena.
Para obtener más información acerca de Javascript, visite: Objetos de números JavaScript http://www.w3school.com.cn/jsref/jsref_obj_number.asp
El diagrama del programa, dibujado a mano, no con herramientas, muy amateur.
Construyendo nuestra estrategia paso a paso
Todas las entradas de los programas de estrategia son:main()Función, es decir, la estrategia se ejecuta desde la función principal.
Oferta firme
¡Esto es lo que hace que una estrategia de 30 simples líneas sea posible!
La estrategia de Running! ya está en marcha, compra el operativo.
Gracias a Inventor Quantify, que ofrece un código tan sencillo, hay una gran cantidad de estrategias de código abierto disponibles para aprender y mejorar en Inventor Quantify, junto con muchos otros expertos en cuantificación.
官方QQ群定期更新学习资源,为量化学习者铺平道路,登堂入室。
Enseñanzas en video
http://v.youku.com/v_show/id_XMTUyNDY1NjQ2NA==.html
Información de referencia
$.GetAccount 是FMZ 模板的导出函数(模板就是可复用的代码,参看API 文档上模板的描述)。 $.GetAccount是这个模板:https://www.fmz.com/strategy/10989 的导出函数。
上面的策略只是代码部分,没有策略参数设置,完整的策略可以在策略广场搜索30行均线策略。
就是2条均线,快线上穿慢线 一般是买入信号,上涨概率较大(程序自动买入操作)。 快线下穿慢线一般是卖出信号,下跌概率较大(程序自动卖出)。通过这样反复操作 在行情上升趋势中可以攫取利润。
- 1








