Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1598
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
juste pour ajouter, il n'est PAS GARANTI que le terminal a et donnera un historique suffisant.
dans l'exemple ci-dessus, il n'y a pas de référence à l'histoire
ainsi il est garanti que le résultat de OrderSelect() est vrai.
UPD : OrderSelect en 4 fonctionne très bien, je l'ai testé une fois - pour les ordres au marché, le moment d'accès aux propriétés de l'ordre..... c'est vraiment des millions de fois par seconde, je ne veux pas chercher, je crois que je me disputais avec le modérateur Artem, mais comme on dit "toutes les pointes de pieds sont différentes", j'aime bien - gardez-le.
Bonjour, il y a un besoin de données sur le drawdown de chaque transaction.
Quelqu'un peut-il rencontrer un script pour collecter de telles statistiques et les sortir sous forme de rapport ?
Merci.
Bonjour, il y a un besoin de données sur le drawdown de chaque transaction.
Quelqu'un peut-il rencontrer un script pour collecter de telles statistiques et les sortir sous forme de rapport ?
merci
for(int i=OrdersTotal()-1;i>=0;i--) {
if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;
double prosad=DBL_MIN;
if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;
for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {
double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );
delta /= MarketInfo(OrderSymbol(),MODE_POINT);
if (delta>prosad) prosad=delta;
}
PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);
}
il est "écrit à la main", non testé, plein de bogues :-) il suffit de l'adapter à vos besoins et de l'utiliser.
for(int i=OrdersTotal()-1;i>=0;i--) {
if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;
double prosad=DBL_MIN;
if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;
for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {
double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );
delta /= MarketInfo(OrderSymbol(),MODE_POINT);
if (delta>prosad) prosad=delta;
}
PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);
}
écrit "à la main", non vérifié, plein d'erreurs :-) à adapter à vos besoins et à votre utilisation
Merci, je vais essayer de trouver une solution !
@Igor Makanu, merci beaucoup pour vos réponses concernant les ordres de tri dans le terminal. Je vais probablement les enregistrer comme un tableau de structures et les trier moi-même. Les doutes venaient principalement du fait que je craignais que de telles actions effectuées à chaque tic n'aient un impact négatif notable sur les performances.
Alors pourquoi trier à chaque tique ? Cela ne suffit que lorsque le nombre d'entrées change ou que la liste change complètement...
dans l'exemple ci-dessus, il n'y a pas de référence à l'histoire
ainsi il est garanti que le résultat de OrderSelect() est vrai.
UPD : OrderSelect en 4 fonctionne très bien, je l'ai testé une fois - pour les ordres au marché, le moment d'accès aux propriétés de l'ordre..... c'est vraiment des millions de fois par seconde, je ne veux pas chercher, je crois que je me disputais avec le modérateur Artem, mais comme on dit "toutes les pointes de pieds sont différentes", j'aime bien - gardez-le.