Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 743

 

Olá a todos! Pergunta sobre a MQL5.

Gostaria de inserir comentários na função de fechar uma posição num bilhete.

Até agora utilizei a classe CTrade, mas ela não oferece tal oportunidade.

Isto é, preciso de usar OrderSend, certo?

Aqui não entendo: https://www.mql5.com/ru/docs/constants/tradingconstants/enum_trade_request_actions#trade_action_deal no exemplo, a função OnStart está escrita. Ou posso escrever tudo em função personalizada e chamar-lhe quando necessário?

É necessário acrescentar algo ao OnInit?

E não haverá conflitos se eu escrever o encerramento através da OrderSend e deixar a abertura e modificações com base na classe CTrade?

Obrigado!

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin:

Grosseiramente falando - leia cuidadosamente o que lhe escrevi e deixe cair o loop infinito do seu código.

Tem a certeza de que colocar o Expert Advisor num loop infinito é a solução certa?

Em primeiro lugar, isto não é uma solução, mas um exemplo para demonstrar a essência daquilo de que estou a falar.

Em segundo lugar, não é um loop infinito, terminará correcta e seguramente quando o programa terminar.

E, em terceiro lugar, escreve-me sobre a resolução de uma coisa completamente diferente, para a qual posso pensar em um milhão de maneiras.

Então considera que o meu laço é um obstáculo à minha situação? A sério?

Seja como for, eu percebo. Tive uma má viagem neste fio...

Mas obrigado de qualquer forma!

 
Marat Sultanov:

Em primeiro lugar, isto não é uma solução, mas um exemplo para mostrar a essência daquilo de que estou a falar.

Em segundo lugar, não é um loop infinito, terminará correcta e seguramente quando o programa terminar.

E, em terceiro lugar, está a escrever-me sobre a resolução de uma coisa completamente diferente, para a qual posso pensar num milhão de maneiras.

Então considera que o meu laço é um obstáculo à minha situação? A sério?

Seja como for, eu percebo. Tive uma má viagem neste fio...

Mas obrigado de qualquer forma!

No final do programa, sim, será.

Faça então alguns cálculos realmente pesados, e tente interrompê-los quando a janela de ajustes for chamada.

Vi como funciona o seu código - não responde a uma mudança de variável nas definições - é impedido por um loop infinito, que só pode ser interrompido pela remoção da EA, e não recomeçará - apagou-o do gráfico...

Tente acompanhar os cálculos pesados através de um temporizador. Embora não tenha a certeza se o temporizador será chamado no momento do cálculo.

Mas em qualquer caso, o looping para imitar um cálculo longo não é uma boa solução.

 
Olá. Poderia dizer-me como definir uma matriz nos parâmetros de entrada de uma função?
double test[];


double Test(.....)
{

}
 
Fresto:
Olá. Pode dizer-me, por favor, como definir uma matriz nos parâmetros de entrada de uma função?

Passar uma matriz a uma função?

É algo parecido com isto:

//+------------------------------------------------------------------+
double test[];
ArrayResize(test,2);
ArrayInitialize(test,256);

Print(Test(test));
//+------------------------------------------------------------------+
double Test(double &array[])
{
   if(ArraySize(array)==0) return(WRONG_VALUE);
   array[0]+=array[1];
   return(array[0]);
}
//+------------------------------------------------------------------+

Bem ... variações sobre o tema ...

 
Artyom Trishkin:

Quando terminar o programa, sim, terminará.

Depois faça alguns cálculos realmente pesados e tente interrompê-los quando a janela de ajustes for chamada.

Vi como funciona o seu código - não reage a alterações variáveis nas definições - não é permitido fazê-lo por loop infinito, que só pode ser interrompido pela remoção da EA, e não recomeçará - apagou-o do gráfico...

Tente seguir um cálculo pesado com um temporizador. No entanto, não tenho a certeza se o temporizador será chamado no momento do cálculo.

Mas em qualquer caso, o looping para imitar um cálculo longo não é uma boa solução.

Obrigado!

Compreendido. Mas, infelizmente, existe uma necessidade razoável.

Mas em qualquer caso, o looping para imitar um cálculo longo não é uma boa solução.

Há situações, quando por exemplo é necessário escrever para um grande ficheiro ou ler de um grande ficheiro ou todos juntos. Se esticar a sua imaginação, pode enlouquecer muito, e a dor é esquadriada quando a aplica :)

Acho estranho, que a possibilidade de rastrear uma interrupção com _StopFlag esteja lá, mas não há alteração dos parâmetros de entrada :(

 
olá, pergunta: é possível alterar o ângulo em que o comentário é apresentado no gráfico?????
 
Dmitry Melnichenko:
olá, tenho uma pergunta. é possível alterar o ângulo do comentário no gráfico?????

Não.

A menos que você mesmo crie uma etiqueta gráfica OBJ_LABEL e altere a sua propriedade

OBJPROP_ANGLE


usando a função:ObjectSetDouble
 
Rapazes, ajudem com o indicador
Arquivos anexados:
llassiff.mq5  17 kb
 
Rafael Sahibgareev:
Rapazes, ajudem-me a descobrir o indicador
Há aí um pedaço de código que não compreendo. Tem de ser o próprio a corrigi-lo.
Arquivos anexados:
llassiff.mq5  18 kb