L'abonnement à OnBookEvent est parfois interrompu - existe-t-il une telle chose ? - page 8

 
fxsaber:

Vous pouvez également automatiser le vidage des produits du marché payant - en mode démo gratuite, supprimez toutes les ressources (icônes, curseurs, etc.). Avec des canaux alpha et tout ça.

Vous pouvez. Et vous pouvez aussi arrêter de paniquer et vous demander : pourquoi un événement doit-il avoir une fin ?

 
A100:

Je n'y crois pas ! - Il est écrit que tout ce qui est dans le Marché est sécurisé

Je soupçonne que c'est importé en interne)

 
A100:

Je n'y crois pas ! - Il est écrit que tout est protégé en toute sécurité dans le Marché

Je ne peux pas dire si c'est sérieux ou sarcastique. Si sérieusement, ResourceSave est à la tête de tout.

Mais vous pouvez le faire de cette façon.

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

Caractéristiques du langage mql5, subtilités et astuces

fxsaber, 2017.10.31 08:11

// Сохранение Bitmap-объекта в bmp/gif/png-файле (прозрачность не учитывается)
bool BitmapObjectToFile( const long chartID, const string ObjName, const string FileName, const bool FullImage = false )
{  
  const ENUM_OBJECT Type = (ENUM_OBJECT)ObjectGetInteger(chartID, ObjName, OBJPROP_TYPE);  
  bool Res = (Type == OBJ_BITMAP_LABEL) || (Type == OBJ_BITMAP);
             
  if (Res)
  {
    const string Name = __FUNCTION__ + (string)MathRand();

    ObjectCreate(chartID, Name, OBJ_CHART, 0, 0, 0);
    ObjectSetInteger(chartID, Name, OBJPROP_XDISTANCE, -1 e3);
    
    const long chart = ObjectGetInteger(chartID, Name, OBJPROP_CHART_ID);
        
    Res = ChartSetInteger(chart, CHART_SHOW, false) && ObjectCreate(chart, Name, OBJ_BITMAP_LABEL, 0, 0, 0) &&
          ObjectSetString(chart, Name, OBJPROP_BMPFILE, ObjectGetString(chartID, ObjName, OBJPROP_BMPFILE)) &&
          (FullImage || (ObjectSetInteger(chart, Name, OBJPROP_XSIZE, ObjectGetInteger(chartID, ObjName, OBJPROP_XSIZE)) &&
                         ObjectSetInteger(chart, Name, OBJPROP_YSIZE, ObjectGetInteger(chartID, ObjName, OBJPROP_YSIZE)) &&
                         ObjectSetInteger(chart, Name, OBJPROP_XOFFSET, ObjectGetInteger(chartID, ObjName, OBJPROP_XOFFSET)) &&
                         ObjectSetInteger(chart, Name, OBJPROP_YOFFSET, ObjectGetInteger(chartID, ObjName, OBJPROP_YOFFSET)))) &&
                         ChartScreenShot(chart, FileName, (int)ObjectGetInteger(chart, Name, OBJPROP_XSIZE),
                                                          (int)ObjectGetInteger(chart, Name, OBJPROP_YSIZE));
    ObjectDelete(chartID, Name);
  }                    

  return(Res);
}


Application

// Сохраняет в png-файлах все Bitmap-объекты текущего чарта
void OnStart()
{  
  for (int i = ObjectsTotal(0) - 1; i >= 0; i--)
  {
    const string Name = ObjectName(0, i);
    
    BitmapObjectToFile(0, Name, (string)ChartID() + "\\" + Name + ".png");    
  }      
}


ZZY Un convertisseur de fichiers BMP->GIF/PNG est également implémenté.

 
A100:

Où faites-vous les changements ? Dans MetaTrader ou dans la documentation... par exemple

Pour les événements larges, OnChartEvent est écrit de manière plus spécifique : envoi de messages d'événement à tous les programmes mql5 sur le graphique (c'est-à-dire que l'unité d'abonnement est le graphique).

Ce qui, en fait, est ce qui se passe

Peut-être qu'ils ajouteront la fonction CheckBookEventCount()

Cela signifie que si le compteur est supérieur à 1, nous n'appelons pas le désabonnement.

 
prostotrader:

Peut-être ajouter la fonction CheckBookEventCount()

C'est-à-dire que si le nombre est supérieur à 1, nous n'appelons pas l'abonnement de suppression.

Pourquoi pas ?

Des questions demeurent cependant :

  • Quelle fonction va diminuer le compteur ?
  • Lequel fermera la coupe ?

Si nous mettons tout sur MarketBookRelease alors pourquoi CheckBookEventCount et pourquoi nous avec notre contre vérification ?

 

En général, si l'unité d'abonnement à large bande est un graphique, alors vous pourriez ne rien faire du tout en organisant un abonnement inter-programmes counter\subscription basé sur une variable globale avec un nom comme celui-ci :

string GVName( string symbol ) { return IntegerToString(ChartID()) + ":" + symbol; }

par accord tacite

 
A100:
dans votre bac à sable, oui. tout code externe lié au verre est susceptible de vous briser.
 
prostotrader:

Eh bien, comme prévu, vous avez tort.

Je peux me tromper, mais pas dans ce cas. J'aimerais que vous lisiez plus attentivement les messages des autres. On a répété plusieurs fois quel est le problème, et en vain...

 
fxsaber:

Init et Deinit ne font pas partie de l'abonnement. Peut-être que cette circonstance vous aidera.

Non, ça n'a pas d'importance. Même si nous faisons référence au problème de la séquence imprévisible des appels OnInit/OnDeinit lors du rechargement des indicateurs, il n'ira nulle part si nous nous appuyons sur la création/destruction des objets - il y a le même paradoxe.

Mais encore une fois, cette séquence (dans les indicateurs) n'est pas la source de l'erreur.

 
Stanislav Korotky:

Je peux me tromper, mais pas dans ce cas. J'aimerais que vous lisiez plus attentivement les messages des autres. On a répété plusieurs fois quel est le problème, et en vain...

C'est vrai, c'est une bonne idée de lire tous les messages.

https://www.mql5.com/ru/forum/267154/page7#comment_8170755
Подписка на OnBookEvent иногда отваливается - есть такое?
Подписка на OnBookEvent иногда отваливается - есть такое?
  • 2018.07.24
  • www.mql5.com
После того как поплотнее занялся стаканом и повесил на чарты несколько экспертов и индикаторов, подписанных на OnBookEvent, обнаружил, что некоторы...