Pouvez-vous s'il vous plaît me conseiller comment écrire le code correctement lors de la négociation de l'EA dans MT4, je suis très nouveau à la programmation.
Je dois sélectionner le dernier ordre clôturé et comparer son profit. Je ne dois rien faire si son profit est supérieur à 0, s'il est inférieur à 0, je dois faire quelque chose.
Pouvez-vous s'il vous plaît me conseiller comment écrire le code correctement lors de la négociation de l'EA dans MT4, je suis très nouveau à la programmation.
Je dois sélectionner le dernier ordre clôturé et comparer son profit. Je ne dois rien faire si son profit est supérieur à 0, s'il est inférieur à 0, je dois faire quelque chose.
J'ai beaucoup de respect, Alexander.
//+------------------------------------------------------------------+datetime time=0; double profit=0,lots=0;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
if(OrderSymbol()==_Symbol)
if(OrderMagicNumber()==MagicNumber || MagicNumber==-1)
if(OrderCloseTime()>time) // находим последний в истории ордер
{
time=OrderCloseTime(); // запомним время
profit=OrderProfit(); // запомним профит
his_lt=OrderLots(); // запомним лот
}
if(profit<0) //если профит меньше нуля
lots=his_lt*2; // Увеличим в два раза//+------------------------------------------------------------------+
Je me demande à quoi sert l'heure, pourquoi se souvenir de l'heure de fermeture, si on choisit de toute façon le dernier de la liste, et qu'en est-il du cycle ? Et pourquoi n'envisagez-vous pas l'échange et la commission ? Même si OrderProfit()>0, le bénéfice réel peut être négatif. Si vous travaillez directement avec la liste des commandes, vous ne devriez pas laisser des morceaux du code de la boucle chercher la dernière commande à fermer. Une chose est soit la fiabilité et la certitude, soit la rapidité. Et vous avez un méli-mélo.
Artyom Trishkin: Je me demande à quoi sert l'heure, pourquoi se souvenir de l'heure de fermeture, si on choisit de toute façon le dernier de la liste, et qu'en est-il du cycle ? Et pourquoi n'envisagez-vous pas l'échange et la commission ? Même si OrderProfit()>0, le bénéfice réel peut être négatif. Si vous travaillez directement avec la liste des commandes, vous ne devriez pas laisser des morceaux de code de la boucle recherchant la dernière au moment de la fermeture. Une chose est soit la fiabilité et la certitude, soit la rapidité. Ce que vous avez, c'est un fouillis.
Veuillez indiquer comment fermer un ordre ouvert dans MQL4 sur MT4 après 20 barres, c'est-à-dire que lorsqu'un ordre est ouvert et que 20 nouvelles barres apparaissent, il est fermé. (une seule commande est toujours ouverte). Pour une raison quelconque, ce code ne fonctionne pas dans le testeur de stratégie, et nous avons besoin qu'il le fasse.
Le code a la signification suivante : nous vérifions si nous avons des ordres ouverts, si non, nous ouvrons un ordre et enregistrons dans la variable "z" le prix ouvert de la 1ère barre et ensuite à chaque tick nous vérifions le prix ouvert de la 20ème barre et quand la 1ère barre atteint finalement la 20ème barre, son prix sera le même que le prix enregistré dans la variable "z" et alors l'ordre sera fermé. (bien sûr pendant le processus, les prix peuvent coïncider, mais ce sera très rare, en outre, nous pouvons écrire plus de paramètres de la 1ère barre dans les variables)
double z; //объявление переменной//ОТКРЫТИЕ ОРДЕРАif(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер
{
OrderSend(Symbol(), OP_SELL, 0.1, Bid, 3, Bid+150*Point, Bid-10*Point);
z = Open[1]; // здесь переменной "z" присваивается цена открытия 1-го бара
}
elsePrint("ORDER NE USTANOVLEN!!!");
//ЗАКРЫТИЕ ОРДЕРАif (z==Open[20]) //если цена записанная в переменную "z" равна цене 20-го бара, то закрывать ордер
{
//-----------------код закрывает все ордера--------------------bool result;
int error;
while (OrdersTotal()>0)
{
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{ if(OrderType()==OP_BUY) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if(OrderType()==OP_SELL) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if (OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)
OrderDelete(OrderTicket());
if(result!=TRUE) { error=GetLastError();
Print("LastError = ",error, " ",Symbol()); }
else error=0; }
elsePrint( "Error when order select ", GetLastError());
}
//------------конец кода закрывающего ордер------------------
}
elsePrint("ORDER NE ZAKRYT!!!");
Veuillez indiquer comment fermer un ordre ouvert dans MQL4 sur MT4 après 20 barres, c'est-à-dire que lorsqu'un ordre est ouvert et que 20 nouvelles barres apparaissent, il est fermé. (une seule commande est toujours ouverte). Pour une raison quelconque, ce code ne fonctionne pas dans le testeur de stratégie, et nous avons besoin qu'il le fasse.
Le code a la signification suivante : nous vérifions si nous avons des ordres ouverts, si non, nous ouvrons un ordre et enregistrons dans la variable "z" le prix ouvert de la 1ère barre et ensuite à chaque tick nous vérifions le prix ouvert de la 20ème barre et quand la 1ère barre atteint finalement la 20ème barre, son prix sera le même que le prix enregistré dans la variable "z" et alors l'ordre sera fermé. (bien sûr pendant le processus, les prix peuvent coïncider, mais ce sera très rare, en outre, nous pouvons écrire plus de paramètres de la 1ère barre dans les variables)
C'est ça, j'ai trouvé moi-même, j'aurais dû déclarer la variable en dehors de int start() - maintenant ça marche bien.
Je suis en train d'écrire un EA multi-devises mais je n'arrive pas à comprendre pourquoi il renvoie des prix différents au même moment si je le lie à différentes devises.
Cette valeur est totalement différente, et dans le second cas, d'après le graphique, il ne peut y avoir une telle valeur pendant au moins plusieurs heures.
Dans le testeur de stratégie, tous les ticks sont en mode commercial, j'ai l'impression que si ce n'est pas la paire principale, les valeurs dans le testeur de stratégie sont approximatives.
J'ai oublié d'ajouter que ceci est Meta Trade 5
J'ai découvert que la première fois que je le fais, le prix est faux et que la deuxième fois, le prix est normal.
Pouvez-vous trouver dans l'histoire combien de ticks ont été en hausse et en baisse dans le volume des ticks?
Cela fait quelques mois que j'ai supprimé autochartis, mais les messages du journal continuent de s'afficher. Le logiciel continue d'essayer d'ouvrir les fichiers.
Comment effacer complètement Autochartis ?
2015.05.25 15:36:42.983 Cannot open file 'C:\Users\asus\AppData\Roaming\MetaQuotes\Terminal\................................\MQL4\indicators\Autochartist Volatility.ex4' [2]
2015.05.25 15:36:42.983 Cannot open file 'C:\Users\asus\AppData\Roaming\MetaQuotes\Terminal\................................\MQL4\indicators\Autochartist Key Levels.ex4' [2]
2015.05.25 15:36:42.982 Cannot open file 'C:\Users\asus\AppData\Roaming\MetaQuotes\Terminal\................................\MQL4\indicators\Autochartist Chart Patterns.ex4' [2]
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Bon après-midi.
Pouvez-vous s'il vous plaît me conseiller comment écrire le code correctement lors de la négociation de l'EA dans MT4, je suis très nouveau à la programmation.
Je dois sélectionner le dernier ordre clôturé et comparer son profit. Je ne dois rien faire si son profit est supérieur à 0, s'il est inférieur à 0, je dois faire quelque chose.
J'ai beaucoup de respect, Alexander.
Bon après-midi.
Pouvez-vous s'il vous plaît me conseiller comment écrire le code correctement lors de la négociation de l'EA dans MT4, je suis très nouveau à la programmation.
Je dois sélectionner le dernier ordre clôturé et comparer son profit. Je ne dois rien faire si son profit est supérieur à 0, s'il est inférieur à 0, je dois faire quelque chose.
J'ai beaucoup de respect, Alexander.
Je me demande à quoi sert l'heure, pourquoi se souvenir de l'heure de fermeture, si on choisit de toute façon le dernier de la liste, et qu'en est-il du cycle ? Et pourquoi n'envisagez-vous pas l'échange et la commission ? Même si OrderProfit()>0, le bénéfice réel peut être négatif. Si vous travaillez directement avec la liste des commandes, vous ne devriez pas laisser des morceaux de code de la boucle recherchant la dernière au moment de la fermeture. Une chose est soit la fiabilité et la certitude, soit la rapidité. Ce que vous avez, c'est un fouillis.
Ce que vous suggérez, c'est que
Vous faites ça ?
La personne a seulement demandé un ordre de profit, pourquoi imposer ce que vous n'avez pas demandé ? Mais je suis d'accord avec vous ....
Veuillez indiquer comment fermer un ordre ouvert dans MQL4 sur MT4 après 20 barres, c'est-à-dire que lorsqu'un ordre est ouvert et que 20 nouvelles barres apparaissent, il est fermé. (une seule commande est toujours ouverte). Pour une raison quelconque, ce code ne fonctionne pas dans le testeur de stratégie, et nous avons besoin qu'il le fasse.
Le code a la signification suivante : nous vérifions si nous avons des ordres ouverts, si non, nous ouvrons un ordre et enregistrons dans la variable "z" le prix ouvert de la 1ère barre et ensuite à chaque tick nous vérifions le prix ouvert de la 20ème barre et quand la 1ère barre atteint finalement la 20ème barre, son prix sera le même que le prix enregistré dans la variable "z" et alors l'ordre sera fermé. (bien sûr pendant le processus, les prix peuvent coïncider, mais ce sera très rare, en outre, nous pouvons écrire plus de paramètres de la 1ère barre dans les variables)
Veuillez indiquer comment fermer un ordre ouvert dans MQL4 sur MT4 après 20 barres, c'est-à-dire que lorsqu'un ordre est ouvert et que 20 nouvelles barres apparaissent, il est fermé. (une seule commande est toujours ouverte). Pour une raison quelconque, ce code ne fonctionne pas dans le testeur de stratégie, et nous avons besoin qu'il le fasse.
Le code a la signification suivante : nous vérifions si nous avons des ordres ouverts, si non, nous ouvrons un ordre et enregistrons dans la variable "z" le prix ouvert de la 1ère barre et ensuite à chaque tick nous vérifions le prix ouvert de la 20ème barre et quand la 1ère barre atteint finalement la 20ème barre, son prix sera le même que le prix enregistré dans la variable "z" et alors l'ordre sera fermé. (bien sûr pendant le processus, les prix peuvent coïncider, mais ce sera très rare, en outre, nous pouvons écrire plus de paramètres de la 1ère barre dans les variables)
C'est tout, j'ai trouvé moi-même, j'aurais dû déclarer une variable en dehors de int start() - maintenant ça marche bien.
J'ai simplifié un peu votre code, mais il y a encore des erreurs dans votre code
Je suis en train d'écrire un EA multi-devises mais je n'arrive pas à comprendre pourquoi il renvoie des prix différents au même moment si je le lie à différentes devises.
En bref, le code :
à Init
dans OnTimer()
Si je teste mon EA sur l'EURNZD, par exemple
2015.05.18 00:07:00 Lat Ask : 1.5370
Si j'utilise une autre paire de devises
2015.05.18 00:07:00 Lat Ask : 1.5323
Cette valeur est totalement différente, et dans le second cas, d'après le graphique, il ne peut y avoir une telle valeur pendant au moins plusieurs heures.
Dans le testeur de stratégie, tous les ticks sont en mode commercial, j'ai l'impression que si ce n'est pas la paire principale, les valeurs dans le testeur de stratégie sont approximatives.
J'ai oublié d'ajouter que ceci est Meta Trade 5
J'ai découvert que la première fois que je le fais, le prix est faux et que la deuxième fois, le prix est normal.
Comment effacer complètement Autochartis ?