Анализ размера свечи и тени свечи. В OnTradeTransaction отлавливаем открытие (DEAL_ENTRY_IN) и закрытие позиций (DEAL_ENTRY_OUT), а также закрытие по Stop loss (DEAL_REASON_SL).
J'ai un EA qui fonctionne sur le graphique sur lequel il a été glissé (la valeur Symbol() est prise comme le nom du symbole).
Mais cette EA a également une variable ticket_exist qui contient un ticket d'un ordre placé et l'EA comprend que si la variable ticket_exist n'est pas égale à zéro, l'ordre est placé ici.
Question : Si j'ouvre un tel EA sur deux instruments différents et que la variable ticket_exist n'est pas égale à zéro sur un instrument, la variable portant le même nom restera-t-elle égale à zéro sur l'autre instrument ?
J'ai un EA qui fonctionne sur le graphique sur lequel il a été glissé (la valeur Symbol() est prise comme le nom du symbole).
Mais cet EA a aussi une variable ticket_exist qui contient un ticket de l'ordre fixé et l'EA comprend que si le ticket_exist n'est pas égal à zéro, l'ordre est fixé ici.
Question : Si j'ouvre un tel EA sur deux instruments différents et que la variable ticket_exist n'est pas égale à zéro sur un instrument, la variable portant le même nom restera-t-elle égale à zéro sur l'autre instrument ?
SU.
La valeur de la variable dans un EA n'est pas disponible pour un autre EA. L'essentiel est que soit les symboles, soit les magies, soit les deux sont différents.
La valeur d'une variable dans un EA n'est pas disponible pour un autre EA. L'essentiel est que soit les symboles, soit les magies, soit les deux soient différents.
Si j'ai bien compris, pour qu'un conflit d'EA (deux absolument identiques) fonctionne avec des symboles différents, leurs variables devraient être définies comme globales (pour tout le terminal) ou, par exemple, un ordre devrait être accessible par son numéro de séquence ou simplement par le fait de son existence ?
voidOnTradeTransaction(constMqlTradeTransaction &trans,
constMqlTradeRequest &request,
constMqlTradeResult &result)
{
//--- get transaction type as enumeration valueENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- if transaction is result of addition of the transaction in historyif(type==TRADE_TRANSACTION_DEAL_ADD)
{
long deal_entry =0;
string deal_symbol ="";
long deal_magic =0;
long deal_reason =-1;
if(HistoryDealSelect(trans.deal))
{
deal_entry=HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
deal_symbol=HistoryDealGetString(trans.deal,DEAL_SYMBOL);
deal_magic=HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
deal_reason=HistoryDealGetInteger(trans.deal,DEAL_REASON);
}
elsereturn;
if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
if(deal_entry==DEAL_ENTRY_OUT)
{
if(deal_reason==DEAL_REASON_SL)
SendNotification ("Закрыл позицию > StopLoss");
if(deal_reason==DEAL_REASON_TP)
SendNotification ("Закрыл позицию > TakeProfit");
}
}
}
Je l'ai corrigé un peu, il fonctionne (je l'ai vérifié).
Ici, nous devons retracer le fait que la transaction a été conclue exactement à SL ou TP. Et en utilisantOnTradeTransaction, nous obtenons des données prêtes à l'emploi juste après la conclusion de la transaction.
S'il y a plus d'une transaction fermée à TimeCurrent, quel résultat doit être renvoyé ? Et la présence d'un profit ne signifie pas que la transaction a été fermée par le SL ou le TP. Cela doit être suivi, comme je l'ai déjà dit. Ainsi, l'utilisation deOnTradeTransaction est la solution la plus simple !
Versuchen Sie es (ich habe es nicht getestet)
Merci, je vérifierai plus tard.
Veuillez m'aider à positionner la fonction correctement
...
Mais comment et où insérer
Pour envoyer un message lorsqu'un stop loss ou untake profit est atteint ?
Est-ce qu'on parle de la même chose ?
J'ai trouvé un exemple qui suit la sortie du SL avecOnTradeTransaction: https://www.mql5.com/ru/code/21147.
Le même EA sur deux instruments différents
Bonjour ! Pourriez-vous m'aider ?
J'ai un EA qui fonctionne sur le graphique sur lequel il a été glissé (la valeur Symbol() est prise comme le nom du symbole).
Mais cette EA a également une variable ticket_exist qui contient un ticket d'un ordre placé et l'EA comprend que si la variable ticket_exist n'est pas égale à zéro, l'ordre est placé ici.
Question : Si j'ouvre un tel EA sur deux instruments différents et que la variable ticket_exist n'est pas égale à zéro sur un instrument, la variable portant le même nom restera-t-elle égale à zéro sur l'autre instrument ?
SU.
Le même EA sur deux instruments différents
Bonjour ! Pourriez-vous m'aider ?
J'ai un EA qui fonctionne sur le graphique sur lequel il a été glissé (la valeur Symbol() est prise comme le nom du symbole).
Mais cet EA a aussi une variable ticket_exist qui contient un ticket de l'ordre fixé et l'EA comprend que si le ticket_exist n'est pas égal à zéro, l'ordre est fixé ici.
Question : Si j'ouvre un tel EA sur deux instruments différents et que la variable ticket_exist n'est pas égale à zéro sur un instrument, la variable portant le même nom restera-t-elle égale à zéro sur l'autre instrument ?
SU.
La valeur de la variable dans un EA n'est pas disponible pour un autre EA. L'essentiel est que soit les symboles, soit les magies, soit les deux sont différents.
Pouvez-vous me dire quelle heure il est, en ticks ? Heure du serveur ou UTC ?
Je me souviens avoir lu quelque part, mais je ne me souviens plus où...
La valeur d'une variable dans un EA n'est pas disponible pour un autre EA. L'essentiel est que soit les symboles, soit les magies, soit les deux soient différents.
Si j'ai bien compris, pour qu'un conflit d'EA (deux absolument identiques) fonctionne avec des symboles différents, leurs variables devraient être définies comme globales (pour tout le terminal) ou, par exemple, un ordre devrait être accessible par son numéro de séquence ou simplement par le fait de son existence ?
Essayez ceci (je ne l'ai pas testé)
Ça ne marche pas, ça donne des erreurs de compilation.
J'ai essayé de cette façon et il compile sans aucun problème mais je ne peux pas le tester avec la patinoire fermée.
Je reprends le travail demain.
cela ne fonctionne pas, cela donne des erreurs de compilation
J'ai essayé de cette façon, il compile sans aucun problème, mais lorsque la patinoire est fermée, je ne peux pas le tester.
Je le finirai demain.
vous n'avez pas mis le code correctement !
Je l'ai arrangé un peu et ça marche.
vous n'avez pas mis le code correctement !
Je l'ai corrigé un peu, il fonctionne (je l'ai vérifié).
Ici, nous devons retracer le fait que la transaction a été conclue exactement à SL ou TP. Et en utilisantOnTradeTransaction, nous obtenons des données prêtes à l'emploi juste après la conclusion de la transaction.
S'il y a plus d'une transaction fermée à TimeCurrent, quel résultat doit être renvoyé ? Et la présence d'un profit ne signifie pas que la transaction a été fermée par le SL ou le TP. Cela doit être suivi, comme je l'ai déjà dit. Ainsi, l'utilisation deOnTradeTransaction est la solution la plus simple !
Ici, nous devons également vérifier que la transaction a été clôturée exactement sur le SL ou le TP.
J'ai compris qu'il s'agissait d'une notification de la conclusion d'un marché, peut-être que je me suis trompé...
Mihail Matkovskij:
Si plus d'une transaction est fermée à TimeCurrent, quel résultat dois-je obtenir ?
je ne sais pas, je dois vérifier