Demandez ! - page 32

 

Dave,

N'abandonne pas si facilement. Si je te dis quoi faire, tu auras peut-être tort et tu n'apprendras jamais la bonne chose.

Voici un autre essai.

Bonne chance.

for (int cnt1=OrdersTotal()-1;cnt1>=0;cnt1--)

{

OrderSelect(cnt1, SELECT_BY_POS, MODE_TRADES);

if (OrderType()>=OP_SELL && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(15 *Point),Bid-(20*Point),Cyan); //Modify stop loss and take profit

return(0);

}

if (OrderType()>=OP_BUY && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan); //Modify stop loss and take profit

return(0);

}

}

 

comment puis-je savoir si mon ordre a atteint un stop-loss ?

Bonjour à tous

Je programme un EA qui utilise un trailing-stop. Le problème est que lorsqu'il atteint un stop-loss, il ouvre un nouvel ordre. Donc, la question est la suivante : comment dire à l'EA que lorsqu'un ordre atteint un stop-loss, il faut attendre la prochaine barre pour décider si l'on veut ouvrir un nouvel ordre ? toute aide s'il vous plaît ?

 
 
iscuba11:
Où a lieu la modification dans ce cas ? Le stop loss initial était de 40, et le take profit de 100. Dans le cadre du mode veille, le stop loss doit passer à 15 sur tous les ordres ouverts existants et le take profit doit passer à 25 sur tous les ordres ouverts existants.

Tickets d'ordres ouverts : Avant le mode veille.

Avant le mode veille Stop Loss - 40 Avant le mode veille Take Profit-100 Après le mode veille Modification Stop Loss -15 Après le mode veille Modification Take Profit - 25

Je ne suis pas en train d'initialiser les paramètres des ordres, je modifie des ordres existants déjà placés et toujours actifs.

Merci quand même pour votre aide ! Pourquoi quelque chose d'aussi simple semble-t-il si difficile ?

Dave <<

comment définissez-vous votre mode veille ?

il suffit de l'ajouter avant la boucle ordermodify().

comme...

if(sleepcome)

{

for(.....)

{

//delete my code gave you before or make it as comment

orderselect(.....);

.

.

.

}

}

cela peut aider

 
AnasFX:
Bonjour, je suis en train de programmer un EA qui utilise un trailing-stop. Le problème est que lorsqu'il atteint un stop-loss, il ouvre un nouvel ordre. Donc, la question est la suivante : comment dire à l'EA que lorsqu'un ordre atteint un stop-loss, il faut attendre la prochaine barre pour décider si l'on veut ouvrir un nouvel ordre ? toute aide s'il vous plaît ?

vérifier l'historique des transactions si l'ordrecloseprice() = orderstoploss() alors il se ferme en touchant le sl

for(int hcnt=0;hcnt<HistoryTotal();hcnt++)

{

OrderSelect(hcnt, SELECT_BY_POS, MODE_HISTORY);

if(OrderSymbol()==Symbol())

{

if(OrderClosePrice()==OrderStopLoss())

.

.

.

}

}

 

Temps de stop-loss

phoenix:
vérifier l'historique des transactions si le prix de clôture de l'ordre() = le stop-loss(), alors l'ordre a été clôturé en atteignant le stop-loss.

for(int hcnt=0;hcnt<HistoryTotal();hcnt++)

{

OrderSelect(hcnt, SELECT_BY_POS, MODE_HISTORY);

if(OrderSymbol()==Symbol())

{

if(OrderClosePrice()==OrderStopLoss())

.

.

.

}

}

Merci pour cette idée. Je veux aussi connaître l'heure du stop-loss et si cette heure se trouve dans la barre actuelle. Je peux avoir beaucoup de stop-loss, mais je veux savoir s'il atteint le stop-loss dans la barre actuelle. Dois-je vérifier l'heure de clôture de l'ordre et la comparer avec l'heure de la barre actuelle ?

 

Afficher les achats et les ventes sur un EA

J'aimerais placer des flèches ou des objets texte ou autre chose sur le graphique pendant que mon EA est en cours d'exécution pour montrer ses actions, mais les objets ne semblent pas apparaître. Quelqu'un a-t-il un exemple d'EA fonctionnel qui dessine sur le graphique ?

De même, le testeur de stratégie possède un bouton permettant d'afficher un graphique après l'exécution d'un test, mais je ne vois pas les flèches. Est-ce un problème avec la version 195, car je sais que je les ai vues dans le passé. Comment peut-on modifier ces objets flèches ? J'aimerais les rendre plus grandes, mais je ne sais pas non plus comment accéder au graphique dans le testeur.

Je suppose que les deux problèmes sont les mêmes : obtenir un retour d'information des utilisateurs sur les EA.

 

J'ai un expert que je suis en train de peaufiner et je voulais éviter un signal d'entrée si la barre précédemment fermée était extrêmement longue (>30 pips). (>30 pips) J'ai ajouté la phrase ci-dessous comme condition mais elle ne semble pas être reconnue. Je ne suis pas un bon codeur mais j'ai la chance de pouvoir ajuster des experts et j'apprends au fur et à mesure. Quelqu'un pourrait-il me dire quelle logique ou phrase je dois utiliser ici ?

Sous la section ;

-----------------------------------

void CheckForSignals() {

-----------------------------------

J'ai inclus la condition ;

-----------------------------------

si ((Close[1])-(Open[1])<30 ) {

buysig=true ;

-----------------------------------

Merci pour toute suggestion,

MJ

 
marketjouster:
J'ai un expert que je peaufine et je voulais éviter un signal d'entrée si la barre précédemment fermée était extrêmement longue. (>30 pips) J'ai ajouté la phrase ci-dessous comme condition mais elle ne semble pas être reconnue. Je ne suis pas un bon codeur mais j'ai la chance de pouvoir ajuster des experts et j'apprends au fur et à mesure. Quelqu'un pourrait-il me dire quelle logique ou phrase je dois utiliser ici ?

si ((Close[1])-(Open[1])<30 ) ...

MJ

MJ,

En supposant que Close[1] soit par exemple à 1.2835 et Open[1] à 1.2805 (barre haussière), la différence est de 0.0030 donc la vérification par rapport à 30 ne fonctionnera pas. De plus, que se passe-t-il si Close[1] est à 1.2805 et Open[1] à 1.2835 (barre baissière) ? Vous obtiendrez -0.0030.

Donc tout d'abord vous devez utiliser Close[1]-Open[1] < (30*Point) pour remédier au premier problème, et ensuite vous devez utiliser la fonction MathAbs() pour obtenir la valeur absolue de la soustraction.

En bref, utilisez : if MathAbs(Close[1]-Open[1])<(30*Point)....

HTH

Yannis

 

Code pour éviter l'entrée d'un trade en barre longue

Yannis:
MJ,

En supposant que Close[1] soit par exemple à 1.2835 et Open[1] à 1.2805 (barre haussière), la différence est de 0.0030 donc la vérification par rapport à 30 ne fonctionnera pas. De plus, que se passe-t-il si Close[1] est à 1.2805 et Open[1] à 1.2835 (barre baissière) ? Vous obtiendrez -0.0030.

Donc tout d'abord vous devez utiliser Close[1]-Open[1] < (30*Point) pour remédier au premier problème, et ensuite vous devez utiliser la fonction MathAbs() pour obtenir la valeur absolue de la soustraction.

En bref, utilisez : if MathAbs(Close[1]-Open[1])<(30*Point)....

HTH

Yannis

Merci beaucoup Yannis. Votre explication est très claire et j'apprécie l'inclusion du code réel. Puis-je poser une question complémentaire ? Si je voulais être en mesure d'ajuster le nombre de pips pour la barre longue dans la fenêtre des propriétés des conseillers experts, pourrais-je utiliser ;

extern int LBE=30 ; // LBE est 'Long Bar Entry'. La valeur par défaut pourrait être 30

dans l'en-tête de l'expert et ensuite utiliser LBE au lieu de 30 dans votre ligne de code ?

if MathAbs(Close[1]-Open[1])<(LBE*Point)

Cela me permettrait de tester les paramètres de pip variants manuellement, et de l'optimiser en back testing.

MJ