Um objeto é criado, depois um SEGUNDO objeto (acontece que não há recreação - um novo objeto é criado), a posição COMPRA é aberta com o mágico "0" - ou seja, o segundo objeto "comércio" o abre.
Depois vemos que os dois objetos são destruídos em ordem inversa: primeiro o segundo (com magia "0") e depois o primeiro (com magia "123").
#include <Trade\Trade.mqh>
CTrade trade;// Объект trade в глобальной области программыintOnInit()
{
trade.SetExpertMagicNumber(123);
}
voidOnTick()
{
CTrade *trade_ptr=GetPointer(trade);// Указатель на объект trade
trade_ptr.Buy(0.1);
}
Na minha opinião, a mql tem um conjunto muito estreito de tarefas que precisam ser resolvidas através do OOP. O idioma em si me parece ser nada mais do que um OOP em C++ ou algo assim. E este OOP é oferecido na forma de uma biblioteca padrão. E a este OOP é sugerido acrescentar, caso contrário eu não diria, outro OOP. E depois outro passo... Disse Warlock, embora zangado, mas benevolente, para minhas tarefas OOP é como uma mesa giratória para cães. E de que adianta colocar um problema e sua posterior realização por meio do OOP se este problema sem problemas pode ser resolvido em estilo processual.
Aqui, por exemplo, para pegar .mqh do fxsaber`a para escrever códigos para MT5, bem como para MT4. Talvez alguém precise disso, mas veja quem. Aqueles que não querem ou absolutamente não podem dominar o mql5. Ou tome iCanvas de Nikolay ... Esqueci seu sobrenome. Parece ser uma biblioteca útil, mas não é fácil entendê-la, e não há documentação, mesmo uma pequena descrição. Não é uma reclamação, desculpe Nikolay, é um fato. Assim, quando decidi tentar escrever uma etiqueta gráfica, foi mais fácil escrevê-la sem referência à biblioteca padrão ou à biblioteca do Nikolai.
Na verdade, Alexey, você pode obter informações suficientes sobre iCanvas a partir da página de descrição em KB.https://www.mql5.com/ru/code/22164. Você precisa estudar cuidadosamente os comentários do código. O significado de todas as funções é intuitivo a partir de seus nomes.
double X(double bar); // The X coordinate by the bar number. The bar number must be of type double, otherwise, the bar will be interpreted as time.double X(datetime Time); // The X coordinate by the time.double Y(double Price); // The Y coordinate by the price.double Price(int y); // Price by the Y coordinatedouble Bar(int x); // bar number by coordinate X datetime TimePos(int x); // time by coordinate X double Close(int x);
double Open(int x);
double High(int x);
double Low(int x);
void Comm(string text); // Print commentvoid TextPosition(int x,int y); // Setting the XY position for comment output in pixelsvoid TextPosition(double x,double y); // Setting the XY position for outputting comments as a percentage of the width and height of the windowvoid CurentFont(string FontName="Courier New",int size=18,int LineStep=20,color clr=clrDarkOrchid,double transp=1.0); // Set font options for comment. LineStep - step between lines. transp - transparency from 0 to 1void LineD(double x1,double y1,double x2,double y2,constuint clr); // тоже самое что и Line в CCanvas, только без глюков и с double координатамиint TextPosX; // Position X for comment textint TextPosY; // Position Y for comment textint StepTextLine; // line spacing for commentuint TextColor; // Font color for comment
Mas talvez você esteja certo. Eu deveria gravar um vídeo de escrita de algum indicador simples, mas útil, usando iCanvas e explicar visualmente algumas características desta classe. Ainda existem algumas sutilezas.
Francamente falando, não gosto como o iCanvas está escrito neste momento. Quero amassá-lo, jogá-lo no lixo e reescrevê-lo em um estilo mais correto.
70% do código desta biblioteca é sobre a aceleração de algumas das funções regulares que são necessárias para lidar com coordenadas e acesso aos dados.
Portanto, se você aplicar esta classe, os gráficos serão mais rápidos do que se você o fizer "de frente" com CCanvas. Essa é sua principal característica e vantagem. E, é claro, é realmente mais fácil formar gráficos, figuras, comentários.
Gostaria também de acrescentar, Alexey, que o propósito de muitas publicações na CodeBase, incluindo o fxsaber e minhas publicações é um altruísta "só para compartilhar - quem precisa, irá entendê-lo". Assim, muitas vezes gastar tempo com instruções detalhadas é simplesmente uma chatice.
Especialmente no fórum, postei muitos exemplos curtos e ilustrativos usando o iCanvas. Aqui, por exemplo: https://www.mql5.com/ru/code/25929
Данная библиотека и класс iCanvas упростит написание программ с применением Canvas. Вот пример простого индикатора с применением данной библиотеки и его демонстрация. Обратите внимание, что в данном примере в теле индикатора отсутствует функция обработки событий OnChartEvent. Но она также может и присутствовать. Особенности данной библиотеки...
Na verdade, Alexey, você pode obter informações suficientes sobre o iCanvas na página de descrição da KB. https://www.mql5.com/ru/code/22164Você tem que estudar cuidadosamente os comentários do código. O significado de todas as funções é intuitivamente claro a partir de seus nomes.
Nikolai, não preste atenção às minhas palavras. Há tão poucas pessoas como eu entre aqueles que estudam programação, se eu não sou o único, que não vale a pena prestar atenção neles.
Para que eu possa aprender os comentários em código, é preciso primeiro aprender Aglitsky)).
Se eu tivesse uma necessidade urgente eu poderia gastar tempo e traduzir todos os comentários, tentar entender a tradução automática e fazer correções. Mas não há tal necessidade.
Por exemplo, pegue .mqh do fxsaber`a para escrever códigos para MT5, bem como para MT4. Talvez alguém precise disso, mas olha quem... Aqueles que não querem ou absolutamente não podem dominar o mql5.
Acho que conheço muito bem a MQL5, mas tenho necessidade de uma biblioteca comercial. Não estou falando do estilo MT4, mas de uma biblioteca comercial para o MT5, que seria confortável e rápida de se trabalhar. E esta biblioteca não tem bugs durante o comércio real.
Como tal biblioteca não estava disponível (e não sei se ela existe) no domínio público, tive que desenvolver minha própria biblioteca. Para isso, eu tinha que decidir que tipo de ferramenta na forma de um conjuntode funções comerciais eu iria inventar. Tomou emprestado o conjunto MT4, como um conjunto muito bom. O que, como bônus, tornou possível não escrever a documentação para a biblioteca e estudá-la. E outras guloseimas.
Portanto, o conhecimento da MQL5 às vezes está em um alto nível entre os usuários.
Sim? Ele não cria um objeto novo e independente?
Vamos verificar agora - vou inserir linhas como esta:
bem como
e um roteiro de teste:
Resultado:
Um objeto é criado, depois um SEGUNDO objeto (acontece que não há recreação - um novo objeto é criado), a posição COMPRA é aberta com o mágico "0" - ou seja, o segundo objeto "comércio" o abre.
Depois vemos que os dois objetos são destruídos em ordem inversa: primeiro o segundo (com magia "0") e depois o primeiro (com magia "123").
Sim? Ele não cria um objeto novo e independente?
Sim, será uma nova instância da classeCTrade
eainda mais, o CTrade destructor será chamadona saída do OnTick() vazio e no próximo OnTick() o CTrade construtor será chamado novamente
sim, haverá uma nova instância da classeCTrade
Se o OnTick() vazio sair, o destruidor do CTrade será chamado, e o próximo OnTick() chamará novamente o construtor do CTrade.
Sim, eu percebi que imediatamente após a resposta da Artem.
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
OOP para crianças em idade escolar.
Artyom Trishkin, 2019.10.08 20:23
É exatamente o mesmo que com as variáveis.
E o foco:
Na minha opinião, a mql tem um conjunto muito estreito de tarefas que precisam ser resolvidas através do OOP. O idioma em si me parece ser nada mais do que um OOP em C++ ou algo assim. E este OOP é oferecido na forma de uma biblioteca padrão. E a este OOP é sugerido acrescentar, caso contrário eu não diria, outro OOP. E depois outro passo... Disse Warlock, embora zangado, mas benevolente, para minhas tarefas OOP é como uma mesa giratória para cães. E de que adianta colocar um problema e sua posterior realização por meio do OOP se este problema sem problemas pode ser resolvido em estilo processual.
Aqui, por exemplo, para pegar .mqh do fxsaber`a para escrever códigos para MT5, bem como para MT4. Talvez alguém precise disso, mas veja quem. Aqueles que não querem ou absolutamente não podem dominar o mql5. Ou tome iCanvas de Nikolay ... Esqueci seu sobrenome. Parece ser uma biblioteca útil, mas não é fácil entendê-la, e não há documentação, mesmo uma pequena descrição. Não é uma reclamação, desculpe Nikolay, é um fato. Assim, quando decidi tentar escrever uma etiqueta gráfica, foi mais fácil escrevê-la sem referência à biblioteca padrão ou à biblioteca do Nikolai.
Na verdade, Alexey, você pode obter informações suficientes sobre iCanvas a partir da página de descrição em KB.https://www.mql5.com/ru/code/22164. Você precisa estudar cuidadosamente os comentários do código. O significado de todas as funções é intuitivo a partir de seus nomes.
Mas talvez você esteja certo. Eu deveria gravar um vídeo de escrita de algum indicador simples, mas útil, usando iCanvas e explicar visualmente algumas características desta classe. Ainda existem algumas sutilezas.
Francamente falando, não gosto como o iCanvas está escrito neste momento. Quero amassá-lo, jogá-lo no lixo e reescrevê-lo em um estilo mais correto.
70% do código desta biblioteca é sobre a aceleração de algumas das funções regulares que são necessárias para lidar com coordenadas e acesso aos dados.
Portanto, se você aplicar esta classe, os gráficos serão mais rápidos do que se você o fizer "de frente" com CCanvas. Essa é sua principal característica e vantagem. E, é claro, é realmente mais fácil formar gráficos, figuras, comentários.
Gostaria também de acrescentar, Alexey, que o propósito de muitas publicações na CodeBase, incluindo o fxsaber e minhas publicações é um altruísta "só para compartilhar - quem precisa, irá entendê-lo". Assim, muitas vezes gastar tempo com instruções detalhadas é simplesmente uma chatice.
Especialmente no fórum, postei muitos exemplos curtos e ilustrativos usando o iCanvas.
Aqui, por exemplo:
https://www.mql5.com/ru/code/25929
https://www.mql5.com/ru/code/25113
https://www.mql5.com/ru/code/25414
https://www.mql5.com/en/code/24798
https://www.mql5.com/ru/forum/227736/page41#comment_13259627
https://www.mql5.com/ru/forum/227736/page24#comment_12836622
https://www.mql5.com/en/forum/323629#comment_13442470
https://www.mql5.com/ru/forum/321704#comment_13131995
https://www.mql5.com/ru/forum/317257/page3#comment_12341593
https://www.mql5.com/en/forum/229521/page2#comment_10258148
Na verdade, Alexey, você pode obter informações suficientes sobre o iCanvas na página de descrição da KB. https://www.mql5.com/ru/code/22164 Você tem que estudar cuidadosamente os comentários do código. O significado de todas as funções é intuitivamente claro a partir de seus nomes.
Nikolai, não preste atenção às minhas palavras. Há tão poucas pessoas como eu entre aqueles que estudam programação, se eu não sou o único, que não vale a pena prestar atenção neles.
Para que eu possa aprender os comentários em código, é preciso primeiro aprender Aglitsky)).
Se eu tivesse uma necessidade urgente eu poderia gastar tempo e traduzir todos os comentários, tentar entender a tradução automática e fazer correções. Mas não há tal necessidade.
Por exemplo, pegue .mqh do fxsaber`a para escrever códigos para MT5, bem como para MT4. Talvez alguém precise disso, mas olha quem... Aqueles que não querem ou absolutamente não podem dominar o mql5.
Acho que conheço muito bem a MQL5, mas tenho necessidade de uma biblioteca comercial. Não estou falando do estilo MT4, mas de uma biblioteca comercial para o MT5, que seria confortável e rápida de se trabalhar. E esta biblioteca não tem bugs durante o comércio real.
Como tal biblioteca não estava disponível (e não sei se ela existe) no domínio público, tive que desenvolver minha própria biblioteca. Para isso, eu tinha que decidir que tipo de ferramenta na forma de um conjuntode funções comerciais eu iria inventar. Tomou emprestado o conjunto MT4, como um conjunto muito bom. O que, como bônus, tornou possível não escrever a documentação para a biblioteca e estudá-la. E outras guloseimas.
Portanto, o conhecimento da MQL5 às vezes está em um alto nível entre os usuários.