OK, tengo mi curso MQL4 del gurú del codificador abierto en el capítulo Bucles y decisiones, esto puede llevar un poco de tiempo, pero haré todo lo posible para responder a mis propios ?'s... gracias por la ayuda de nuevo... .
Publi |
Creo que este es el código: Código insertado bool flag=false; for (int i=25;igt;0;i--) { if (iRSI(NULL, 60,14,PRICE_CLOSE,i)gt;50) flag=true; } Tenemos un indicador establecido en falso. Si la bandera es falsa al final del ciclo, todos los RSI han estado por debajo de 50. Si la bandera es verdadera después de pasar por ese ciclo, uno o más de los RSI fueron gt; 50. Espero que ayude,
OK, tengo mi curso MQL4 del gurú del codificador abierto en el capítulo Bucles y decisiones, esto puede llevar un poco de tiempo, pero haré todo lo posible para responder a mis propios ?'s... gracias por la ayuda de nuevo... .
Justo en la parte superior de mi cabeza, podría usar un ciclo para regresar y obtener el rsi para cada uno de los últimos x períodos de tiempo. Si el RSI para cualquiera de los períodos de tiempo dados es superior a 50, establezca un var y finalice el ciclo. De lo contrario, devuelve verdadero.
Iniciado por ;Iniciado por ;
okaaaaaay ahora lo siguiente: iRSI(NULL, 60,14,PRICE_CLOSE,25); Esto devuelve el valor RSI(14) para la barra de precios hace 25 barras. Si quiero asegurarme de que el valor del RSI ha estado por debajo de 50 durante las últimas 25 barras, ¿cómo se haría/codificaría eso? dado que: RSTRhistory= iRSI(NULL, 60,14,PRICE_CLOSE,0); si RSTRhistory lt; 50 .... para los últimos 25 compases { bla, bla, bla }
Este es el código que uso para hacer lo único al cerrar. Coloque esta función entre init y deinit (¡No en ellos!) Código insertado bool NewBar() { static datetime lastbar = 0; barra de curva de fecha y hora = Hora # 91; 0 # 93;; if(lastbar!=curbar) { lastbar=curbar; volver (verdadero); } más { retorno (falso); } } Luego, en su start() simplemente ponga: Inserted Code if (NewBar() == true) y luego enumere sus condiciones y señales de compra/venta. Esto solo activará cosas cuando sea una barra nueva. Espero que ayude,
OK: Entonces lo siguiente: SEma = iMA(NULL, 15, ShortEma, 0, MODE_EMA, PRICE_CLOSE, 0); LEma = iMA(NULL, 15, LongEma, 0, MODE_EMA, PRICE_CLOSE, 0); espera el cierre de la barra de 60 minutos para asegurarse de que la MA más rápida (SEma) haya cruzado la MA más lenta (LEma)? dado que: extern int ShortEma = 5; externo interno LongEma = 12;/ -------------------------------------------------------- ------------------- /| función de inicialización experta |/ -------------------------------------------------------- ------------------- int init() {/---- retorno(0); }/ ---------------------------------------------- -------------------- /| función de desinicialización experta |/ -------------------------------------------------------- ------------------- int deinit() {/---- return(0); }/ ---------------------------------------------- -------------------- /| |/ -------------------------------------------------------- ------------------- int Crossed (doble línea1, doble línea2) { static int last_direction = 0; static int dirección_actual = 0; estático bool primera_vez = verdadero; if(primera_vez == verdadero) { primera_vez = falso; retorno (0); }/---- if(linea1 gt; linea2) dirección_actual = 1;/arriba if(line1 lt; line2) dirección_actual = 2;/abajo/---- if(current_direction != last_direction)/modificado { last_direction = current_direction; return(última_dirección); } más { retorno (0);/no cambiado } }/ ----------------------------------------- ------------------------- /| función de inicio experto |/ -------------------------------------------------------- ------------------- int start() { int cnt, ticket, total; doble SEma, LEma;/---- if(Bars lt; 100) { Print(bars menos de 100); retorno(0); }/---- if(TakeProfit lt; 10) { Print(TakeProfit menos de 10); retorno(0);/comprobar TakeProfit }/---- SEma = iMA(NULL, 60, ShortEma, 0, MODE_EMA, PRICE_CLOSE, 0); LEma = iMA(NULL, 60, LongEma, 0, MODE_EMA, PRICE_CLOSE, 0);/---- static int isCrossed = 0; isCrossed = Crossed (LEma, SEma);/---- total = OrdersTotal(); if(total lt; 1) { if ((isCrossed == 1) { ingrese órdenes aquí........... bla, bla, bla ¿Cómo codificaría esto para asegurarme de que los MA se hayan cruzado al final? del cierre del bar actual y no solo durante el bar? Oye, mira, post #300, ¿no me dan una camiseta o algo? Oh, espera, creo que tengo que contribuir con algo de mérito primero, no importa.
- depende de cómo codifique su EA. Si codifica su EA para que solo verifique cruces al cierre de una barra o en un momento específico, entonces las operaciones solo deberían ocurrir en ese momento y no durante la barra. Strategy Tester respetará cualquier lógica que tenga en su código. Lo mismo es cierto para su pregunta sobre la salida de operaciones.Iniciado por ;
Gracias stockwet... No pensé en eso. Un cruce durante o después (al cierre) son dos cosas totalmente diferentes, especialmente en un marco de tiempo de 60 minutos...
Aviso legal: Ni forosforex.com ni ninguna persona involucrada en forosforex.com aceptarán ninguna responsabilidad por cualquier pérdida o daño en el trading como resultado de la confianza en la información contenida en este sitio web, incluidos datos, cotizaciones, gráficos y señales de compra/venta. Por favor, infórmese plenamente de los riesgos y costes asociados a las operaciones en los mercados financieros, una de las formas de inversión que más riesgos entrañan.
forosforex.com le quiere recordar que los datos contenidos en este sitio web no son necesariamente en tiempo real ni exactos. forosforex.com no asume responsabilidad alguna por las pérdidas en que usted podría incurrir como resultado de la utilización de estos datos. Este acuerdo se rige por su versión en inglés, que prevalecerá siempre que haya alguna discrepancia entre la versión en inglés y la versión en español.
Los CFD son un producto difícil de entender, varios organismos reguladores consideran que no es adecuado para inversores minoristas debido a su complejidad y riesgo.
Advertencia de riesgo: Los CFDs son un producto difícil de entender, y puede no ser adecuado para inversores minoristas debido a su complejidad y riesgo. Existe la posibilidad de sufrir una pérdida igual o superior a la inversión. Por lo tanto, no debe invertir o arriesgar dinero que no pueda permitirse perder. Debe asegurarse de que comprende todos los riesgos. Antes de abrir una cuenta en un broker por favor sea consciente e infórmese de los riesgos asociados con el trading. El contenido de este sitio web no debe interpretarse como asesoramiento personal. ForosForex recomienda que busque el consejo de un asesor financiero independiente.