Symboles personnalisés. Erreurs, bogues, questions, suggestions. - page 9

 
Andrey Khatimlianskii:

Vers 2009 et 2025 dans l'ancien emplacement.

Merci. J'ai essayé les builds 1970+ - tous ont ce bug jusqu'à ce que vous recréiez difficilement les personnages personnalisés, en restant dans le même compte tore.

 
fxsaber:

2009 :

2033 :

 

Bug 10.

Le symbole ne peut pas être supprimé.

#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{
  MathSrand((uint)TimeLocal());
  
  const string Name = _Symbol + (string)MathRand();

  PRINT(CustomSymbolCreate(Name));

  PRINT(CustomRatesDelete(Name, 0, 0)); // Без этой строки удаление работает.
  
  PRINT(CustomSymbolDelete(Name)); // false
  PRINT(GetLastError());  
}


CustomSymbolCreate(Name) = true
CustomRatesDelete(Name,0,0) = 0
CustomSymbolDelete(Name) = false
GetLastError() = 5306
 

Bug 11.

CustomTicksAdd ne forme pas de barres.

// Проигрываем тиковую историю через таймер.
#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnInit()
{
  if (EventSetMillisecondTimer(20)) // С такой частотой будем пробрасывать тики
    MathSrand((uint)TimeLocal());  
}

void OnTimer()
{
  static const string Name = _Symbol + (string)MathRand();
  
  static bool FirstRun = true;
  static MqlTick Ticks[];
  static int Pos = 0;
    
  if (FirstRun)
  {
    PRINT(CustomSymbolCreate(Name, NULL, _Symbol)); // Создали символ.
  
    PRINT(CustomRatesDelete(Name, 0, 0)); // Без этой строки работает.    
    PRINT(SymbolSelect(Name, false));     // https://www.mql5.com/ru/forum/304554/page9#comment_11680616
    
    PRINT(CustomSymbolDelete(Name));                // Убили.
    PRINT(CustomSymbolCreate(Name, NULL, _Symbol)); // Воскресили.
    
    if (SymbolSelect(Name, true)) // Поместили в Обзор рынка
    {
      ChartOpen(Name, PERIOD_M1);            // Открыли чарт
      PRINT(CopyTicksRange(_Symbol, Ticks, COPY_TICKS_INFO, (TimeCurrent() - 3600) * 1000)); // Взяли тики (последний час) для проброса
    }
      
    FirstRun = false;
  }
  else if (Pos < ArraySize(Ticks))
  {
    MqlTick Tick[1];
    
    // Пробрасываем по тику
    Tick[0] = Ticks[Pos++];
    CustomTicksAdd(Name, Tick);
  }
}

Les barres ne seront pas formées sur le graphique ouvert. Dans Market Watch, les ticks sont mis à jour.

 

Bug 12.

Lors de la création d'un symbole personnalisé à partir de zéro (via CTRL+U par exemple), le volume maximal est prescrit de telle sorte que le testeur est incapable de calculer son bénéfice.

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnInit()
{
  // Именно такой макс. объем автоматом прописывается при создании кастомного символа с нуля.
  const double Lot = 1 e11; // SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX)
  
  OrderSend(_Symbol, OP_BUY, Lot, Ask, 0, 0, 0); // После закрытия этой позиции ее профит будет нулевым.
}
 
Pour une raison quelconque, les développeurs ne mettent pas la main sur les bugs reproductibles dans ce fil.
 
fxsaber:
Pour une raison quelconque, les développeurs ne mettent pas la main sur les bugs reproductibles dans ce fil.
Nous devrions probablement les inviter à entrer
 

a invité Slava Stringo.

je saisis un instrument personnalisé dans ce champ (pièce jointe 1). il s'ouvre sans guillemets. si je l'ouvre par le menu, tout est ok.

L'attachement 2 est juste un mot.

pièce jointe 3 : marre de ce bouton, personne n'en a besoin. faites une option pour le cacher. il y a une aide. faisons un sondage.

cpsb

Dossiers :
x34zq9.PNG  2 kb
1wvlwh2.PNG  10 kb
qfd9jf.PNG  2 kb
 
superman:

a invité Slava Stringo.

je saisis un instrument personnalisé dans ce champ (pièce jointe 1). il s'ouvre sans guillemets. si je l'ouvre par le menu, tout est ok.

L'attachement 2 est juste un mot.

Ce n'est pas comme ça qu'ils invitent.

Donc : @Slava

 
fxsaber:

Bug 07.

Le testeur forme des barres par symboles personnalisés Last for exchange avec le prix d'offre de la construction de la barre.

Par conséquent, l'historique des barres dans le terminal et dans le testeur de stratégie diverge complètement. Et si quelqu'un utilise des barres dans TS (indicateurs, par exemple), le résultat du backtest est aléatoire pour lui.

Affiche la spécification du symbole personnalisé.

Et donnez les tics personnalisés.

Pour réparer quelque chose, il faut d'abord le reproduire.

Raison: