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

 
IgorM:

Inténtalo de esta manera:


O no entiendo nada, o has entendido mal el problema.

hay un precio de Cierre[2] de 1,34529 y un precio de Apertura[1] de 1,34530

Tengo una condición para abrir la posición.

Close[2] >= Open[1]

Dado que 10 - 20 pips (en 5 dígitos) no juegan un gran papel, tengo que ponerlo en el programa,

Si el precio de cierre es 1,34529 y el precio de apertura es 1,34530, la posición aún puede abrirse.

 
kilnart:

la posición no se abre.

???

entonces, ¿qué tiene que ver la condición del precio?

Mira el código siguiente. Hay otro error.

 
El precio que satisface la condición aparece en el gráfico y se abre la posición.
 
Volveré a comprobar el código y te lo haré saber.
 
kilnart:


O no lo entiendo, o has entendido mal la tarea.

......

10 - 20 ppts (en 5 dígitos) no juega un gran papel, hay que ponerlo en el programa

al parecer, primero escribiste tu post anterior y luego sólo te preguntaste lo que querías oír en respuesta....

realmente, 10-20pts en 5 dígitos no importa mucho, mostré como comparar correctamente variables como double, sospecho que tu problema no está en hacer la condición correcta. Intente formular primero una pregunta clara e inequívoca para obtener una respuesta inequívoca

 
IgorM:

aparentemente escribiste primero tu post anterior y luego sólo te preguntaste lo que querías escuchar en respuesta....

realmente, 10-20 pp en 5 dígitos no es gran cosa, mostré como comparar correctamente variables de tipo double, sospecho que tu problema no está en hacer la condición correcta. Intente formular primero una pregunta clara e inequívoca para obtener una respuesta inequívoca


Excepto que, en mi opinión, es un error comparar los dobles de esa manera. Por ejemplo, cuatro dígitos, los precios 1,00014 y 1,00016 son equivalentes a 1,0001 y 1,0002, pero 1,00016 a 1,00014 < Punto
 
220Volt: Excepto que, en mi opinión, es un error comparar los dobles de esa manera. Por ejemplo, cuatro dígitos, los precios 1,00014 y 1,00016, equivalen a 1,0001 y 1,0002, pero 1,00016 - 1,00014 < Punto

Mezclas la comparación de dobles y el redondeo, necesitas un enunciado claro de la pregunta: o redondeas un dígito de 5 en uno de 4 y luego haces el análisis en el de 4, o simplemente comparas correctamente dos dobles.

Si comparas dos dobles entonces esa parte del código que he citado funcionará correctamente tanto para 4 como para 5 dígitos:

switch(Digits){
   case 5: if(1.00014-1.00016>=10*Point); условие= false, -0.00002 меньше 0.00001*10   // цена больше на 10 пп в 5-ти знаке
   case 4: if(1.0001-1.0002>=Point); условие= false, -0.0001 меньше 0.0001          // цена больше на 1 пп в 4-х знаке
}

compruébelo: https://www.mql5.com/ru/articles/1561 y https://www.mql5.com/ru/forum/101433

SZZ: He cometido un error en mi código: el caso debería cerrarse con break, es decir, así:

switch(Digits){
   case 5: if(Close[2]-Open[1]>=10*Point);// цена больше на 10 пп в 5-ти знаке
           break;
   case 4: if(Close[2]-Open[1]>=Point);// цена больше на 1 пп в 4-х знаке
           break;
}
 
IgorM:

Mezclas la comparación y el redondeo del doble, necesitas un enunciado claro de la pregunta: o redondeas 5 dígitos a 4 dígitos y luego haces el análisis en 4 dígitos o simplemente comparas correctamente dos dobles.

Si comparas dos dobles entonces esa parte del código que cité funcionará correctamente tanto para 4 como para 5 dígitos:

compruébelo: https://www.mql5.com/ru/articles/1561 y https://www.mql5.com/ru/forum/101433

ZS: He cometido un error en mi código: el caso debería cerrarse con break, es decir, así:


Aunque probablemente tengas razón, probablemente no le importe al autor. Cuento cada pip, así que miro estas situaciones desde mi propio punto de vista.
 

Eso es todo. Estoy hecho un lío y mi cabeza ya no funciona.

aquí está el código

       double Low1=Low[iLowest(NULL,0,MODE_LOW,3,0)],
              Low2=Low[iLowest(NULL,0,MODE_LOW,20,0)];
         
         if(Low1<Low2 && Open[2]>Close[2])    
          {
            if(Open[1]<=Close[2] && Open[2]<Close[1])
             {
                 double sl=Low[iLowest(NULL,0,MODE_LOW,3,0)],
                        tp=Ask+(Open[2]-Low[2]);
                 OrderSend(Symbol(),OP_BUY,0.1,Ask,3,sl,tp);
                 return;
             }
          }

Quiero dibujar lo siguiente. necesito encontrar el punto mínimo de las últimas 3 velas. compararlo con el precio mínimo de las últimas 20 velas. si las últimas 3 velas son más bajas y la vela es negra ( Open[2]>Close[2] ) entonces busca más.

Necesito encontrar una toma bajista ( Open[1]<=Close[2] && Open[2]<Close[1] ).

Y abrir una posición de compra.

Parece ser correcto, pero siento que algo está mal.

Estaré muy agradecido si me pueden ayudar.

 
Hola,

He movido el indicador que dibuja los canales al EA.

El desequilibrio de los paréntesis es un error constante, aunque he comprobado dos veces todos los paréntesis.

Pero mi pregunta es diferente: necesito utilizar estos mismos canales para abrir operaciones en la condición, pero no sé cómo marcarlos. He probado a escribir sólo el nombre de un objeto, pero aún no he conseguido comprobar la corrección de esta solución.

Por favor, aconséjeme cómo resolver este problema