Maldito error 130 al infierno - página 2

 
cloudbreaker wrote >>

Bueno, puedo afirmar categóricamente que Seawolf y Ruptor están hablando con su trasero colectivo.

Para una orden OP_BUY, tienes toda la razón al utilizar el precio Ask para generar tu precio de entrada y stops.

En realidad, Seawolf y Ruptor tienen razón.

Usted entra en una orden larga en el precio ASK y sale en el BID, invertir que para una orden de venta. Dado que un stop-loss o take-profit es una salida, necesitas usar el precio BID para calcularlos en una orden larga.

Este es un punto de confusión bastante común que a menudo se pasa por alto, especialmente cuando se trata de pequeños spreads ya que no hay mucha diferencia entre el precio ASK y BID. A veces el código funcionará bien si sus paradas y deslizamientos no son muy ajustados, pero si está haciendo scalping o cualquier otra cosa que requiera precisión, entonces necesita usar estas directrices para un precio adecuado en la entrada y de salida.

-

Para una orden larga, es decir OP_BUY, OP_BUYSTOP, o OP_BUYLIMIT:

Precio de entrada = ASK

Precio de salida (stop-loss, take-profit, o OrderClose(...) ) = BID

-

Para una orden corta, es decir, OP_SELL, OP_SELLSTOP u OP_SELLLIMIT:

Precio de entrada = BID

Precio de salida (stop-loss, take-profit, o OrderClose(...) ) = ASK

-

Tovan

 
tovan:

En realidad, Seawolf y Ruptor tienen razón.

Se introduce una orden larga al precio ASK y se sale al BID, al revés para una orden de venta. Dado que un stop-loss o take-profit es una salida, necesitas usar el precio BID para calcularlos en una orden larga.

Este es un punto de confusión bastante común que a menudo se pasa por alto, especialmente cuando se trata de spreads pequeños ya que no hay mucha diferencia entre el precio ASK y BID. A veces el código funcionará bien si sus paradas y el deslizamiento no son demasiado apretados, pero si usted está scalping o hacer cualquier otra cosa que requiere precisión, entonces usted necesita para utilizar estas directrices para el precio adecuado en la entrada y de salida.

-

Para una orden larga, es decir OP_BUY, OP_BUYSTOP, o OP_BUYLIMIT:

Precio de entrada = ASK

Precio de salida (stop-loss, take-profit, o OrderClose(...) ) = BID

-

Para una orden corta, es decir, OP_SELL, OP_SELLSTOP u OP_SELLLIMIT:

Precio de entrada = BID

Precio de salida (stop-loss, take-profit, o OrderClose(...) ) = ASK

-

Tovan

Entendido, veo exactamente lo que dices - y humildes disculpas a Seawolf y Ruptor.

Cuando cierro órdenes normalmente u opero mi propio stealth stoploss (que sólo invoca mi función normal de cierre de órdenes), soy plenamente consciente de utilizar Bid para OP_BUYs y Ask para OP_SELLs.

Sin embargo, al abrir mis órdenes, siempre he utilizado los precios de entrada como mi línea de base para calcular el stoploss y nunca he tenido ningún problema. Puedo ver cómo la combinación de un spread flojo y un stop ajustado podría causar un error de stops no válidos.

Añadiría que hay un montón de muestras que lo hacen igual que yo.

Si no tenemos stops ajustados, supongo que la única diferencia entre las dos técnicas que la mayoría de nosotros tenderá a experimentar es en el dinero real ganado o perdido, aunque como ambos tipos de órdenes se detendrían "la cantidad de spread antes", tenderían a anularse mutuamente si el spread fuera bastante estable.

¿Esta lógica es correcta?

 
cloudbreaker wrote >>

Entendido, veo exactamente lo que estás diciendo - y humildes disculpas a Seawolf y Ruptor.

Cuando cierro órdenes normalmente u opero mi propio stoploss sigiloso (que sólo invoca mi función normal de cierre de órdenes), soy plenamente consciente de utilizar Bid para OP_BUYs y Ask para OP_SELLs.

Sin embargo, al abrir mis órdenes, siempre he utilizado los precios de entrada como mi línea de base para calcular el stoploss y nunca he tenido ningún problema. Puedo ver cómo la combinación de un spread flojo y un stop ajustado podría causar un error de stops no válidos.

Añadiría que hay un montón de muestras que lo hacen igual que yo.

Si no tenemos stops ajustados, supongo que la única diferencia entre las dos técnicas que la mayoría de nosotros tenderá a experimentar es en el dinero real ganado o perdido, aunque como ambos tipos de órdenes se detendrían "la cantidad de spread antes", tenderían a cancelarse mutuamente si el spread fuera bastante estable.

¿Esta lógica es correcta?

Buenos puntos. Estoy de acuerdo en que hay muchos otros EA por ahí que lo hacen de la manera que usted sugirió.

Esto ilustra algunos puntos de vista diferentes que tomamos en el stop-loss basado en cómo nuestros EA's trabajan. Yo, por ejemplo, tiendo a establecer mi stop-loss bastante ajustado. Así que generalmente me preocupa más dónde va a fallar la orden que cuánto perdería si lo hace. Por otro lado, sin embargo, si usted estuviera más interesado en lo que perdería (o ganaría) cuando la orden se cierre, entonces tiene sentido hacer todos los cálculos sobre el precio de apertura en lugar del precio de cierre. Esto sólo se convierte en un problema si su stop-loss o take profit es ajustado (dentro de unos pocos pips, dependiendo del par). En ese caso el EA necesitaría hacer alguna comprobación extra con MODE_STOPLEVEL (como sugeriste arriba) para asegurarse de que realmente puedes completar la transacción.

Estaba hablando más que nada desde una posición purista, pero puedo ver algunos argumentos válidos para ejecutarlo de ambas maneras.

- Tovan

 
tovan:

Buenos puntos. Estoy de acuerdo en que hay muchos otros EA por ahí que lo hacen de la manera que usted sugirió.

Esto ilustra algunos puntos de vista diferentes que tomamos en el stop-loss basado en cómo nuestros EA's trabajan. Yo, por ejemplo, tiendo a establecer mi stop-loss bastante ajustado. Así que generalmente me preocupa más dónde va a fallar la orden que cuánto perdería si lo hace. Por otro lado, sin embargo, si usted está más interesado en lo que perdería (o ganaría) cuando la orden se cierre, entonces tiene sentido hacer todos los cálculos sobre el precio de apertura en lugar del precio de cierre. Esto sólo se convierte en un problema si su stop-loss o take profit es ajustado (dentro de unos pocos pips, dependiendo del par). En ese caso el EA necesitaría hacer alguna comprobación extra con MODE_STOPLEVEL (como sugeriste arriba) para asegurarse de que realmente puedes completar la transacción.

Estaba hablando más que nada desde una posición purista, pero puedo ver algunos argumentos válidos para ejecutarlo de ambas maneras.

- Tovan

Tovan es esto que correcto porque también obtengo un error 130

if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
{
if (OrderStopLoss()==0)
¡{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
}
if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if(OrderStopLoss()>(Ask+Point*TrailingStop)+Point)
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red))
Print("Error_Modify - ",GetLastError());
else str=StringConcatenate("\nMi número de entrada es ", OrderTicket(), " y mi configuración de stop loss es ", DoubleToStr(Ask+Point*TrailingStop,Digits)); // nuevo código
}
}
}
if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
{
if (OrderStopLoss()==0)
¡{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
}

if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop-Point)
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green))
Print("Error_Modify - ",GetLastError());
else str=StringConcatenate("\nMi número de entrada es ", OrderTicket(), " y mi configuración de stop loss es ", DoubleToStr(Bid-Point*TrailingStop,Digits)); // nuevo código
}

}


el error de 130 tiene que ver con la entrada y la salida - o podría ser a causa de deslizamiento

 

En realidad, parece que todos ustedes están un poco confundidos. Algunos de ustedes están mezclando dos cosas totalmente diferentes.

Las preguntas que hay que hacer son

1) ¿A qué precio se ejecutan las órdenes de compra y venta TP y SL? ¿Oferta o demanda?

2) ¿Qué precio utilizamos para calcular el TP y el SL para la compra y la venta? ¿Oferta o demanda?

tovan wrote >>

En realidad, Seawolf y Ruptor tienen razón.

Entras una orden larga al precio ASK y sales al BID, inviertes eso para una orden de venta.

//---VANGROSH --- Correcto pero confuso. Mejor decir que su orden larga TP o SL se ejecutará cuando su precio TP o SL == el precio BID. Esto es lo que usted VE cuando ve que su orden llega a TP o SL, pero esto no tiene nada que ver con la forma de calcular esos precios.

Dado que un stop-loss o take-profit es una salida, necesitas usar el precio BID para calcularlos en una orden larga.

//---VANGROSH--- Lo siento, eso está mal. Estás confundiendo lo que ves - el precio que desencadenará la salida, con el precio que utilizas para calcular los precios TP y SL.

Piensa un poco en esto. Tome una orden de compra. Todos ustedes están de acuerdo en comprar al precio de compra - no hay problema. Digamos que el TP es de 15 puntos en una orden de compra, y el spread es de 5 puntos. Si usted establece el TP 15 puntos por encima del precio BID, entonces su TP sólo será de 10 puntos porque el spread está POR DEBAJO del precio ASK y POR ENCIMA del precio BID. No tiene sentido calcular 15 puntos de TP a partir de un precio 5 puntos POR DEBAJO de su precio de entrada (ASK). Siempre debe calcular el TP o el SL a partir del precio al que introdujo la orden. ASK para la COMPRA, BID para la VENTA.

Es fácil si sólo piensas a qué precio se alcanzará tu TP o SL. En una orden de COMPRA, entrando con el precio de COMPRA, ¿a qué precio será alcanzado su TP? Al precio BID. Si su TP estaba en 1,2450 y usted fijó su TP a partir del precio ASK, entonces cuando la línea ASK está en 1,2450 ahora usted está empezando a pagar el spread. Sólo cuando la línea BID esté en 1,2450 su TP será alcanzado y su orden se cerrará con 15 puntos de beneficio.

Lo mismo con el SL. Si su SL es de 30 puntos, eso significa 30 puntos desde el precio de entrada. En la compra el precio de entrada es ASK. Si usted utiliza el precio BID - 30 puntos, entonces usted está excluyendo el spread en su SL así que su SL real será en realidad 35 puntos desde su precio de entrada (ASK) porque el precio BID es 5 puntos más bajo (el spread) que el precio ASK. Obtendrá 35 puntos de SL porque su PRECIO de SL está ahora 35 puntos por debajo de su PRECIO DE ENTRADA, que era lo que había para una orden de compra.

Sólo he estado haciendo esto durante unos meses y lo que me ayudó fue simplemente observar a qué precio se alcanzan los TP y SL cuando se negocia manualmente y luego para mi primer EA, sólo volví a comprobar mis líneas de TP y SL en una orden de EA abierta utilizando la herramienta del retículo y también comprobé los precios de TP y SL en algunas órdenes de EA cerradas para asegurarme de que los puntos de TP y SL eran exactos.

La única vez que necesita hacer algo diferente es para un trailing stop. Para una orden de compra se utiliza el precio BID.

if(Bid-OrderOpenPrice() > Point*_trailingStop) StopLoss = Bid-Point*_trailingStop;

Porque quieres que tu TS esté X puntos por debajo del precio que cerrará la orden si se alcanza, que es el precio BID.

Para la venta se utiliza el precio ASK.

if(OrderOpenPrice()-Ask > Point*_trailingStop) StopLoss = Ask+Point*_trailingStop;

Porque quieres que tu TS esté X puntos por encima del precio que cerrará la orden si se alcanza, que es el precio ASK.

Recuerda que es el precio BID el que cerrará tus órdenes BUY TP y SL,

Y es el precio ASK el que cerrará sus órdenes SELL TP y SL.

 
vangrosh:

En realidad, parece que todos ustedes están un poco confundidos. Algunos de ustedes están mezclando dos cosas totalmente diferentes.

Las preguntas que hay que hacer son

1) ¿A qué precio se ejecutan las órdenes de compra y venta TP y SL? ¿Oferta o demanda?

2) ¿Qué precio utilizamos para calcular el TP y el SL para la compra y la venta? ¿Oferta o demanda?

Piense un poco en esto. Tome una orden de compra. Todos ustedes están de acuerdo en que compramos al precio de compra - no hay problema. Digamos que el TP es de 15 puntos en una orden de compra, y el spread es de 5 puntos. Si usted establece el TP 15 puntos por encima del precio BID, entonces su TP sólo será de 10 puntos porque el spread está POR DEBAJO del precio ASK y POR ENCIMA del precio BID. No tiene sentido calcular 15 puntos de TP a partir de un precio 5 puntos POR DEBAJO de su precio de entrada (ASK). Siempre debe calcular el TP o el SL a partir del precio al que introdujo la orden. ASK para la COMPRA, BID para la VENTA.

Es fácil si piensa a qué precio se alcanzará su TP o SL. En una orden de COMPRA, entrando con el precio ASK, ¿a qué precio se alcanzará su TP? Al precio de OFERTA. Si su TP estaba en 1,2450 y usted fijó su TP a partir del precio ASK, entonces cuando la línea ASK está en 1,2450 ahora usted está empezando a pagar el spread. Sólo cuando la línea BID esté en 1,2450 su TP será alcanzado y su orden se cerrará con 15 puntos de beneficio.

Lo mismo con el SL. Si su SL es de 30 puntos, eso significa 30 puntos desde el precio de entrada. En la compra, el precio de entrada es ASK. Si usted utiliza el precio BID - 30 puntos, entonces usted está excluyendo el spread en su SL así que su SL real será en realidad 35 puntos desde su precio de entrada (ASK) porque el precio BID es 5 puntos más bajo (el spread) que el precio ASK. Obtendrá 35 puntos de SL porque su PRECIO de SL está ahora 35 puntos por debajo de su PRECIO DE ENTRADA, que era lo que había para una orden de compra.

Sólo he estado haciendo esto durante unos meses y lo que me ayudó fue simplemente observar a qué precio se alcanzan los TP y SL cuando se negocia manualmente y luego para mi primer EA, sólo comprobé dos veces mis líneas de TP y SL en una orden EA abierta utilizando la herramienta del retículo y también comprobé los precios de TP y SL en algunas órdenes EA cerradas para asegurarme de que los puntos de TP y SL eran exactos.

La única vez que se necesita hacer algo diferente es para un trailing stop. Para una orden de compra se utiliza el precio BID.

if(Bid-OrderOpenPrice() > Point*_trailingStop) StopLoss = Bid-Point*_trailingStop;

Porque quieres que tu TS esté X puntos por debajo del precio que cerrará la orden si se alcanza, que es el precio BID.

Para vender se utiliza ASK.

if(OrderOpenPrice()-Ask > Point*_trailingStop) StopLoss = Ask+Point*_trailingStop;

Porque quieres que tu TS esté X puntos por encima del precio que cerrará la orden si se alcanza, que es el precio ASK.

Recuerde que es el precio BID el que cerrará sus órdenes BUY TP y SL,

Y es el precio de COMPRA el que cerrará sus órdenes de VENTA TP y SL.

Vangrosh

gracias por el aporte

me puedes ayudar a entender

es esto correcto

hago un EA con auto trail


if(OrderType()==OP_SELL && OrderSymbol()==Symbol())

{
if (OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); // colocar un TP y un SL
}
if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) ¡// colocar un TP
{
if(OrderStopLoss()>(Ask+Point*TrailingStop)+Point) // comprobar verdadero
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red)) // si es cierto modifica la orden
Print("Error_Modify - ",GetLastError());
else str=StringConcatenate("\nMi número de entrada es ", OrderTicket(), " y mi configuración de stop loss es ", DoubleToStr(Ask+Point*TrailingStop,Digits)); // nuevo código
}
}
}
 
vangrosh:

En realidad, parece que todos ustedes están un poco confundidos. Algunos de ustedes están mezclando dos cosas totalmente diferentes.

Las preguntas que hay que hacer son

1) ¿A qué precio se ejecutan las órdenes de compra y venta TP y SL? ¿Oferta o demanda?

2) ¿Qué precio utilizamos para calcular el TP y el SL para la compra y la venta? ¿Oferta o demanda?

Piensa un poco en esto. Tome una orden de compra. Todos ustedes están de acuerdo en que compramos al precio ASK - no hay problema. Digamos que el TP es de 15 puntos en una orden de compra, y el spread es de 5 puntos. Si usted establece el TP 15 puntos por encima del precio BID entonces su TP será sólo 10 puntos porque el spread está POR DEBAJO del precio ASK y POR ENCIMA del precio BID. No tiene sentido calcular 15 puntos de TP a partir de un precio 5 puntos POR DEBAJO de su precio de entrada (ASK). Siempre debe calcular el TP o el SL a partir del precio al que introdujo la orden. ASK para la COMPRA, BID para la VENTA.

Es fácil si piensas a qué precio se ejecutará tu TP o SL. En una orden de COMPRA, entrando con el precio ASK, ¿a qué precio se alcanzará su TP? Al precio BID. Si su TP estaba en 1,2450 y usted fijó su TP a partir del precio ASK, entonces cuando la línea ASK está en 1,2450 ahora usted está empezando a pagar el spread. Sólo cuando la línea BID esté en 1,2450 su TP será alcanzado y su orden se cerrará con 15 puntos de beneficio.

Lo mismo con el SL. Si su SL es de 30 puntos, eso significa 30 puntos desde el precio de entrada. En la compra el precio de entrada es ASK. Si usted utiliza el precio BID - 30 puntos, entonces usted está excluyendo el spread en su SL así que su SL real será en realidad 35 puntos desde su precio de entrada (ASK) porque el precio BID es 5 puntos más bajo (el spread) que el precio ASK. Obtendrá 35 puntos de SL porque su PRECIO de SL está ahora 35 puntos por debajo de su PRECIO DE ENTRADA, que era lo que había para una orden de compra.

Sólo he estado haciendo esto durante unos meses y lo que me ayudó fue simplemente observar a qué precio se alcanzan los TP y SL cuando se negocia manualmente y luego para mi primer EA, acabo de comprobar mis líneas de TP y SL en una orden EA abierta utilizando la herramienta del retículo y también comprobé los precios de TP y SL en algunas órdenes EA cerradas para asegurarme de que los puntos TP y SL eran exactos.

La única vez que necesita hacer algo diferente es para un trailing stop. Para una orden de compra se utiliza el precio BID.

if(Bid-OrderOpenPrice() > Point*_trailingStop) StopLoss = Bid-Point*_trailingStop;

Porque quieres que tu TS esté X puntos por debajo del precio que cerrará la orden si se alcanza, que es el precio BID.

Para la venta se utiliza el precio ASK.

if(OrderOpenPrice()-Ask > Point*_trailingStop) StopLoss = Ask+Point*_trailingStop;

Porque quieres que tu TS esté X puntos por encima del precio que cerrará la orden si se alcanza, que es el precio ASK.

Recuerda que es el precio BID el que cerrará tus órdenes BUY TP y SL,

Y es el precio ASK el que cerrará sus órdenes SELL TP y SL.

Vangrosh, como aludí en mi respuesta a Tovan, mientras sepas exactamente lo que estás haciendo, puedes hacerlo de cualquier manera. No estamos ni mucho menos confundidos.

Es decir, dado que conoces el precio de entrada, el límite de stop del broker y el spread puedes conseguir el stoploss 'absoluto' que quieres (¡que tampoco producirá 130 errores!) haciéndolo 'relativo' bien a la demanda o a la oferta y ajustándolo según sea necesario.

Yo prefiero hacerlo de la manera que describes por cierto.

 
cloudbreaker wrote >>

Vangrosh, como he aludido en mi respuesta a Tovan, mientras sepas exactamente lo que estás haciendo, puedes hacerlo de cualquier manera. No estamos ni mucho menos confundidos.

Es decir, dado que conoces el precio de entrada, el límite de stop del broker y el spread puedes conseguir el stoploss 'absoluto' que quieres (¡que tampoco producirá 130 errores!) haciéndolo 'relativo' bien a la demanda o a la oferta y ajustándolo según sea necesario.

Por cierto, yo prefiero hacerlo de la forma que describes.

Bueno, Seawolf dijo: "Regla de oro... si entras en el ask, sales con el bid, si entras en el Bid sales con el ask".

¿Eso no es confuso? No quiero decir que esté confundido, me refiero a que el contexto en el que habla no está claro. Su regla general no es correcta SI está hablando de calcular las salidas. Cuando digo que está confundido no estoy diciendo que no sepan lo que están haciendo o que no puedan hacerlo de otra manera, lo que realmente quería decir es que la forma en que estaban dando las instrucciones era confusa. Por ejemplo, la cita anterior de Seawolf es correcta SI está hablando de a qué punto de precio salen las órdenes en MT. Creo que para alguien que acaba de aprender esto hay que ser muy claro con el contexto al que se refiere, porque hay dos contextos básicos cuando se enseña sobre TP y SL.

1) El contexto o punto de vista que se centra en qué precio (Bid o Ask) que el TP y SL de una orden abierta será golpeado- que es una de las primeras cosas que necesitaba aprender sólo para el comercio manual ...

2) El contexto o punto de vista que se centra NO en el número 1 de arriba, sino que se centra en qué precio (Bid o Ask) utilizamos para calcular nuestro TP y SL, SI queremos que nuestros precios de TP y SL sean exactos e incluyan el spread.

Mira, yo también soy un novato en esto y es fácil que yo y otros novatos nos confundamos si las cosas se nos presentan de una manera en la que el contexto no es muy claro.

Y yo por ejemplo no sabía al principio que había más de un contexto en el que ver el TP y el SL y muchas otras cosas que necesitamos entender.

cloudbreaker wrote>>Vangrosh, como aludí en mi respuesta a Tovan, mientras sepas exactamente lo que estás haciendo, puedes hacerlo de cualquier manera.

Por eso intentaba ser lo más claro y contextualizado posible en mi post. La gente que está aprendiendo, como yo, no sabe exactamente lo que está haciendo y por eso necesita que le enseñen las cosas en su contexto adecuado.

En mi experiencia parece que muchas veces se nos presupone un conocimiento que aún no tenemos. Tenemos que conocer primero las reglas básicas y luego adquirir experiencia. Sólo después de eso sabremos qué "reglas" podemos torcer o apartarnos de ellas.

Por cierto no me refería a ti en mi post. Me pareció que tus respuestas eran, con mucho, las más claras y precisas. Y a riesgo de sonar como un "lameculos", cuando se trata de obtener las respuestas más claras y precisas en este foro, tus mensajes son algunos de los que busco primero. Sólo hay unas 4 o 5 personas en este foro que he encontrado hasta ahora que han demostrado ser más consistentemente precisas y que se puede decir que realmente tienen más que un poco de experiencia detrás de ellos.

 
vangrosh:

Bueno, Seawolf dijo: "Regla de oro... si entras en el ask, sales con el bid, si entras en el Bid sales con el ask".

¿No está confundido? No quiero decir que esté confundido, me refiero a que el contexto en el que habla no está claro. Su regla general no es correcta SI está hablando de calcular las salidas. Cuando digo que está confundido no estoy diciendo que no sepan lo que están haciendo o que no puedan hacerlo de otra manera, lo que realmente quería decir es que la forma en que estaban dando las instrucciones era confusa. Por ejemplo, la cita anterior de Seawolf es correcta SI está hablando de a qué punto de precio salen las órdenes en MT. Creo que para alguien que acaba de aprender esto hay que ser muy claro con el contexto al que se refiere, porque hay dos contextos básicos cuando se enseña sobre TP y SL.

1) El contexto o el punto de vista que se centra en qué precio (Bid o Ask) que el TP y SL de una orden abierta será golpeado - que es una de las primeras cosas que necesitaba aprender sólo para el comercio manual ...

2) El contexto o punto de vista que se centra NO en el número 1 de arriba, sino que se centra en qué precio (Bid o Ask) utilizamos para calcular nuestro TP y SL, SI queremos que nuestros precios de TP y SL sean exactos e incluyan el spread.

Mira, yo también soy un novato en esto y es fácil que yo y otros novatos nos confundamos si las cosas se nos presentan de una manera en la que el contexto no es muy claro.

Y yo por ejemplo no sabía al principio que había más de un contexto en el que ver el TP y el SL y muchas otras cosas que necesitamos entender.

cloudbreaker wrote>>Vangrosh, como he aludido en mi respuesta a Tovan, mientras sepas exactamente lo que estás haciendo, puedes hacerlo de cualquier manera.

Por eso intentaba ser lo más claro y contextualizado posible en mi post. La gente que está aprendiendo, como yo, no sabe exactamente lo que está haciendo y por eso necesita que le enseñen las cosas en su contexto adecuado.

En mi experiencia parece que muchas veces se nos presupone un conocimiento que aún no tenemos. Tenemos que conocer primero las reglas básicas y luego adquirir experiencia. Sólo después de eso sabremos qué "reglas" podemos torcer o apartarnos de ellas.

Por cierto no me refería a ti en mi post. Me pareció que tus respuestas eran, con mucho, las más claras y precisas. Y a riesgo de sonar como un "lameculos", cuando se trata de obtener las respuestas más claras y precisas en este foro, tus mensajes son algunos de los que busco primero. Sólo hay unas 4 o 5 personas en este foro que he encontrado hasta ahora que han demostrado ser más consistentemente precisas y que se puede decir que realmente tienen más que un poco de experiencia detrás de ellos.

Gracias por el cumplido; muy apreciado.

Cuando dije que no estábamos confundidos, en realidad sólo hablaba por mí y por Tovan, ya que parece que operamos en una banda de ondas similar.

Pido disculpas si mi mensaje ha sonado brusco de alguna manera; ciertamente no era mi intención y no me sentía así en ese momento (aunque tengo mis momentos...).

Mi enfoque general en este foro (cuando no estoy buscando ayuda yo mismo) es tratar de hacer lo mejor posible para ayudar a los que están tratando de aprender una habilidad de programación. Realmente no tengo tiempo para la gente que quiere que todo se haga por ellos, llegando al foro con su primer mensaje titulado "Necesito un EA exitoso". La gente como usted es la razón por la que me interesa aquí, y probablemente sabe más sobre el comercio de divisas que yo.

Un poco de antecedentes - He sido un programador desde principios de 1980, pero dejó hace unos años para trabajar como piloto de helicóptero comercial. Sin embargo, dada la falta de vuelos por parte de mi empresa este año, he estado escribiendo EAs para un amigo mío que tiene una empresa de investigación incipiente. Adoptamos un enfoque de la teoría del caos (en lugar del conocimiento del mercado) para operar y ya estamos operando los EAs de forma muy rentable en nombre de un conocido fondo de cobertura. Realmente lo disfruto.

Buena suerte.

 
delcor wrote >>

Vangrosh

gracias por el aporte

me puedes ayudar a entender

es esto correcto

hago un EA con auto trail

if(OrderType()==OP_SELL && OrderSymbol()==Symbol())

{
if (OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); // colocar un TP y SL}

Deberías establecer tu TP y SL base cuando envíes tu orden o bien hacer la línea anterior sólo una vez. Si hace la línea anterior

en cada tick entonces también vas a obtener el error 1 de OrderModify que ocurrirá cuando el valor de SL existente sea el mismo

como el nuevo- lo que significa que el precio no ha cambiado todavía- SL es el mismo que antes.
if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) // colocar TP

{
if(OrderStopLoss()>(Ask+Point*TrailingStop)+Point) // comprobar true

Esto se ve bien. Y creo que lo que estás haciendo al añadir un punto (+Point) es una buena idea. Yo hago lo mismo

pero en un lugar diferente y la forma, pero eso es para arreglar un problema diferente, un problema que puede obtener cuando la comparación de dobles no funciona bien, por lo que añadir

un punto para asegurarte de que el precio es mayor o menor- o de lo contrario tu Trailing stop no se ejecutará a veces.

El resto parece correcto.
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red)) // si es verdad modifica la orden
Print("Error_Modificar - ",GetLastError());
else str=StringConcatenate("\NMi número de entrada es ", OrderTicket(), " y mi configuración de stop loss es ", DoubleToStr(Ask+Point*TrailingStop,Digits)); // nuevo código
}
}
}

Aquí está el ejemplo de trailing stop del MQ EA MACD Sample.mq4

              // check for trailing stop
              if( TrailingStop>0)  
              {                 
                 if((OrderOpenPrice()-Ask)>(Point* TrailingStop))
                 {
                    if((OrderStopLoss()>(Ask+Point* TrailingStop)) || (OrderStopLoss()==0))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point* TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }

Pero me di cuenta de que obtendría errores de este código debido al problema conocido de cuando se comparan dobles como arriba, su cláusula mayor que > a veces se evaluaría como TRUE

incluso cuando los precios son exactamente los mismos - imprimes() los precios y son los mismos. Puedes hacer una búsqueda sobre la comparación de dobles para obtener los detalles. Hay soluciones como la función CompareDoubles() que se encuentra en stdlib.mq4 (en la carpeta de bibliotecas), o el uso de NormalizeDouble() en lugares donde realmente no debería ser necesario, pero he encontrado que en este caso simplemente añadiendo un punto como lo hiciste es buena manera de hacerlo. Pero no he probado la forma en que lo haces, así que no estoy seguro de que sea correcta, pero parece que está bien. Te daré el código que uso en mi EA en el siguiente post.

Razón de la queja: