A assinatura do OnBookEvent às vezes cai - existe algo assim? - página 8

 
fxsaber:

E você também pode automatizar a evisceração de produtos pagos do Mercado - em modo de demonstração gratuita, arrancando todos os recursos (ícones, cursores, etc.). Com canais alfa e outras coisas.

Você pode. E você também pode parar de se passar e pensar: por que um evento tem que ter um final.

 
A100:

Eu não acredito nisso! - Está escrito que tudo no mercado é seguro

Eu suspeito que é importado internamente)

 
A100:

Eu não acredito nisso! - Está escrito que tudo está protegido com segurança no mercado

Não sei dizer se isto é sério ou sarcasmo. Se for sério, então ResourceSave é a cabeça de tudo.

Mas você pode fazer desta maneira.

Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais

Características da linguagem mql5, sutilezas e truques

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);
}


Aplicação

// Сохраняет в 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 Também é implementado um conversor de arquivo BMP->GIF/PNG.

 
A100:

Onde você faz as mudanças? No MetaTrader ou na documentação... por exemplo

Para grandes eventos OnChartEvent é escrito mais especificamente: Envio de mensagens de eventos para todos os programas mql5 no gráfico (ou seja, a unidade de assinatura é o gráfico)

Que na verdade é o que acontece

Talvez eles adicionem a função CheckBookEventCount()

Isso significa que se o contador for maior que 1, não chamamos de cancelar a inscrição

 
prostotrader:

Talvez adicionar a função CheckBookEventCount()

Isto é, se a contagem for maior que 1 , não chamamos a assinatura de exclusão

Por que não?

No entanto, as perguntas permanecem:

  • Qual função irá diminuir o contador?
  • Qual deles fechará a taça?

Se colocamos tudo no MarketBookRelease então por que CheckBookEventCount e por que nós com nosso contra-cheque?

 

Em geral, se a unidade de assinatura de banda larga é um gráfico, então você não poderia fazer nada organizando um balcão de assinatura interprograma baseado em uma variável global com um nome como este:

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

por acordo tácito

 
A100:
em sua caixa de areia, sim. qualquer código externo amarrado ao vidro é passível de quebrá-lo.
 
prostotrader:

Bem, como esperado, você está errado.

Eu posso estar errado, mas não neste caso. Gostaria que você tivesse lido os posts dos outros com mais atenção. Tem sido repetido várias vezes qual é o problema, e em vão...

 
fxsaber:

O Init e o Deinit não fazem parte da assinatura. Talvez esta circunstância ajude.

Não, isso não importa. Mesmo se nos referirmos ao problema da seqüência imprevisível de chamadas OnInit/OnDeinit no recarregamento de indicadores, ela não desaparecerá se dependermos da criação/destruição de objetos - há o mesmo paradoxo.

Mas, mais uma vez, esta seqüência (em indicadores) não é a fonte de erro.

 
Stanislav Korotky:

Eu posso estar errado, mas não neste caso. Gostaria que você tivesse lido os posts dos outros com mais atenção. Tem sido repetido várias vezes qual é o problema, e em vão...

Certo, é uma boa idéia ler todos os posts.

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