Désolé, alex12, mais vous ressemblez à un bulldozer (sans vouloir vous offenser, c'est un terme accepté). Vous fabriquez quelque chose à partir de différents morceaux et vous arrivez à le compiler, mais vous ne comprenez pas la signification du code.
Lorsque vous utilisez certaines des fonctions d'Igor Kim, assurez-vous que vous avez dans votre code les fonctions manquantes dont le compilateur vous parle. Trouvez-les dans sa branche et écrivez-les dans votre code.
OrderOpenTime() indique l'heure à laquelle la position a été ouverte, ma question est la suivante : comment puis-je connaître l'heure à laquelle l'ordre STOP a été fixé ? Le rapport MT4 indique cette heure, mais est-il possible de la trouver à partir du code ?
Encore une fois.
Passez en revue tous vos ordres stop dans un cycle "standard", et pour vous-même, relevez la valeur de l'OrderOpenTime() pour chacun d'entre eux - ce doit être l'heure à laquelle ils (chacun d'entre eux) ont été fixés. Voici un exemple pour les ordres de marché - ajustez-le un peu, c'est-à-dire, ou supprimez cette ligne complètement
si ((orderType != OP_BUY) && (orderType != OP_SELL)) continuez ;
ou le remplacer par les données des ordres stop qui vous intéressent...
int orderCount = 0; // сбрасываем счетчик ордеров // ------------------------------------------------Считаем только наши ордера---------------------------int orderType;
for (orderIndex = (OrdersTotal() - 1); orderIndex >= 0; orderIndex--)
{
if (!OrderSelect(orderIndex, SELECT_BY_POS)) continue; // если ордер не выбран, то идем на следующий открытыйif(OrderCloseTime()!=0) continue; // если тикет принадлежит закрытому ордеру, то берем следующий открытыйif ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != magic)) continue;
orderType = OrderType();
if ((orderType != OP_BUY) && (orderType != OP_SELL)) continue;
ticket = OrderTicket( ); // Номер ордера
orderLots = OrderLots(); // Lots
orderProfit = OrderProfit() + OrderSwap(); // Profit
Price = OrderOpenPrice(); // Цена открытия рыночного ордера
SL = OrderStopLoss(); // Значение StopLoss ордера
TP = OrderTakeProfit(); // Значение TakeProfit ордера
Time = O rderOpenTime();
orderCount++; // считаем ордера (не больше i)
}
Encore une fois. Passez en revue tous vos ordres stop dans une boucle "standard", et pour vous-même, imprimez la valeur de OrderOpenTime() pour chacun d'entre eux - ce doit être l'heure à laquelle ils (chacun d'entre eux) sont fixés. Voici un exemple pour les ordres de marché - ajustez-le un peu, c'est-à-dire, ou supprimez cette ligne complètement
si ((orderType != OP_BUY) && (orderType != OP_SELL)) continuez ;
ou le remplacer par les données des ordres stop qui vous intéressent...
À ce stade, j'ai rencontré un dilemme - j'ai besoin du moment de l'ouverture d'un ordre STOP pour certaines "statistiques" et je ne voudrais pas que ce processus soit exécuté en permanence, mais seulement à une certaine étape finale. Pour cette raison, nous n'avons pas besoin de rechercher les ordres actuellement ouverts (OrdersTotal()), mais de rechercher parmi les ordres déjà fermés => OrdersHistoryTotal(). Mais pour les ordres STOP qui ont déjà été fermés, OrderOpenTime() renvoie l'heure d'ouverture de la position, et non l'heure à laquelle l'ordre a été placé. En conséquence, tout se résume à ceci : est-il possible de récupérer l'heure à laquelle les ordres STOP de la liste de OrdersHistoryTotal(), lorsqu'ils ont été fixés ?
chief2000: C'est là que j'ai rencontré un dilemme - j'ai besoin du temps d'ouverture de l'ordre STOP pour certaines "statistiques" et je ne voudrais pas que ce processus soit exécuté en permanence, mais seulement à un certain stade final. Pour cette raison, nous n'avons pas besoin de rechercher les ordres ouverts à ce moment-là (OrdersTotal()), mais de rechercher parmi les ordres déjà fermés => OrdersHistoryTotal(). Mais pour les ordres STOP qui ont déjà été fermés, OrderOpenTime() renvoie l'heure d'ouverture de la position, et non l'heure à laquelle l'ordre a été placé. En conséquence, tout se résume à ceci : est-il possible de récupérer l'heure à laquelle les ordres STOP de la liste de OrdersHistoryTotal(), lorsqu'ils ont été fixés ?
Oui... Le défi... JE NE SAIS PAS. On dirait que non - surtout dans les "phases finales"...
Vous devez constamment surveiller ce processus et en garder la trace - voir le post FAQ de la page précédente.
Dans ce cas, il est plus facile d'écrire dans un fichier, moins de tracas, et les statistiques peuvent être organisées en fonction de vos besoins, et non du terminal.
FAQ: Dans ce cas, il est plus facile d'écrire dans un fichier, moins de tracas, et les statistiques peuvent être organisées en fonction de vos besoins, et non du terminal.
Il génère beaucoup d'erreurs
Désolé, alex12, mais vous ressemblez à un bulldozer (sans vouloir vous offenser, c'est un terme accepté). Vous fabriquez quelque chose à partir de différents morceaux et vous arrivez à le compiler, mais vous ne comprenez pas la signification du code.
Contactez le service Travail.
Il génère beaucoup d'erreurs
...
OrderOpenTime() indique l'heure à laquelle la position a été ouverte, ma question est la suivante : comment puis-je connaître l'heure à laquelle l'ordre STOP a été fixé ?
Le rapport MT4 indique cette heure, mais est-il possible de la trouver à partir du code ?
Encore une fois.
Passez en revue tous vos ordres stop dans un cycle "standard", et pour vous-même, relevez la valeur de l'OrderOpenTime() pour chacun d'entre eux - ce doit être l'heure à laquelle ils (chacun d'entre eux) ont été fixés. Voici un exemple pour les ordres de marché - ajustez-le un peu, c'est-à-dire, ou supprimez cette ligne complètement
si ((orderType != OP_BUY) && (orderType != OP_SELL)) continuez ;
ou le remplacer par les données des ordres stop qui vous intéressent...
Encore une fois.
Passez en revue tous vos ordres stop dans une boucle "standard", et pour vous-même, imprimez la valeur de OrderOpenTime() pour chacun d'entre eux - ce doit être l'heure à laquelle ils (chacun d'entre eux) sont fixés. Voici un exemple pour les ordres de marché - ajustez-le un peu, c'est-à-dire, ou supprimez cette ligne complètement
si ((orderType != OP_BUY) && (orderType != OP_SELL)) continuez ;
ou le remplacer par les données des ordres stop qui vous intéressent...
Mais pour les ordres STOP qui ont déjà été fermés, OrderOpenTime() renvoie l'heure d'ouverture de la position, et non l'heure à laquelle l'ordre a été placé.
En conséquence, tout se résume à ceci : est-il possible de récupérer l'heure à laquelle les ordres STOP de la liste de OrdersHistoryTotal(), lorsqu'ils ont été fixés ?
C'est là que j'ai rencontré un dilemme - j'ai besoin du temps d'ouverture de l'ordre STOP pour certaines "statistiques" et je ne voudrais pas que ce processus soit exécuté en permanence, mais seulement à un certain stade final. Pour cette raison, nous n'avons pas besoin de rechercher les ordres ouverts à ce moment-là (OrdersTotal()), mais de rechercher parmi les ordres déjà fermés => OrdersHistoryTotal().
Mais pour les ordres STOP qui ont déjà été fermés, OrderOpenTime() renvoie l'heure d'ouverture de la position, et non l'heure à laquelle l'ordre a été placé.
En conséquence, tout se résume à ceci : est-il possible de récupérer l'heure à laquelle les ordres STOP de la liste de OrdersHistoryTotal(), lorsqu'ils ont été fixés ?
Oui... Le défi... JE NE SAIS PAS. On dirait que non - surtout dans les "phases finales"...
Vous devez constamment surveiller ce processus et en garder la trace - voir le post FAQ de la page précédente.
Oui... Le défi... JE NE SAIS PAS. On dirait que non - surtout dans les "phases finales"...
Vous devez constamment surveiller ce processus et en garder la trace - voir le post FAQ de la page précédente.
Merci quand même !
Dans ce cas, il est plus facile d'écrire dans un fichier, moins de tracas, et les statistiques peuvent être organisées en fonction de vos besoins, et non du terminal.
Je veux écrire un Expert Advisor sur le modèle de la pince.
J'ai choisi
Malheureusement pour moi, la condition est erronée car 'sl' est fixé à 100.00000 et 'tp' montre une erreur.
J'ai décidé d'ajouter une condition pour considérer 1 tick.
le résultat est le même. comment puis-je résoudre mon problème ?