Questions des débutants MQL5 MT5 MetaTrader 5 - page 559

 
akarustam:

Voici les merveilles du test d'un programme EA dans MT5 (voir fichier image)... Un EA peut-il être positif avec un solde négatif ? et quand le solde est-il négatif ? Avant de me tourner vers Trading Nation, j'ai beaucoup changé d'avis et je ne l'ai jamais fait... Je pense qu'il est temps de dormir un peu)

Si quelqu'un est intéressé par le code ouvert et l'ensemble, faites-le moi savoir ? - Je vais certainement l'afficher. J'ai commencé à maîtriser MT5 avec la couverture et maintenant, - miracles, cependant)

Pas de miracles. J'ai une position ouverte avec un excédent important et une position fermée avec une perte dépassant mon solde. Je ne perds pas car j'ai suffisamment de fonds pour maintenir une position ouverte.
 
Artyom Trishkin:
Il n'y a pas de miracles. Il y a des positions ouvertes avec un grand excédent, et il y a une position fermée avec une perte supérieure à la taille du bilan. Il n'y a pas d'inconvénient car il y a suffisamment de fonds pour maintenir les positions ouvertes.
C'est aussi simple que ça... MERCI !
 

Pouvez-vous me dire quelle est mon erreur ?

for(int i=0;i<N_Sell;i++) printf("OpenSellTime[%d] = %G",i,TimeToString(OpenSellTime[i],TIME_DATE|TIME_MINUTES)," PriceOpenSell[%d] = %G",i,PriceOpenSell[i]);

La date du tableau OpenSellTime n'est pas imprimée et non la deuxième partie de l'expression - PriceOpenSell.

Et je n'arrive pas à trouver les commandesprintf comme%G et%d.

 

Bon après-midi à tous)

C'est une question pour un idiot de la programmation...

J'essaye de compiler un EA pour une nouvelle construction. Le compilateur me donne beaucoup d'erreurs différentes...

Voici l'un d'entre eux

if(oppositedelete){delete( OP_SELLSTOP) ;delete( OP_SELLLIMIT);}

Il y a 2 erreurs marquées en rouge dans ce fragment de code :'(' - pointeur d' objet attendu

Après avoir lu un peu sur le sujet de l'erreur, j'ai compris que le nom est réservé et que je dois le remplacer...

La question est donc de savoir par quoi le remplacer.

 
Anton Razmyslov:

Bon après-midi à tous)

C'est une question pour un idiot de la programmation...

J'essaye de compiler un EA pour une nouvelle construction. Le compilateur me donne beaucoup d'erreurs différentes...

Voici l'un d'entre eux

if(oppositedelete){delete( OP_SELLSTOP) ;delete( OP_SELLLIMIT);}

Il y a 2 erreurs marquées en rouge dans ce fragment de code :'(' - pointeur d'objet attendu

Après avoir lu un peu sur le sujet de l'erreur, j'ai compris que le nom est réservé et que je dois le remplacer...

La question est donc de savoir par quoi le remplacer.

A tout ce à quoi vous pouvez penser. Par exemple _delete ou delete_1294_765_1912 ou juste Napoleon
 

Il y a cette ligne dans le code

Print (";OpenSellTime - ",TimeToString(OpenSellTime[N_Sell],TIME_DATE|TIME_MINUTES), ";PriceOpenSell", PriceOpenSell[N_Sell]);

Pourquoi est-ce que j'obtiens ce texte dans la sortie :

OpenSellTime - 2015.12.01 11:15

où " ;" et la deuxième partie est"PriceOpenSell" ?

 
-Aleks-:

Il y a cette ligne dans le code

Print (";OpenSellTime - ",TimeToString(OpenSellTime[N_Sell],TIME_DATE|TIME_MINUTES), ";PriceOpenSell", PriceOpenSell[N_Sell]);

Pourquoi est-ce que j'obtiens ce texte dans la sortie :

OpenSellTime - 2015.12.01 11:15

où se trouve le " ;" et la deuxième partie"PriceOpenSell" ?

supprimé " ;" - travaillé.

La question sur printf reste posée...

 

Comment envoyer correctement une demande de clôture d'une contre -position ?

Si je ferme comme avant, à l'opposé, il sera laqué ;))

J'ai déjà tout essayé, mais l'erreur persiste 2016.04.15 13:17:24 Core 1 2016.03.29 09:00:00 failed close position #64 buy 0.81 EURUSD by position #0 [Invalid request].

Quels sont les champs à remplir et ceux à ne pas remplir ? Je suppose que cela n'a pas d'importance si la position ouverte est courte ou longue.

//+------------------------------------------------------------------+
//| Закрытие  позиции по типу                                        |
//+------------------------------------------------------------------+
void PositionClose(double lot, int P_type,long id)
  {
Print("Вход в функцию Закрытие  позиции по типу !");
    ZeroMemory(mrequest); ZeroMemory(mresult);            // обнуляем значения mrequest, mresult

   //--- Получить текущее значение котировки в структуру типа MqlTick
   if(!SymbolInfoTick(_Symbol,latest_price))
     {
      Alert("Ошибка получения последних котировок - ошибка:",GetLastError(),"!!");
      return;
     }            
//--- формируем торговый запрос
      mrequest.action = TRADE_ACTION_CLOSE_BY;                                              // закрыть позицию встречной
      mrequest.order = id; 
//      mrequest.action = TRADE_ACTION_DEAL;                                  // немедленное исполнение
//      mrequest.price =  NormalizeDouble(latest_price.bid,_Digits);                      // последняя цена ask
//    mrequest.sl = 0;               // Stop Loss
//     mrequest.tp = 0;               // Take Profit
      mrequest.symbol = _Symbol;                        // символ
      mrequest.volume = lot;                            // количество лотов для торговли
 //     mrequest.magic = MAGIC;                               // Magic Number
      
//     if (P_type == 0) mrequest.type = ORDER_TYPE_SELL; // проверяем тип позиции
//     if (P_type == 1) mrequest.type = ORDER_TYPE_BUY;     
      mrequest.type = ORDER_TYPE_CLOSE_BY;
      mrequest.type_filling = ORDER_FILLING_FOK;        // тип исполнения ордера - все или ничего
      mrequest.deviation=10;                            // проскальзывание от текущей цены
                                        
            if( OrderSend(mrequest,mresult)>0)            // если значение отосланного ордера не ноль, то 
                  {  if(mresult.retcode==10009 || mresult.retcode==10008)
                     Print(" позиция  закрыта !");
                  } else {
                     Print(ResultRetcodeDescription(mresult.retcode));
                     return;
                         }
  }
 

Bonjour, Question sur le testeur.

Je teste un conseiller expert multi-devises et je voudrais voir dans le visualiseur toutes les fenêtres de toutes les paires de devises qui sont négociées.

Dans l'aide du visualiseur, il est question d'une commande "Chart" dans la section "View" du menu principal du visualiseur, qui semble être utilisée pour ouvrir de nouveaux graphiques. Mais pour une raison quelconque, je n'ai pas du tout la commande "Chart" et, par conséquent, je ne peux pas ouvrir les graphiques de paires supplémentaires. Quel est le problème ici ?

 
Aleksandr Prishenko:

Comment envoyer correctement une demande de clôture d'une contre -position ?

Si je ferme comme avant, à l'opposé, il sera laqué ;))

J'ai déjà tout essayé, mais l'erreur persiste 2016.04.15 13:17:24 Core 1 2016.03.29 09:00:00 failed close position #64 buy 0.81 EURUSD by position #0 [Invalid request].

Quels sont les champs à remplir et ceux à ne pas remplir ? D'après ce que j'ai compris, il importe peu que la position soit longue ou courte.

Utilisez un code minimal - utilisez la bibliothèque standard :

//+------------------------------------------------------------------+
//|                                                       TestEA.mq5 |
//|                              Copyright © 2016, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"

#include <Trade\Trade.mqh>

CTrade my_trade;
ulong    result_deal_0  =0;
ulong    result_deal_1  =0;
bool     first_start    =false;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   first_start=false;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!first_start)
     {
      my_trade.Sell(0.01);
      result_deal_0=my_trade.ResultDeal();
      Sleep(1000);

      my_trade.Buy(0.02);
      result_deal_1=my_trade.ResultDeal();
      Sleep(1000);

      if(result_deal_0!=0 && result_deal_1!=0)
         PositionCloseBy(result_deal_0,result_deal_1);

      first_start=true;
     }
  }
//+------------------------------------------------------------------+
//| Position Close By                                                |
//+------------------------------------------------------------------+
void PositionCloseBy(ulong ticket,ulong ticket_by)
  {
   my_trade.PositionCloseBy(result_deal_0,result_deal_1);
  }
//+------------------------------------------------------------------+

Journal de l'agent :

ES      0       09:12:21.189    Trade   2016.04.14 00:00:30   instant sell 0.01 EURUSD at 1.12728 (1.12728 / 1.12736 / 1.12728)
IL      0       09:12:21.189    Trades  2016.04.14 00:00:30   deal #2  sell 0.01 EURUSD at 1.12728 done (based on order #2)
 OP      0       09:12:21.189    Trade   2016.04.14 00:00:30   deal performed [#2  sell 0.01 EURUSD at 1.12728]
NF      0       09:12:21.189    Trade   2016.04.14 00:00:30   order performed sell 0.01 at 1.12728 [#2  sell 0.01 EURUSD at 1.12728]
GJ      0       09:12:21.192    TestEA (EURUSD,H1)      2016.04.14 00:00:30   CTrade::OrderSend: instant sell 0.01 EURUSD at 1.12728 [done at 1.12728]
KH      0       09:12:21.192    Trade   2016.04.14 00:00:31   instant buy 0.02 EURUSD at 1.12736 (1.12728 / 1.12736 / 1.12728)
OD      0       09:12:21.192    Trades  2016.04.14 00:00:31   deal #3  buy 0.02 EURUSD at 1.12736 done (based on order #3)
 GI      0       09:12:21.193    Trade   2016.04.14 00:00:31   deal performed [#3  buy 0.02 EURUSD at 1.12736]
LM      0       09:12:21.193    Trade   2016.04.14 00:00:31   order performed buy 0.02 at 1.12736 [#3  buy 0.02 EURUSD at 1.12736]
NS      0       09:12:21.193    TestEA (EURUSD,H1)      2016.04.14 00:00:31   CTrade::OrderSend: instant buy 0.02 EURUSD at 1.12736 [done at 1.12736]
OP      0       09:12:21.193    TestEA (EURUSD,H1)      2016.04.14 00:00:32   Вход в функцию Закрытие  позиции по типу !
GI      0       09:12:21.193    Trade   2016.04.14 00:00:32   close position #2  sell 0.01 EURUSD by position #3  buy 0.02 EURUSD (1.12728 / 1.12736 / 1.12728)
OM      0       09:12:21.193    Trades  2016.04.14 00:00:32   deal #4  buy 0.01 EURUSD at 1.12736 done (based on order #4)
 RK      0       09:12:21.193    Trades  2016.04.14 00:00:32   deal #5  sell 0.01 EURUSD at 1.12728 done (based on order #4)
 EF      0       09:12:21.193    TestEA (EURUSD,H1)      2016.04.14 00:00:32   CTrade::OrderSend: unknown action 10 [done]
EI      0       09:12:21.423    Trade   2016.04.14 23:59:59   position closed due end of test at 1.12663 [#3  buy 0.01 EURUSD 1.12736]
JG      0       09:12:21.423    Trades  2016.04.14 23:59:59   deal #6  sell 0.01 EURUSD at 1.12663 done (based on order #5)
 HN      0       09:12:21.423    Trade   2016.04.14 23:59:59   deal performed [#6  sell 0.01 EURUSD at 1.12663]
IS      0       09:12:21.423    Trade   2016.04.14 23:59:59   order performed sell 0.01 at 1.12663 [#5  sell 0.01 EURUSD at 1.12663]
Raison: