Erreurs, bugs, questions - page 1897

 

Je me souviens que les développeurs parlaient de la possibilité d'échanger des données entre agents. Où puis-je voir un exemple ?

Il semble que le canal du cadre soit à sens unique - des agents au terminal, mais pas l'inverse.

 
Erreur d'exécution
void OnStart()
{
  int Array[];
  
  Array[ArrayResize(Array, ArraySize(Array) + 1) - 1] = 0; // array out of range
}
 
Erreur d'exécution
struct INT
{
  int Array[];
};

void OnStart()
{
  INT i = {0}; //  Если убрать "= {0}" - ошибка выполнения исчезает
  
  Print(ArrayResize(i.Array, 5)); // -1
}
 
Si la structure contient des chaînes et des tableaux comme celui-ci {0} il vaut mieux ne pas l'initialiser, cela a déclenché une exception pour moi.
 

Les agents locaux renvoient la même valeur TerminalInfoInteger(TERMINAL_DLLS_ALLOWED) jusqu'à ce que vous rechargiez le terminal.

Par exemple, vous voulez que les agents DLL ne s'exécutent pas. Vous décochez la case DLL dans le terminal, et les agents restent "heureux".


 
Комбинатор:
S'il y a des chaînes et des tableaux dans la structure comme ceci {0} mieux vaut ne pas l'initialiser, cela a déclenché une exception dans mon cas.
Il semble qu'il y ait là une vulnérabilité potentielle.
 
fxsaber:

Je me souviens que les développeurs parlaient de la possibilité d'échanger des données entre agents. Où puis-je voir un exemple ?

Il semble que le cadre soit à sens unique - des agents au terminal, mais pas l'inverse.

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Travailler avec les fichiers de conseillers experts dans le testeur de stratégie

Renat Fatkhullin, 2012.08.27 01:41

Lorsque l'on travaille avec clud ou des agents distants, les fichiers utilisés (pour la lecture) doivent être clairement spécifiés via #property tester_file "myfile1.dat". Dans ce cas, le testeur transmet ces fichiers au nuage avec l'EA source, les modifications apportées à ce fichier étant contrôlées et mises en cache sur les serveurs et agents du nuage.

Il est possible de transférer de grandes quantités de données brutes vers les nuages et de recevoir des calculs incluant des données massives via FrameAdd() dans le rapport.

Puis-je modifier les fichiers tester_file dans OnTesterPass et ainsi transférer les informations requises vers le Cloud ?
 
fxsaber:

Dans le fichier standard MQL5\Experts\Examples\Moving Average\Moving Average.mq5

La vérification magique a été manquée dans TradeSizeOptimized.

Veuillez vérifier cette variante.

Pour ma part, j'ai exécuté 9 instances de cet EA avec différents paramètres et magies pour trader en ligne sur le VPS embarqué - je vais regarder https://www.mql5.com/ru/signals/305333.

Торговые сигналы для MetaTrader 5: Standard Moving Average 9 instances
Торговые сигналы для MetaTrader 5: Standard Moving Average 9 instances
  • Rashid Umarov
  • www.mql5.com
Торговый Сигнал Standard Moving Average 9 instances для MetaTrader 5: копирование сделок, мониторинг счета, автоматическое исполнение сигналов и социальный трейдинг
Dossiers :
 
Rashid Umarov:

Jetez un coup d'œil à cette option, s'il vous plaît.

Pour ma part, j'ai exécuté 9 instances de cet EA avec différents paramètres et magies pour trader en ligne sur le VPS intégré - je surveillerai https://www.mql5.com/ru/signals/305333.

La sélection de lot de cet EA est affectée par toute transaction d'un tiers (y compris d'autres instances) sur le symbole d'origine.

Dans cette pièce, cela se passe

      HistorySelect(0,TimeCurrent());
      //---
      int    orders=HistoryDealsTotal();  // total history deals
      int    losses=0;                    // number of losses orders without a break

      for(int i=orders-1;i>=0;i--)
        {
         ulong ticket=HistoryDealGetTicket(i);
         if(ticket==0)
           {
            Print("HistoryDealGetTicket failed, no trade history");
            break;
           }
         //--- check symbol
         if(HistoryDealGetString(ticket,DEAL_SYMBOL)!=_Symbol)
            continue;
         //--- check profit
         double profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
         if(profit>0.0)
            break;
         if(profit<0.0)
            losses++;
        }
      //---
      if(losses>1)
         lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
 
fxsaber:

La sélection de lot de cet EA est affectée par toute négociation de tiers (y compris d'autres instances) sur le symbole original.

Dans cette pièce, cela se produit

J'ai oublié de joindre le fichier, maintenant ajouté dans . Il y a

double TradeSizeOptimized(void)
  {
   double price=0.0;
   double margin=0.0;
//--- select lot size
   if(!SymbolInfoDouble(_Symbol,SYMBOL_ASK,price))
      return(0.0);
   if(!OrderCalcMargin(ORDER_TYPE_BUY,_Symbol,1.0,price,margin))
      return(0.0);
   if(margin<=0.0)
      return(0.0);

   double lot=NormalizeDouble(AccountInfoDouble(ACCOUNT_MARGIN_FREE)*MaximumRisk/margin,2);
//--- calculate number of losses orders without a break
   if(DecreaseFactor>0)
     {
      //--- select history for access
      HistorySelect(0,TimeCurrent());
      //---
      int    orders=HistoryDealsTotal();  // total history deals
      int    losses=0;                    // number of losses orders without a break

      for(int i=orders-1;i>=0;i--)
        {
         ulong ticket=HistoryDealGetTicket(i);
         if(ticket==0)
           {
            Print("HistoryDealGetTicket failed, no trade history");
            break;
           }
         //--- check symbol
         if(HistoryDealGetString(ticket,DEAL_SYMBOL)!=_Symbol)
            continue;
         //--- check Expert Magic number
         if(HistoryDealGetInteger(ticket,DEAL_MAGIC)!=MA_MAGIC)
            continue;
         //--- check profit
         double profit=HistoryDealGetDouble(ticket,DEAL_PROFIT);
         if(profit>0.0)
            break;
         if(profit<0.0)
            losses++;
        }
      //---
      if(losses>1)
         lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
     }
Raison: