[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 1044

 
eddy:
Je ne suis pas intéressé. Je veux juste tracer une ligne...
Les points dans l'image sont max min ?
 
Non, des cloisons
 
costy_:

Это для не стандартного подхода, того чего нет в отчете оптимизатора. файл здесь terminal\tester\files

Сохраняйте отчет из "Результаты оптим." сохран как>>


Je comprends maintenant comment sauver quelque chose. Veuillez me dire comment sauvegarder automatiquement les résultats de l'optimisation. En fait, je ne m'intéresse qu'à l'écart maximal et au profit.
 
001:

Maintenant je comprends comment sauver quelque chose dont j'ai besoin. Veuillez indiquer comment sauvegarder automatiquement les résultats de l'optimisation. En principe, je ne me préoccupe que du drawdown et du profit maximum.

Dans Deinit, comptez à travers OrdersHistoryTotal la somme de toutes les commandes rentables, non rentables, drawdown, profit et au fichier ;)

Quelque chose comme ça

   for(i=0;i<OrdersHistoryTotal();i++)
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderSymbol()==Symbol())
    if(OrderProfit()>=0)
     profit+=OrderProfit();
     else noprof+=OrderProfit();
   прибыль = profit  -  noprof;



 
eddy:
non, cloze.

De même, sur la période inférieure, vous pouvez visualiser le vecteur de la période supérieure sur le graphique H1 dans les paramètres ind H4.

Et c'est pour quoi faire ? !

Dossiers :
maxvekt.mq4  2 kb
 
costy_:

Dans Deinit, utilisez OrdersHistoryTotal pour compter lasomme de tous les profits, non profits, drawdown, profit et classez-la ; )

Quelque chose comme ça




Oui, il y a ça. Malheureusement, cette méthode donne des données différentes de celles de MT. Il suffit de sauvegarder atomiquement les résultats de l'optimisation dans un fichier et c'est tout...
 
Je ne comprends pas le calcul. Pouvez-vous me l'expliquer en utilisant mon dessin comme exemple ?
 
costy_:

Vous faites défiler les ordres ouverts et en attente par ordre de numéro de position dans la liste, sélectionnez celui qui vous intéresse et récupérez son ticket.

et continuer à travailler avec le ticket.



Si vous ne savez pas quoi en faire, ne savez tout simplement pas quoi en faire.

Dites-moi pourquoi nous devons faire cela si nous avons déjà sélectionné la même commande ?

Ou peut-être que je ne comprends pas quelque chose : CE code :

string symbol = Symbol();int cnt ;
for(cnt = OrdersTotal() ; cnt >= 0 ; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
ticketbuy=OrderTicket() ;OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES);lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID) ;
RefreshRates() ;
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta) ; }

et celui-ci :

string symbol = Symbol();int cnt ;
for(cnt = OrdersTotal() ; cnt >= 0 ; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID) ;
RefreshRates() ;
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta) ; }

fera la même chose ?

 
Aleksandr_8:

Je vous remercie de votre réponse.

Pourquoi devons-nous faire cela si nous avons déjà sélectionné la même commande ?

Ou peut-être que je ne comprends pas quelque chose : CE code :

string symbol = Symbol();int cnt ;
for(cnt = OrdersTotal()-1; cnt >= 0 ; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
ticketbuy=OrderTicket() ;OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES) ; lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID) ;
RefreshRates() ;
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta) ; }
}

et celui-ci :

string symbol = Symbol();int cnt ;
for(cnt = OrdersTotal()-1; cnt >= 0 ; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID) ;
RefreshRates() ;
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta) ; }
}

fera la même chose ?

Le code marqué en rouge est redondant, puisque la commande a déjà été sélectionnée et que vous n'avez pas besoin de la sélectionner à nouveau pour la traiter.

 
Aleksandr_8:

Je vous remercie de votre réponse.

Pourquoi devons-nous faire cela si nous avons déjà sélectionné la même commande ?

Ou peut-être que je ne comprends pas quelque chose : CE code :

string symbol = Symbol();int cnt ;
for(cnt = OrdersTotal() ; cnt >= 0 ; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
ticketbuy=OrderTicket();OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES) ;lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID) ;
RefreshRates() ;
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta) ; }

et celui-ci :

string symbol = Symbol();int cnt ;
for(cnt = OrdersTotal() ; cnt >= 0 ; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID) ;
RefreshRates() ;
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta) ; }

fera la même chose ?

Dans la première variante, le second OrderSelect sur ticketbuy, utilise un second contrôle, je suppose (si l'ouverture sur la commande en attente glisse ou +1 ordertotal...).

Dans le post précédent, les erreurs ont été correctement trouvées (sauf le vert).

L'achat du billet n'est pas marqué dans le second. Nous devons identifier

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
ticketbuy=OrderTicket();
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }