Características da linguagem mql5, subtilezas e técnicas - página 225
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
O que isso significa? Você pode falar mais sobre isso?
Tive tempo de verificar: sim, o truque falhou, ChartID()=12345 para visual e não visual... (um ChartID tão constante do testador).
Mas ChartGetInteger(ChartID(),CHART_WIDTH_IN_PIXELS) dá um honesto -1 se não houver tela. Você pode usá-lo para determinar a física - se há um lugar para gerar algo ou não. Como há muitos sinalizadores, não sabemos o que há no VPS
Outra nuance repentina do MQL - os métodos virtuais não são chamados a partir de construtores.
no código
você não pode fazer assim :-)) OnAttach da classe pai será chamado a partir do construtor; e durante o acesso normal - da classe filha.
Não dápara entender, é preciso memorizar:-)
Outra nuance repentina da MQL - os métodos virtuais não são chamados a partir de construtores.
no código
você não pode fazer isso dessa forma :-)) OnAttach da classe pai será chamado a partir do construtor; e durante o acesso normal - da classe filha.
você não consegueentender, precisa memorizar:-)
Por que é impossível entender? A inicialização de um ponteiro para um método na tabela de métodos virtuais ocorre no construtor. O construtor da classe pai é chamado primeiro, depois o construtor da classe sucessora. Assim, quando o corpo do construtor da classe pai é executado, na tabela de métodos virtuais o ponteiro aponta para o endereço do método da classe base.
PS. Isso é para a eterna discussão sobre se você deve ou não aprender C++. Se você estudar o assunto, buscando a essência das coisas, e não se aprofundar, essas coisas se tornarão evidentes).
Por que é impossível entender? A inicialização de um ponteiro para um método na tabela de métodos virtuais ocorre no construtor. O construtor da classe principal é chamado primeiro, depois o construtor da sucessora. Assim, quando o corpo do construtor da classe pai é executado, o ponteiro aponta para o endereço do método da classe base na tabela de métodos virtuais.
PS. Isso é para o eterno cholivar sobre se você deve aprender C++. Se você estudar o assunto, buscando a essência das coisas, e não se aprofundar, essas coisas se tornarão evidentes).
Depois dos scripts, onde tudo é possível, é um pouco surpreendente que "um construtor não possa ser virtual" :-))
Depois dos scripts, onde tudo é possível, é um pouco surpreendente que "um construtor não possa ser virtual" :-)
Para seu "problema", existe uma solução: https: //habr.com/ru/post/64369/.
PS. Não é exatamente a mesma coisa, é claro, mas como uma direção geral de pensamento
Depois dos scripts, onde tudo é possível, é um pouco surpreendente que "um construtor não possa ser virtual" :-)
inesperado?
Imagine se HiLow::OnAttach fosse chamado. Se houvesse novos campos em HiLow e OnAttach os lesse, haveria "uso de variáveis não inicializadas" (porque o construtor de HiLow ainda não começou a ser executado).
POSITION_TIME_UPDATE é relevante apenas na alteração do lote de uma posição. Por exemplo, o fechamento parcial de uma posição em qualquer tipo de conta ou uma recarga na compensação.
As alterações nos níveis de SL/TP não afetam o POSITION_TIME_UPDATE.
Parafraseando, o POSITION_TIME_UPDATE é afetado somente por modificações refletidas no Histórico de negociação - negociações. Os níveis SL/TP não pertencem a essas modificações, portanto, não as afetam.
Sim, de fato, é assim em uma conta real.
Mas depois de criar o Expert Advisor, eu o testei no testador e descobri que , no testador, as modificações de SL/TP-levels afetam POSITION_TIME_UPDATE.
Aqui está um trecho dos registros.
Aqui, destaquei o momento da abertura da posição em amarelo e, em seguida (no próximo tick), em vermelho, o momento da modificação (colocação) do SL e do TP nela. Em seguida, verifico os tempos POSITION_TIME e POSITION_TIME_UPDATE usando a impressão -eles são diferentes.
Quando a modificação de SL e TP ocorre no mesmo segundo, os tempos de POSITION_TIME e POSITION_TIME_UPDATE são, obviamente, os mesmos.
Obrigado pela informação!
O campo ORDER_TIME_SETUP_MSC é alterado quando as ordens são parcialmente executadas.
Como consequência, o DEAL_TIME_MSC pode ser menor que o ORDER_TIME_SETUP_MSC de sua ordem.
Exemplo.