[¡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 757

 
artmedia70:
¿Quiere el beneficio total de todas las posiciones abiertas, o quiere poner un stop en cada una de ellas cuando alcance 20 pips de beneficio?
Si crees que sólo se abrirá una posición a la vez, entonces debes establecer un stop en su beneficio
 

Hola. Existe una estrategia de arbitraje, ¿es perfecta? Es decir, ¿es irreal perder con ello o el precio no siempre alcanza el nivel adecuado?

Gracias

 
en cada parada cuando un beneficio alcanza 20 pips
 

Lo estoy haciendo mal otra vez :(

¿Por qué no se compara?

if (
   (NormalizeDouble((StrToDouble(ObjectFind("signal01"))),0)>NormalizeDouble((StrToDouble(ObjectFind("signal31"))),0))//&&
   /*(NormalizeDouble((StrToDouble(ObjectFind("signal11"))),2)>NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal21"))),2)>NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal41"))),2)>NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal51"))),2)>NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal61"))),2)>NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal71"))),2)>NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))*/)
   {ObjectSetText("sig_nal201",CharToStr(230),10,"Wingdings",SymbolSellColor);
      Print("Ошибка при вызове sig_nal201 1:",GetLastError());}
   else if (
   (NormalizeDouble((StrToDouble(ObjectFind("signal01"))),0)<NormalizeDouble((StrToDouble(ObjectFind("signal31"))),0))//&&
   /*(NormalizeDouble((StrToDouble(ObjectFind("signal11"))),2)<NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal21"))),2)<NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal41"))),2)<NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal51"))),2)<NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal61"))),2)<NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))&&
   (NormalizeDouble((StrToDouble(ObjectFind("signal71"))),2)<NormalizeDouble((StrToDouble(ObjectFind("signal31"))),2))*/)
   {ObjectSetText("sig_nal201",CharToStr(228),10,"Wingdings",SymbolBuyColor);
      Print("Ошибка при вызове sig_nal201 2:",GetLastError());}
   else {ObjectSetText("sig_nal201",CharToStr(224),10,"Wingdings",SymbolBasisColor);
      Print("Ошибка при вызове sig_nal201 3:",GetLastError());}
He comentado, comparo 2 valores - siempre saca el último...
 
profitinvesting:
para que cada uno ponga su propio stop cuando alcance 20 pips de beneficio

Igor Kim tiene una función que establece un stop en el nivel Breakeven para un número determinado de pips (también se puede establecer):

Función MovingInWL()

 
Abzasc:

Lo estoy haciendo mal otra vez :(

¿Por qué no se puede comparar?

He comentado lo innecesario, comparo 2 valores - siempre se dibuja el último...

Interesante... ObjectFind(); devuelve el número de la subventana del gráfico donde se encuentra este objeto:

Busca un objeto con el nombre especificado. La función devuelve el índice de la ventana a la que pertenece el objeto. Si falla, la función devolverá -1. Llame a la función GetLastError() para obtener más información sobre el error. Las subventanas del gráfico (si hay subventanas del indicador en el gráfico) se numeran a partir del 1. La subventana del gráfico principal siempre está presente y tiene el índice 0.

¿Y con qué lo comparas?

(NormalizeDouble((StrToDouble(ObjectFind("signal01"))),0)>NormalizeDouble((StrToDouble(ObjectFind("signal31"))),0))

Esta construcción me parece un poco extraña. ¿Por qué normalizar el número de subventana(int), además, convertido en doble , y por la función StrToDouble()?

 
Abzasc:

¿Por qué no se puede comparar?

¿Tal vez porque estoy recibiendo el nombre del objeto, no el valor? Entonces, ¿cómo puedo obtener el valor correctamente? Parece que está confundido.
 
artmedia70:

Es interesante... ObjectFind(); devuelve el número de subventana del gráfico

:) Yo también estaba leyendo la ayuda :)

Hay objetos de texto, necesito compararlos (números). ¿Cómo?

Un indicador dibuja una tabla y el otro tiene que calcularla.

 
Abzasc:
¿Tal vez porque estoy recibiendo el nombre del objeto, no el valor? Entonces, ¿cómo puedo obtener el valor correctamente? Parece que está confundido.
Está comparando los números de las subventanas en las que se dibujan los objetos. Si en una, la función ObjectFind(); devuelve el número de esa ventana y será el mismo para los dos valores que se comparan. Por lo tanto, está comparando los números de las ventanas. Y lo más probable es que la misma ventana con sí misma...
 
Abzasc:

:) Yo también estaba leyendo la ayuda :)

Hay objetos de texto, necesito compararlos (números). ¿Cómo?

¿Números de qué? ¿Puede ser más específico?