Damn Error 130 to Hell - page 2

 
cloudbreaker wrote >>

Eh bien, je peux affirmer catégoriquement que Seawolf et Ruptor parlent de leur derrière collectif.

Pour un ordre OP_BUY, vous avez tout à fait raison d'utiliser le prix Ask pour générer votre prix d'entrée et vos stops.

En fait, Seawolf et Ruptor ont raison.

Vous entrez un ordre long au prix ASK et vous sortez au prix BID, inversez cela pour un ordre de vente. Comme un stop-loss ou un take-profit est une sortie, vous devez utiliser le prix BID pour les calculer sur un ordre long.

Il s'agit d'un point de confusion assez commun qui est souvent négligé, en particulier lorsqu'il s'agit de petits spreads car il n'y a pas beaucoup de différence entre le prix ASK et BID. Parfois, le code fonctionnera très bien si vos stops et slippages ne sont pas trop serrés, mais si vous faites du scalping ou autre chose qui nécessite de la précision, vous devez utiliser ces directives pour un prix correct à l'entrée et à la sortie. et sortie.

-

Pour un ordre long, c'est-à-dire OP_BUY, OP_BUYSTOP, ou OP_BUYLIMIT:

Prix d'entrée = ASK

Prix de sortie (stop-loss, take-profit, ou OrderClose(...) ) = BID

-

Pour un ordre court, c'est-à-dire OP_SELL, OP_SELLSTOP, ou OP_SELLLIMIT:

Prix d'entrée = BID

Prix de sortie (stop-loss, take-profit, ou OrderClose(...)) = ASK

-

Tovan

 
tovan:

En fait, Seawolf et Ruptor ont raison.

Vous entrez un ordre long au prix ASK et vous sortez au prix BID, inversement pour un ordre de vente. Comme un stop-loss ou un take-profit est une sortie, vous devez utiliser le prix BID pour les calculer sur un ordre long.

Il s'agit d'un point de confusion assez courant qui est souvent négligé, surtout lorsqu'il s'agit de petits écarts, car il n'y a pas beaucoup de différence entre le prix ASK et le prix BID. Parfois, le code fonctionnera très bien si vos stops et slippages ne sont pas trop serrés, mais si vous faites du scalping ou toute autre chose qui nécessite de la précision, vous devez utiliser ces directives pour un prix correct à l'entrée et à la sortie. et sortie.

-

Pour un ordre long, c'est-à-dire OP_BUY, OP_BUYSTOP, ou OP_BUYLIMIT:

Prix d'entrée = ASK

Prix de sortie (stop-loss, take-profit, ou OrderClose(...) ) = BID

-

Pour un ordre court, c'est-à-dire OP_SELL, OP_SELLSTOP, ou OP_SELLLIMIT:

Prix d'entrée = BID

Prix de sortie (stop-loss, take-profit, ou OrderClose(...) ) = ASK

-

Tovan

J'ai compris, je vois exactement ce que vous dites - et je présente mes plus humbles excuses à Seawolf et Ruptor.

Lorsque je ferme des ordres normalement ou que j'utilise mon propre stoploss furtif (qui invoque simplement ma fonction normale de fermeture d'ordres), je suis parfaitement conscient d'utiliser Bid pour les OP_BUYs et Ask pour les OP_SELLs.

Cependant, lorsque j'ouvre mes ordres, j'ai toujours utilisé les prix d'entrée comme base de calcul du stoploss et je n'ai jamais eu de problème. Je peux voir comment la combinaison d'un spread large et d'un stop serré pourrait provoquer une erreur de stop invalide.

J'ajouterais qu'il y a un sacré paquet d'échantillons qui font la même chose que moi.

Si nous n'avons pas de stops serrés, je suppose que la seule différence entre les deux techniques que la plupart d'entre nous auront tendance à expérimenter se situe au niveau de l'argent gagné ou perdu, bien que puisque les deux types d'ordres seront arrêtés "le montant du spread plus tôt", ils auront tendance à s'annuler mutuellement si le spread est assez stable.

Cette logique est-elle valable ?

 
cloudbreaker wrote >>

J'ai compris, je vois exactement ce que vous dites - et je présente mes plus humbles excuses à Seawolf et Ruptor.

Lorsque je ferme des ordres normalement ou que j'utilise mon propre stoploss furtif (qui invoque simplement ma fonction normale de fermeture d'ordres), je suis parfaitement conscient d'utiliser Bid pour les OP_BUY et Ask pour les OP_SELL.

Cependant, lorsque j'ouvre mes ordres, j'ai toujours utilisé les prix d'entrée comme base de calcul du stoploss et je n'ai jamais eu de problème. Je peux voir comment la combinaison d'un spread large et d'un stop serré pourrait provoquer une erreur de stop invalide.

J'ajouterais qu'il y a un sacré paquet d'échantillons qui font la même chose que moi.

Si nous n'avons pas de stops serrés, je suppose que la seule différence entre les deux techniques que la plupart d'entre nous auront tendance à expérimenter se situe au niveau de l'argent gagné ou perdu, bien que puisque les deux types d'ordres seront arrêtés "le montant du spread plus tôt", ils auront tendance à s'annuler mutuellement si le spread est assez stable.

Cette logique est-elle valable ?

Les bons points. Je suis d'accord qu'il y a beaucoup d'autres EA qui fonctionnent de la manière que vous avez suggérée.

Cela illustre les différents points de vue que nous avons sur le stop-loss en fonction de la façon dont nos EA fonctionnent. Moi, par exemple, j'ai tendance à fixer mon stop-loss assez serré. Je suis donc généralement plus préoccupé par l'endroit où l'ordre va échouer que par le montant que je perdrais s'il échoue. D'un autre côté, si vous êtes plus intéressé par ce que vous perdriez (ou gagneriez) à la clôture de l'ordre, il serait logique de faire tous les calculs sur le cours d'ouverture plutôt que sur le cours de clôture. Cela ne devient un problème que si votre stop-loss ou take profit est serré (à quelques pips près, selon la paire). Dans ce cas, l'EA devra effectuer des vérifications supplémentaires avec MODE_STOPLEVEL (comme vous l'avez suggéré ci-dessus) pour s'assurer que vous pouvez effectivement effectuer la transaction.

Je parlais surtout d'une position puriste, mais je peux voir des arguments valables pour l'exécution des deux façons.

- Tovan

 
tovan

Bon point. Je suis d'accord qu'il y a beaucoup d'autres EA qui fonctionnent de la manière que vous avez suggérée.

Cela illustre les différents points de vue que nous avons sur le stop-loss en fonction de la façon dont nos EA fonctionnent. Moi, par exemple, j'ai tendance à fixer mon stop-loss assez serré. Je me préoccupe donc généralement plus de l'endroit où l'ordre va échouer que du montant que je perdrai s'il échoue. D'un autre côté, si vous vous intéressez davantage à ce que vous perdrez (ou gagnerez) à la clôture de l'ordre, il est logique de faire tous les calculs sur le cours d'ouverture plutôt que sur le cours de clôture. Cela ne devient un problème que si votre stop-loss ou votre take profit est serré (à quelques pips près, selon la paire). Dans ce cas, l'EA devra effectuer des vérifications supplémentaires avec MODE_STOPLEVEL (comme vous l'avez suggéré ci-dessus) pour s'assurer que vous pouvez effectivement effectuer la transaction.

Je parlais surtout d'une position puriste, mais je peux voir des arguments valables pour l'exécution dans les deux sens.

- Tovan

Tovan, est-ce correct, car j'obtiens également une erreur 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("\n Mon numéro de ticket est ", OrderTicket(), " et mon paramètre de stop loss est ", DoubleToStr(Ask+Point*TrailingStop,Digits)) ; // nouveau code
} }.
}
}
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("\n Mon numéro de ticket est ", OrderTicket(), " et mon réglage de stop loss est ", DoubleToStr(Bid-Point*TrailingStop,Digits)) ; // nouveau code
}

}


L'erreur 130 est-elle liée à l'entrée et à la sortie - ou pourrait-elle être due à un slippage ?

 

En fait, il semble que vous soyez tous un peu confus. Certains d'entre vous confondent deux choses totalement différentes.

Les questions à poser sont les suivantes :

1) A quel prix les ordres d'achat et de vente TP et SL sont exécutés. Bid ou Ask ?

2) Quel prix utilise-t-on pour calculer le TP et le SL pour l'achat et la vente. Bid ou Ask ?

tovan wrote >>

En fait, Seawolf et Ruptor ont raison.

Vous entrez un ordre long au prix ASK et vous sortez au prix BID, inversez cela pour un ordre de vente.

//---VANGROSH --- Correct mais confus. Il vaut mieux dire que votre ordre long TP ou SL sera exécuté lorsque votre prix TP ou SL == le prix BID. C'est ce que vous VOYEZ lorsque vous regardez votre ordre atteindre le TP ou le SL, mais cela n'a rien à voir avec la façon dont vous calculez ces prix.

.

Comme un stop-loss ou un take-profit est une sortie, vous devez utiliser le prix BID pour les calculer sur un ordre long.

//---VANGROSH--- Désolé, c'est faux. Vous confondez ce que vous VOYEZ - le prix qui déclenchera la sortie, avec le prix que vous utilisez pour calculer les prix TP et SL.

Réfléchissez-y un peu. Prenez un ordre d'achat. Vous êtes tous d'accord pour acheter au prix ASK - pas de problème. Disons que le TP est de 15 points sur un ordre d'achat, et que l'écart est de 5 points. Si vous fixez le TP à 15 points au-dessus du prix BID, votre TP ne sera que de 10 points car l'écart est EN DESSOUS du prix ASK et AU-DESSUS du prix BID. Cela n'a aucun sens de calculer 15 points de TP à partir d'un prix 5 points EN DESSOUS de votre prix d'entrée (ASK). Vous devez toujours calculer le TP ou le SL à partir du prix auquel vous avez saisi l'ordre. ASK pour BUY, BID pour SELL.

C'est facile si vous pensez simplement à quel prix votre TP ou SL sera atteint. Sur un ordre d'achat, entrant avec le prix ASK, à quel prix votre TP sera-t-il atteint ? Au prix BID. Si votre TP était à 1,2450 et que vous avez fixé votre TP à partir du prix ASK, alors lorsque la ligne ASK est à 1,2450, vous commencez tout juste à payer le spread. Ce n'est que lorsque la ligne BID sera à 1,2450 que votre TP sera atteint et que votre ordre sera clôturé avec 15 points de profit.

Même chose pour le SL. Si votre SL est de 30 points, cela signifie 30 points à partir du prix d'entrée. Pour un achat, le prix d'entrée est ASK. Si vous utilisez le prix BID - 30 points, vous ne tenez pas compte de l'écart dans votre SL. Votre SL réelle sera donc de 35 points à partir de votre prix d'entrée (ASK) parce que le prix BID est inférieur de 5 points (l'écart) au prix ASK. Vous obtiendrez 35 points de SL parce que votre PRICE SL est maintenant 35 points en dessous de votre PRICE D'ENTRÉE qui était quoi pour un ordre d'achat ?

Je ne fais cela que depuis quelques mois et ce qui m'a aidé, c'est d'observer à quel prix le TP et le SL sont atteints lors d'un trading manuel et ensuite, pour mon premier EA, j'ai juste vérifié deux fois mes lignes TP et SL sur un ordre EA ouvert en utilisant l'outil de réticulation et j'ai également vérifié les prix TP et SL sur quelques ordres EA fermés pour être sûr que les points TP et SL étaient exacts.

La seule fois où vous devez procéder différemment est pour un stop suiveur. Pour un ordre d'achat, vous utilisez le prix BID.

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

Parce que vous voulez que votre TS soit X points en dessous du prix qui fermera l'ordre s'il est atteint, c'est-à-dire le prix BID.

Pour la vente, vous utilisez le prix ASK.

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

Parce que vous voulez que votre TS soit X points au-dessus du prix qui fermera l'ordre s'il est atteint, c'est-à-dire le prix ASK.

Rappelez-vous que c'est le prix BID qui clôturera vos ordres BUY TP et SL,

Et c'est le prix ASK qui fermera vos ordres SELL TP et SL.

 
vangrosh:

En fait, il semble que vous soyez tous un peu confus. Certains d'entre vous confondent deux choses totalement différentes.

Les questions à poser sont les suivantes :

1) A quel prix les ordres d'achat et de vente TP et SL sont exécutés. Bid ou Ask ?

2) Quel prix utilise-t-on pour calculer le TP et le SL pour l'achat et la vente. Bid ou Ask ?

Réfléchissez-y un peu. Prenez un ordre d'achat. Vous êtes tous d'accord pour acheter au prix ASK - pas de problème. Disons que le TP est de 15 points sur un ordre d'achat, et que le spread est de 5 points. Si vous fixez le TP à 15 points au-dessus du prix BID, votre TP ne sera que de 10 points car l'écart est EN DESSOUS du prix ASK et AU-DESSUS du prix BID. Cela n'a aucun sens de calculer 15 points de TP à partir d'un prix 5 points EN DESSOUS de votre prix d'entrée (ASK). Vous devez toujours calculer le TP ou le SL à partir du prix auquel vous avez saisi l'ordre. ASK pour BUY, BID pour SELL.

C'est facile si vous pensez simplement à quel prix votre TP ou SL sera atteint. Sur un ordre d'ACHAT, entré avec le prix ASK, à quel prix votre TP sera-t-il atteint ? Au prix de l'offre. Si votre TP était à 1,2450 et que vous avez fixé votre TP à partir du prix ASK, alors lorsque la ligne ASK est à 1,2450, vous commencez tout juste à payer le spread. Ce n'est que lorsque la ligne BID sera à 1,2450 que votre TP sera atteint et que votre ordre sera clôturé avec 15 points de profit.

Même chose pour le SL. Si votre SL est de 30 points, cela signifie 30 points à partir du prix d'entrée. A l'achat, le prix d'entrée est ASK. Si vous utilisez le prix BID - 30 points, vous ne tenez pas compte de l'écart dans votre SL. Votre SL réelle sera donc de 35 points à partir de votre prix d'entrée (ASK) parce que le prix BID est inférieur de 5 points (l'écart) au prix ASK. Vous obtiendrez 35 points de SL parce que votre PRICE SL est maintenant 35 points en dessous de votre PRICE D'ENTRÉE qui était quoi pour un ordre d'achat ?

Je ne fais cela que depuis quelques mois et ce qui m'a aidé, c'est d'observer à quel prix le TP et le SL sont atteints lors d'un trading manuel et ensuite, pour mon premier EA, j'ai juste vérifié deux fois mes lignes TP et SL sur un ordre EA ouvert en utilisant l'outil de réticulation et j'ai également vérifié les prix TP et SL sur quelques ordres EA fermés pour être sûr que les points TP et SL étaient exacts.

La seule fois où vous devez procéder différemment est pour un stop suiveur. Pour un ordre d'achat, vous utilisez le prix BID.

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

Parce que vous voulez que votre TS soit X points en dessous du prix qui fermera l'ordre s'il est atteint, c'est-à-dire le prix BID.

Pour la vente, vous utilisez ASK.

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

Parce que vous voulez que votre TS soit X points au-dessus du prix qui fermera l'ordre s'il est atteint, c'est-à-dire le prix ASK.

Rappelez-vous que c'est le prix BID qui fermera vos ordres BUY TP et SL,

Et c'est le prix ASK qui fermera vos ordres SELL TP et SL.

Vangrosh

Merci pour votre contribution

Pouvez-vous m'aider à comprendre

Est-ce correct ?

Je fais un EA avec auto trail


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

{
if (OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red) ; // place un TP et un SL
}
if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) // place un TP
{
if(OrderStopLoss()>(Ask+Point*TrailingStop)+Point) // check true
{
if( !OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red)) // si vrai modifier l'ordre
Print("Error_Modify - ",GetLastError()) ;
else str=StringConcatenate("\n Mon numéro de ticket est ", OrderTicket(), " et mon réglage de stop loss est ", DoubleToStr(Ask+Point*TrailingStop,Digits)) ; // nouveau code
}
}
}
 
vangrosh:

En fait, il semble que vous soyez tous un peu confus. Certains d'entre vous confondent deux choses totalement différentes.

Les questions à poser sont les suivantes :

1) A quel prix les ordres d'achat et de vente TP et SL sont exécutés. Bid ou Ask ?

2) Quel prix utilise-t-on pour calculer le TP et le SL pour l'achat et la vente. Bid ou Ask ?

Réfléchissez-y un peu. Prenez un ordre d'achat. Vous êtes tous d'accord pour acheter au prix demandé - pas de problème. Disons que le TP est de 15 points sur un ordre d'achat, et que le spread est de 5 points. Si vous fixez le TP à 15 points au-dessus du prix BID, votre TP ne sera que de 10 points car l'écart est EN DESSOUS du prix ASK et AU-DESSUS du prix BID. Cela n'a aucun sens de calculer 15 points de TP à partir d'un prix 5 points EN DESSOUS de votre prix d'entrée (ASK). Vous devez toujours calculer le TP ou le SL à partir du prix auquel vous avez saisi l'ordre. ASK pour BUY, BID pour SELL.

C'est facile si vous pensez simplement à quel prix votre TP ou SL sera atteint. Sur un ordre d'ACHAT, entrant avec le prix ASK, à quel prix votre TP sera-t-il atteint ? Au prix BID. Si votre TP était à 1,2450 et que vous avez fixé votre TP à partir du prix ASK, alors lorsque la ligne ASK est à 1,2450, vous commencez tout juste à payer le spread. Ce n'est que lorsque la ligne BID sera à 1,2450 que votre TP sera atteint et que votre ordre sera clôturé avec 15 points de profit.

Même chose pour le SL. Si votre SL est de 30 points, cela signifie 30 points à partir du prix d'entrée. Pour un achat, le prix d'entrée est ASK. Si vous utilisez le prix BID - 30 points, vous ne tenez pas compte de l'écart dans votre SL. Votre SL réelle sera donc de 35 points à partir de votre prix d'entrée (ASK) parce que le prix BID est inférieur de 5 points (l'écart) au prix ASK. Vous obtiendrez 35 points de SL parce que votre PRICE SL est maintenant 35 points en dessous de votre PRICE D'ENTRÉE qui était quoi pour un ordre d'achat ?

Je ne fais cela que depuis quelques mois et ce qui m'a aidé, c'est d'observer à quel prix le TP et le SL sont atteints lors d'un trading manuel et ensuite, pour mon premier EA, j'ai juste vérifié deux fois mes lignes TP et SL sur un ordre EA ouvert en utilisant l'outil de réticulation et j'ai également vérifié les prix TP et SL sur quelques ordres EA fermés pour être sûr que les points TP et SL étaient exacts.

La seule fois où vous devez procéder différemment est pour un stop suiveur. Pour un ordre d'achat, vous utilisez le prix BID.

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

Parce que vous voulez que votre TS soit X points en dessous du prix qui fermera l'ordre s'il est atteint, c'est-à-dire le prix BID.

Pour la vente, vous utilisez le prix ASK.

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

Parce que vous voulez que votre TS soit X points au-dessus du prix qui fermera l'ordre s'il est atteint, c'est-à-dire le prix ASK.

Rappelez-vous que c'est le prix BID qui clôturera vos ordres BUY TP et SL,

Et c'est le prix ASK qui fermera vos ordres SELL TP et SL.

Vangrosh, comme j'y ai fait allusion dans ma réponse à Tovan, tant que vous savez exactement ce que vous faites, vous pouvez le faire de l'une ou l'autre façon. Nous sommes loin d'être confus.

En d'autres termes, étant donné que vous connaissez le prix d'entrée, la limite stop du courtier et le spread, vous pouvez obtenir le stoploss " absolu " que vous souhaitez (qui ne produira pas 130 erreurs non plus !) en le rendant " relatif " soit au ask, soit au bid et en l'ajustant si nécessaire.

Je préfère d'ailleurs procéder de la manière que vous décrivez.

 
cloudbreaker wrote >>

Vangrosh, comme je l'ai indiqué dans ma réponse à Tovan, tant que vous savez exactement ce que vous faites, vous pouvez le faire de n'importe quelle manière. Nous sommes loin d'être confus.

En d'autres termes, étant donné que vous connaissez le prix d'entrée, la limite stop du courtier et le spread, vous pouvez obtenir le stoploss " absolu " que vous souhaitez (qui ne produira pas 130 erreurs non plus !) en le rendant " relatif " soit au ask, soit au bid et en l'ajustant si nécessaire.

Je préfère d'ailleurs procéder de la manière que vous décrivez.

Eh bien, Seawolf a dit : "Règle générale... si vous entrez sur le ask, vous sortez avec le bid, si vous entrez sur le bid, vous sortez avec le ask".

Ce n'est pas confus ? Je ne veux pas dire qu'il est confus, je veux dire que pour moi le contexte dans lequel il parle n'est pas clair. Sa règle du pouce n'est pas correcte SI il parle de calculer les sorties. Quand je dis "confus", je ne dis pas que vous ne savez pas ce que vous faites ou que vous ne pouvez pas le faire d'une autre manière - ce que je voulais vraiment dire, c'est que la façon dont ils donnaient les instructions était confuse. Par exemple, la citation de Seawolf ci-dessus est correcte SI elle parle du point de prix auquel les ordres sortent dans MT. Je pense que pour quelqu'un qui vient d'apprendre, il faut être très clair sur le contexte auquel on se réfère, car il y a deux contextes de base lorsqu'on enseigne le TP et le SL.

1) Le contexte ou le point de vue qui se concentre sur le prix (Bid ou Ask) auquel le TP et le SL d'un ordre ouvert seront atteints - ce qui est l'une des premières choses que j'ai dû apprendre juste pour le trading manuel...

2) Le contexte ou le point de vue qui ne se concentre PAS sur le point 1 ci-dessus mais sur le prix (Bid ou Ask) que nous utilisons pour calculer notre TP et SL, SI nous voulons que nos prix TP et SL soient exacts et incluent le spread.

Je suis également novice dans ce domaine et il est facile pour moi et les autres novices de s'embrouiller si les choses nous sont présentées d'une manière où le contexte n'est pas très clair.

Et pour ma part, je ne savais pas au début qu'il y avait plus d'un contexte dans lequel voir le TP et le SL et beaucoup d'autres choses que nous devons comprendre.

cloudbreaker a écrit>>Vangrosh, comme je l'ai mentionné dans ma réponse à Tovan, tant que vous savez exactement ce que vous faites, vous pouvez le faire de n'importe quelle façon.

C'est pour cela que j'essayais d'être aussi clair et dans le contexte que possible dans mon message. Les gens qui apprennent comme moi ne savent pas exactement ce qu'ils font, c'est pourquoi nous avons besoin d'apprendre les choses dans leur contexte.

D'après mon expérience, il semble que l'on nous suppose souvent des connaissances que nous n'avons pas encore. Nous devons d'abord connaître les règles de base, puis acquérir de l'expérience. Ce n'est qu'après cela que nous saurons quelles "règles" nous pouvons contourner ou déroger.

Au fait, je ne faisais pas référence à vous dans mon message. Je pensais que vos réponses étaient de loin les plus claires et les plus précises. Et au risque de passer pour un "lèche-cul", lorsqu'il s'agit d'obtenir les réponses les plus claires et précises sur ce forum, vos messages sont parmi ceux que je consulte en premier. Il n'y a que 4 ou 5 personnes sur ce forum que j'ai trouvées jusqu'à présent qui se sont avérées être plus précises et dont on peut dire qu'elles ont plus qu'un peu d'expérience derrière elles.

 
vangrosh:

Seawolf a dit : "Règle générale... si vous entrez sur le ask, vous sortez avec le bid, si vous entrez sur le bid, vous sortez avec le ask".

Ce n'est pas confus ? Je ne veux pas dire qu'il est confus, je veux dire que pour moi le contexte dans lequel il parle n'est pas clair. Sa règle du pouce n'est pas correcte SI il parle de calculer les sorties. Quand je dis "confus", je ne dis pas que vous ne savez pas ce que vous faites ou que vous ne pouvez pas le faire d'une autre manière - ce que je voulais vraiment dire, c'est que la façon dont ils donnaient les instructions était confuse. Par exemple, la citation de Seawolf ci-dessus est correcte SI elle parle du point de prix auquel les ordres sortent dans MT. Je pense que pour quelqu'un qui vient d'apprendre, il faut être très clair sur le contexte auquel on se réfère, car il y a deux contextes de base lorsqu'on enseigne le TP et le SL.

1) Le contexte ou le point de vue qui se concentre sur le prix (Bid ou Ask) auquel le TP et le SL d'un ordre ouvert seront atteints - ce qui est l'une des premières choses que j'ai dû apprendre juste pour le trading manuel...

2) Le contexte ou le point de vue qui ne se concentre PAS sur le point 1 ci-dessus mais sur le prix (Bid ou Ask) que nous utilisons pour calculer notre TP et SL, SI nous voulons que nos prix TP et SL soient exacts et incluent le spread.

Je suis aussi un novice dans ce domaine et il est facile pour moi et pour d'autres novices de s'embrouiller si les choses nous sont présentées d'une manière où le contexte n'est pas très clair.

Et pour ma part, je ne savais pas au début qu'il y avait plus d'un contexte dans lequel voir le TP et le SL et beaucoup d'autres choses que nous devons comprendre.

cloudbreaker a écrit>>Vangrosh, comme je l'ai mentionné dans ma réponse à Tovan, tant que vous savez exactement ce que vous faites, vous pouvez le faire de n'importe quelle façon.

C'est pour cela que j'essayais d'être aussi clair et dans le contexte que possible dans mon message. Les gens qui apprennent comme moi ne savent pas exactement ce qu'ils font, c'est pourquoi nous avons besoin d'apprendre les choses dans leur contexte.

D'après mon expérience, il semble que l'on nous suppose souvent des connaissances que nous n'avons pas encore. Nous devons d'abord connaître les règles de base, puis acquérir de l'expérience. Ce n'est qu'après que nous saurons quelles sont les "règles" auxquelles nous pouvons nous plier ou déroger.

Au fait, je ne faisais pas référence à vous dans mon message. Je pensais que vos réponses étaient de loin les plus claires et les plus précises. Et au risque de passer pour un "lèche-cul", lorsqu'il s'agit d'obtenir les réponses les plus claires et précises sur ce forum, vos messages sont parmi ceux que je consulte en premier. Il n'y a que 4 ou 5 personnes sur ce forum que j'ai trouvées jusqu'à présent qui se sont avérées être plus précises et dont on peut dire qu'elles ont plus qu'un peu d'expérience derrière elles.

Merci pour le compliment, j'apprécie beaucoup.

Quand j'ai dit que nous n'étions pas confus, je parlais vraiment pour moi et Tovan car nous semblons fonctionner sur une bande de fréquence similaire.

Je vous prie de m'excuser si mon message vous a paru abrupt ; ce n'était certainement pas le cas et je ne me sentais pas comme ça à ce moment-là (bien que j'aie mes moments...).

Mon approche générale de ce forum (lorsque je ne cherche pas à me faire aider moi-même) est de faire de mon mieux pour aider ceux qui essaient d'apprendre une compétence de programmation. Je n'ai vraiment pas de temps à perdre avec les gens qui veulent que tout soit fait pour eux et qui arrivent sur le forum avec leur premier message intitulé "J'ai besoin d'un EA qui marche". Les gens comme vous sont la raison pour laquelle je continue à m'intéresser à ce forum, et vous en savez probablement plus que moi sur les opérations de change.

Je suis programmeur depuis le début des années 1980, mais j'ai abandonné il y a quelques années pour travailler comme pilote d'hélicoptère commercial. Cependant, étant donné le manque de vol de ma société cette année, j'ai écrit des EA pour un de mes amis qui possède une jeune société de recherche. Nous adoptons une approche du trading basée sur la théorie du chaos (plutôt que sur la connaissance du marché) et les EA sont déjà très rentables pour le compte d'un fonds spéculatif bien connu. J'aime vraiment ça !

Bonne chance.

 
delcor wrote >>

Vangrosh

merci pour votre contribution

pouvez-vous m'aider à comprendre

Est-ce correct ?

Je fais un EA avec auto trail

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

{
si (OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red) ; // place un TP et un SL}

Vous devez définir votre TP et SL de base lorsque vous envoyez votre ordre ou bien faire la ligne ci-dessus une seule fois. Si vous faites la ligne ci-dessus

à chaque tick, vous obtiendrez également l'erreur OrderModify 1 qui se produira lorsque la valeur SL existante est la même.

comme le nouveau - ce qui signifie que le prix n'a pas encore changé - le SL est le même que précédemment.
if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) // placez le TP

{
if(OrderStopLoss()>(Ask+Point*TrailingStop)+Point) // vérifier si c'est vrai

Cela semble correct. Et je pense que ce que vous faites en ajoutant un point (+Point) est une bonne idée. Je fais la même chose

mais à un endroit différent et d'une autre manière, mais c'est pour résoudre un problème différent, un problème que vous pouvez avoir lorsque la comparaison des doubles ne fonctionne pas correctement, alors vous ajoutez un point pour vous assurer que le prix est le même.

un point pour s'assurer que le prix est supérieur ou inférieur - sinon votre Trailing stop ne sera pas exécuté parfois.

Lereste semble correct.
{

if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red)) // si vrai modifier l'ordre
Print("Error_Modify - ",GetLastError()) ;
else str=StringConcatenate("\n Mon numéro de ticket est ", OrderTicket(), " et mon réglage de stop loss est ", DoubleToStr(Ask+Point*TrailingStop,Digits)) ; // nouveau code
}
}
}

Voici l'exemple de trailing stop de l'échantillon MACD de MQ EA.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);
                    }
                 }
              }

Mais j'ai découvert que ce code pouvait entraîner des erreurs en raison d'un problème connu : lorsque vous comparez des doubles comme ci-dessus, votre clause greater then > est parfois évaluée comme étant VRAIE.

même si les prix sont exactement les mêmes - vous imprimez() les prix et ils sont les mêmes. Vous pouvez faire une recherche sur la comparaison de doubles pour obtenir des détails. Il existe des solutions de contournement comme la fonction CompareDoubles() qui se trouve dans stdlib.mq4 (dans le dossier des bibliothèques), ou l'utilisation de NormalizeDouble() dans des endroits où elle ne devrait pas être nécessaire, mais j'ai trouvé que dans ce cas, le simple ajout d'un point comme vous l'avez fait est une bonne façon de procéder. Mais je n'ai pas testé la façon dont vous le faites donc je ne suis pas certain qu'elle soit correcte, mais elle semble correcte. Je vais vous donner le code que j'utilise dans mon EA dans le prochain post.

Raison: