[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 78

 
goldtrader >> :

La condición bajo la primera sentencia condicional if se aplica sólo a la siguiente sentencia después de ella (la siguiente línea).

Los demás se ejecutan a menos que. Es decir, aunque no haya una orden para cerrar una orden, uno de los sonidos de juego funcionará.

La forma correcta es esta:

La cosa es que ambos playsounds funcionan - PlaySound("timeout.wav") funciona, después PlaySound("money.wav"), el trato se cierra normalmente, pero antes de su cierre hay un error de playsound y esto funciona sólo para tratos cortos, para tratos largos todo es normal - PlaySound("money.wav") si está cerrado y PlaySound("timeout.wav") si es un error, el mismo diseño para las operaciones largas y cortas. Intentaré poner paréntesis como has descrito, no sé si está en ellos))


 
Dimoncheg >> :

... >> Probaré con paréntesis como los que has descrito, no sé si es eso).

Es difícil obtener un resultado positivo con ese enfoque.

 
goldtrader >> :

Con este enfoque es difícil conseguir un resultado positivo.

Estoy profundamente convencido de que el resultado no depende de la forma de presentar el texto en el foro)) Al menos yo no me incluyo a la intelectualidad, pero es una mierda todo el tema)).

Hice paréntesis para el envío de pedidos, lo mismo, primero un sonido de error y luego un sonido de cierre. Para las largas todo está bien como antes. Así que todo funciona, por supuesto, acaba de insertar una función para ver qué tipo de errores, es por eso que este sonido apareció antes de que el sonido de cierre, y antes de que no se dio cuenta, por supuesto - todo funciona

 

Bien, sólo como referencia. El comando PlaySound() no espera a que el sonido anterior termine, sino que simplemente interrumpe e inicia su propio sonido. En un bucle rápido, los sonidos intermedios pueden ser absorbidos.

 
Roger >> :

Bien, sólo como referencia. El comando PlaySound() no espera a que el sonido anterior termine, sino que simplemente interrumpe e inicia su propio sonido. En un bucle rápido, los sonidos intermedios pueden ser absorbidos.

Si fuera sólo en el sonido, el error "No hay error" aparece en el registro para cualquier cierre de las operaciones cortas, se cierran 3 operaciones - 3 errores, etc, pero después de que se cierra todo y el registro se prescribe el cierre, para las operaciones largas, todo es normal y los sonidos funcionan como se pretende, y el error no se prescribe, pongo un deslizamiento durante 3 segundos y 5 segundos, todo lo mismo, sólo que con el retraso adecuado

 
¿Puedes darme una pista? Hay una variable que debería calcularse para cada barra individualmente, es decir, [i+1]=0,9, [i+2]=0,8, [i+3]=1,5........ pero lo que tengo es que para todas las barras del histórico se aplica el último valor calculado......... si es la última 1, entonces [i+1]=1, [i+2]=1, [i+3]=1 y si es la última 2, [i+1]=2, [i+2]=2, [i+3]=2 respectivamente....
 
Dimoncheg писал(а) >>

Si sólo en el sonido fue el asunto, el error "No hay error" aparece en el registro en cualquier cierre de operaciones cortas, 3 operaciones se cierran - 3 errores, etc, pero después de que todo está cerrado y el registro prescrito cierre, para las operaciones largas están bien, y el sonido funciona como se pretende, y el error no se prescribe, se inserta un deslizamiento durante 3 segundos y 5 segundos, todo lo mismo, pero con el retraso adecuado

Ya sabes, me pasó algo parecido, me esforcé, puse retrasos, no hubo progreso. Luego comprobé si el pedido estaba cerrado por

if(OrderCloseTime()!=0)

Todos mis problemas desaparecieron de inmediato. Pruébalo.

 
RocketTrend писал(а) >>
¿Puedes darme una pista, por favor? Hay una variable que debería calcularse para cada barra individualmente, es decir, [i+1]=0,9, [i+2]=0,8, [i+3]=1,5........ pero lo que tengo es que el último valor calculado se aplica a todas las barras en el historial......... si es la última 1, entonces [i+1]=1, [i+2]=1, [i+3]=1 y si es la última 2, [i+1]=2, [i+2]=2, [i+3]=2 respectivamente....

Es muy difícil de decir, publique ese pedazo de código en su totalidad.

 
Reshetov >> :

Si necesitas depurar, utiliza Print()

Pero en la mayoría de los casos no lo necesitas.


Bueno, yo soy de otra opinión. Estoy escribiendo un Asesor Experto ahora, y estoy teniendo muchos problemas sin un depurador adecuado. Especialmente con las matrices de datos.

Para estar seguro de que el algoritmo funciona correctamente, necesito analizar los datos obtenidos al calcular los indicadores. Y no hay una sola matriz.

¿No hay ninguna otra herramienta disponible además de Print(), Comment(), Alert()?

 
Reshetov >> :


¿Qué demonios es esto? ¿Para qué sirve OrderSelect()?


En el resto es difícil de entender, porque el código está dispuesto sin sangría y no se pueden seguir los paréntesis - no quiero arruinar mi vista.

Vale, dejémonos de tonterías y no nos estropeemos la vista.

/---- parámetros de entrada
extern int PerRSI=8;
extern int CámaraMágica=77771;
extern double Lots=1.0;
//+------------------------------------------------------------------+
int inicio()
{
int
tipo, /tipo de orden
cnt, // índice de orden
ticket, // número de identificación del pedido
total; // número de órdenes ya abiertas
doble
rsi_0, // Valor. rsi_0 actual
rsi_1; // Valor. rsi_1 1ª barra

rsi_0=iRSI (NULL, 0, PerRSI, 0, 0); // Barra actual
rsi_1=iRSI (NULL, 0, y PerRSI,0, 1); // Barra actual más 1

if(rsi_0 < rsi_1 && rsi_1 < 30) // si la línea ha cruzado 30

ticket=OrderSend (Symbol(), OP_BUY,Lots, Ask, 3, 0, 0, "My RSI", MagicNamber, 0, Green);

OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES);


if(rsi_0 > rsi_1 && rsi_1 > 60) // si la línea ha cruzado el 70

OrderClose(ticket, OrderLots(), Bid, 3, Violet ); // cerrar posición

return(0); // salir

}

por qué el scoop compra y no cierra, no hay errores al cometer

Razón de la queja: