Demandez ! - page 61

 

Question sur le code

Veuillez ne pas tenir compte du message. Ce paramètre a fait ce dont j'avais besoin. Merci de commencer par là pour nous aider.

J'ai modifié une EA pour qu'elle fonctionne avec plusieurs méthodes. J'ai fait quelques recherches mais je n'arrive pas à trouver comment ajouter le nom de l'EA dans le champ des commentaires lors de l'ouverture d'un ordre. Quelqu'un peut-il m'indiquer la bonne direction ?

J'espère qu'il existe une commande simple de type chaîne de caractères que je peux intégrer dans n'importe quel EA que je modifie afin que les ordres soient mieux organisés lorsque je fais fonctionner plus d'un EA pendant un test.

Merci de votre temps et de votre perspicacité.

Voici l'une des sections non modifiées que je devrai changer pour saisir le commentaire de l'EA.

if(ObjectFind(BuyStop_TrendName) == 0)

{

SetObject("Active" + BuyStop_TrendName,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME1),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE1) + BuyStop_StepActive*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME2),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE2) + BuyStop_StepActive*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_COLOR));

SetObject("Prepare" + BuyStop_TrendName,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME1),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE1) - BuyStop_StepPrepare*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_TIME2),

ObjectGet(BuyStop_TrendName, OBJPROP_PRICE2) - BuyStop_StepPrepare*Point,

ObjectGet(BuyStop_TrendName, OBJPROP_COLOR));

vA = NormalizeDouble(ObjectGetValueByShift("Active"+BuyStop_TrendName,0),Digits);

vM = NormalizeDouble(ObjectGetValueByShift(BuyStop_TrendName,0),Digits);

vP = NormalizeDouble(ObjectGetValueByShift("Prepare"+BuyStop_TrendName,0),Digits);

sl = vA - BuyStop_StopLoss*Point;

tp = vA + BuyStop_TakeProfit*Point;

if(Ask = vP && OrderFind(MagicBuyStop) == false)

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp,"", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

if(Ask = vP && OrderFind(MagicBuyStop) == true &&

glbOrderType == OP_BUYSTOP)

{

OrderSelect(glbOrderTicket, SELECT_BY_TICKET, MODE_TRADES);

if(vA != OrderOpenPrice())

if(OrderModify(glbOrderTicket, vA, sl, tp, 0, Green) == false)

Print("Err (", GetLastError(), ") Modify BuyStop Price= ", vA,

" SL= ", sl, " TP= ", tp);

}

if(Ask < vP && OrderFind(MagicBuyStop) == true &&

glbOrderType == OP_BUYSTOP && AutoClose==true)

{

OrderDelete(glbOrderTicket);

}

}

[/code]

I am not sure of the logic but can I just input the CommentName in the following location? I have not tested this but it compiles fine.

[code]

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp,"CommentName", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

Dossiers :
 

Merci à Coderguru d'être là pour nous !

J'ai une question sur les alertes.

Je veux changer le type d'alerte dans ce code pour qu'il joue un fichier wav que je choisis et ne pas avoir la fenêtre popup d'achat-vente. Il suffit de jouer le fichier wav lorsque la fractale apparaît.

Comment doit être le code ? J'ai joint l'indicateur d'alerte sFractals.

if(PrevSignal <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = 1 ;

Alert("sFractals (", Symbol(), ", ", Period(), ") - ACHETEZ ! !!") ;

}

}

si(PrevSignal >= 0)

{

if(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1 ;

Alert("sFractals (", Symbol(), ", ", Period(), ") - VENDRE ! !!") ;

}

}

Dossiers :
sfractals.mq4  8 kb
 
proverbs:
Je ne suis pas sûr de la logique, mais puis-je simplement saisir le nom du commentaire à l'endroit suivant ? Je ne l'ai pas testé mais il compile bien.

if(OrderSend(Symbol(), OP_BUYSTOP, BuyStop_Lot, vA, 3, sl, tp,"CommentName", MagicBuyStop, 0, Green) < 0)

Print("Err (", GetLastError(), ") Open BuyStop Price= ", vA, " SL= ", sl," TP= ", tp);

Cela fonctionnera parfaitement. Vous pouvez également placer une variable de type chaîne à cet endroit.

 
Drivefast:
Merci à Coderguru d'être là pour nous !

J'ai une question sur les alertes.

Je veux changer le type d'alerte dans ce code pour qu'il joue un fichier wav que je choisis et ne pas avoir la fenêtre popup d'achat-vente. Il suffit de jouer le fichier wav lorsque le fractal apparaît.

Comment doit être le code ? J'ai joint l'indicateur d'alerte sFractals.

if(PrevSignal <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = 1 ;

Alert("sFractals (", Symbol(), ", ", Period(), ") - ACHETEZ ! !!") ;

}

}

si(PrevSignal >= 0)

{

if(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1 ;

Alert("sFractals (", Symbol(), ", ", Period(), ") - VENDRE ! !!") ;

}

}

Je pense que CodersGuru est mort ou quelque chose comme ça. Il n'est plus là depuis un moment.

Quoi qu'il en soit, .... ajouter cette déclaration :

PlaySound("alert.wav") ;

.... où "alert.wav" est le nom du fichier que vous voulez lire.

 
ryanklefas:
Je pense que CodersGuru est mort ou quelque chose comme ça. Il n'est plus là depuis un moment.

En tout cas.... ajouter cette déclaration :

PlaySound("alert.wav") ;

.... où "alert.wav" est le nom du fichier que vous voulez lire.

Merci d'avoir répondu à mon message.

Je ne suis pas sûr de l'endroit où il faut mettre PlaySound("alert.wav") ; dans le code.

Puis-je simplement supprimer cette partie ? Alert("sFractals (", Symbol(), ", ", Period(), ") - ACHETEZ ! !!") ;

Ou, est-ce que cela doit être quelque chose comme ceci ?

PrevSignal = 1 ;

PlaySound("alert.wav") ;

Alert("sFractals (", Symbol(), ", ", Period(), ") - ACHETEZ ! !!") ;

 

Ouaip. Remplace juste l'alerte entière par le son.

if(PrevSignal <= 0 )

{

if(ExtDownFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = 1;

PlaySound("alert.wav");

}

}

if(PrevSignal >= 0)

{

if(ExtUpFractalsBuffer[SIGNAL_BAR] > 0)

{

PrevSignal = -1;

PlaySound("alert.wav");

}

}
 

Merci ryanklefas pour toute votre aide, cela fonctionne comme je le veux maintenant.

 

Question sur le tri

J'ai un tableau de données, à 2 dimensions, stocké dans un tableau à 2 dimensions. Je veux faire quelques manipulations, comme trier selon n'importe quelle colonne de ce tableau de données.

La fonction ArraySort(), dans l'instruction, peut trier les tableaux sur sa 1ère dimension. Je ne vois pas comment cela peut fonctionner pour moi.

Avez-vous des suggestions concernant le tri des tableaux de données sur MetaTrader ?

 

Communication Betwen Expert Advisor

Bonjour,

Je veux savoir s'il y a un moyen de communiquer entre les conseillers experts, disons que j'ai l'EA A comme stratégie principale et l'EA B comme stratégie de sauvegarde.

et l'EA B comme stratégie de secours

Je les place sur 2 paires différentes...

je veux déclencher si l'EA A est en position de drawdown, démarrer l'EA B...

quand le profit cumulé de l'EA A et de l'EA B a atteint un certain point cible...

fermer toutes les positions de l'EA A et de l'EA B

Est-ce possible ?

 
veematics:
Bonjour,

Je veux savoir s'il existe un moyen de communiquer entre les conseillers experts, disons que j'ai l'EA A comme stratégie principale et l'EA B comme stratégie de sauvegarde.

et l'EA B comme stratégie de secours

je les place sur 2 paires différentes...

je veux déclencher si l'EA A est en position de drawdown, démarrer l'EA B...

quand le profit cumulé de l'EA A et de l'EA B a atteint un certain point cible...

fermer toutes les positions de l'EA A et de l'EA B

Est-ce possible de le faire ?

Je pense que les variables globales seraient la chose que vous recherchez. Vous pouvez les vérifier dans la section de référence du MetaEditor. Pour visualiser vos variables globales actuelles, appuyez sur F3 dans le terminal MT4.

Raison: