Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1250

 
Artyom Trishkin :

Eu ainda não investiguei - não posso dizer, infelizmente.

Vou explicar. Espero que faça sentido.

Aqui está a explicação:

Eu estou negociando EURUSD e AUDJPY em MT5. Ambos têm margem reservada, como mostrado na barra de ferramentas MT5. Vou compartilhar a imagem.

Primeira negociação no EURUSD:

Eu vendi com lote = 1. Margem tomada = 235,31.

Agora estou negociando no AUDJPY:

Eu vendi no lote = 1. Eu recebi uma chamada de margem = 144,24.

E a margem total mostrada na Caixa de ferramentas = 379,55.

A caixa de ferramentas, como você pode ver, mostra a margem total utilizada pelos símbolos EURUSD e AUDJPY.

Agora chego à minha pergunta.

Quero saber qual é a margem da margem total utilizada pela EURUSD. Não estou recebendo os cálculos para isto. Eu sei que a resposta deveria ser = 235,31

Mas com a OrderCalcMargin () eu recebo respostas diferentes. Algumas vezes a função retorna 235,23, outras vezes 235,01. Mas esta é a resposta errada. Quero saber como posso calcular a margem utilizada para um determinado símbolo. No meu exemplo, diga-me como posso calcular a margem utilizada pela EURSD ou AUDJPY.

Nota:

A resposta OrderCalcMargin () às vezes dá a resposta correta para EURUSD. Mas se eu quiser calcular a margem para AUDJPY, ela é sempre diferente.

Agora, por favor, me avise se eu entender.

Tenho esta pergunta e tentei explicá-la a todos no fórum, mas ninguém consegue entendê-la. Isto sou eu tentando novamente.

Vou tentar novamente se ainda não fizer sentido.

@ Artyom Trishkin, me avise. Estou contando com você para me dar uma solução.

 
jaffer wilson:

Vou explicar. Espero que faça sentido.

Aqui está a explicação:

Eu estou negociando EURUSD e AUDJPY em MT5. Ambos têm margem reservada, como mostrado na barra de ferramentas MT5. Vou compartilhar a imagem.

Primeira negociação no EURUSD:

Eu vendi com lote = 1. Margem tomada = 235,31.

Agora estou negociando no AUDJPY:

Eu vendi no lote = 1. Eu recebi uma chamada de margem = 144,24.

E a margem total mostrada na Caixa de ferramentas = 379,55.

A caixa de ferramentas, como você pode ver, mostra a margem total utilizada pelos símbolos EURUSD e AUDJPY.

Agora chego à minha pergunta.

Quero saber qual é a margem da margem total utilizada pela EURUSD. Não estou recebendo os cálculos para isto. Eu sei que a resposta deveria ser = 235,31

Mas com a OrderCalcMargin () eu recebo respostas diferentes. Algumas vezes a função retorna 235,23, outras vezes 235,01. Mas esta é a resposta errada. Quero saber como posso calcular a margem utilizada para um determinado símbolo. No meu exemplo, diga-me como posso calcular a margem utilizada pelo EURSD ou AUDJPY.

Nota:

A resposta OrderCalcMargin () às vezes dá a resposta correta para EURUSD. Mas se eu quiser calcular a margem para AUDJPY, ela é sempre diferente.

Agora, por favor, me avise se eu entender.

Tenho esta pergunta e tentei explicá-la a todos no fórum, mas ninguém consegue entendê-la. Isto sou eu tentando novamente.

Vou tentar novamente se ainda não fizer sentido.

@ Artyom Trishkin, me avise. Estou contando com você para me dar uma solução.

Valores muito importantes para calcular em seu caso:

  1. Em que moeda está a conta
  2. Qual era a taxa de câmbio no momento em que você abriu a posição

Como exemplo, o cálculo da margem para AUDJPY envolve AUDUSD e USDJPY. Qual era a taxa de câmbio AUDJPY no momento em que você abriu a posição, ninguém jamais adivinhará. Você só pode tentar calcular através da margem atual. Isto foi mencionado no fio ao qual eu o liguei. Mas, para ser honesto, não diz muito sobre isso, mas há algo nos códigos.

A cada momento subseqüente estas taxas mudam e, portanto, você obtém valores de margem diferentes. Calcular a razão da margem atual para o preço de abertura da posição e aplicar este coeficiente no cálculo da margem para a posição aberta. Você precisa experimentar. Não me lembro do algoritmo exato de cálculo.

Mas não creio que alguém lhe dê uma solução pronta.

 
Alexey Viktorov :

Valores muito importantes para o cálculo em seu caso:

  1. Em que moeda a conta está denominada
  2. Qual era a taxa de câmbio no momento em que você abriu a posição

Como exemplo, o cálculo da margem AUDJPY envolve AUDUSD e USDJPY. Qual era a taxa de câmbio AUDJPY no momento em que você abriu a posição, ninguém jamais adivinhará. Você só pode tentar calcular através da margem atual. Isto foi mencionado no fio ao qual eu o liguei. Mas, para ser honesto, não diz muito sobre isso, mas há algo nos códigos.

A cada momento subseqüente estas taxas mudam e, portanto, você obtém valores de margem diferentes. Calcular a razão da margem atual para o preço de abertura da posição e aplicar este coeficiente no cálculo da margem para a posição aberta. Você precisa experimentar. Não me lembro do algoritmo exato de cálculo.

Mas não creio que alguém lhe dê uma solução pronta.

Sim, eu entendo isso. Mas vejo que o MT5 ToolBox calcula exatamente sem alterar a margem. Então qual lógica a MT5 ToolBox utiliza? Você poderia lançar alguma luz sobre isso, por favor?

 

Questionar como atribuir um valor a diferentes variáveis através de argumentos em uma função. Se houver um argumento, ele pode ser devolvido e receber um valor, mas se houver 2, o que deve ser feito?

int x,x1,x2,x3=1,x4,x5;
void OnStart()
{
x=2;
F(x,x1,x2);
Print ("x1= ",x1," x2= ",x2);
x=5 ;
F(x,x4,x5);
Print ("x4= ",x4," x5= ",x5);
return;
}

int F(int ArgX, int ArgX1, int ArgX2)
{
ArgX1=ArgX + x3;
ArgX2=ArgX - x3;
return ArgX1;
}

//результат
2020.09.09 15:10:10.561 TestS EURUSD,H1: x4= 0 x5= 0
2020.09.09 15:10:10.561 TestS EURUSD,H1: x1= 0 x2= 0
Документация по MQL5: Основы языка / Операции и выражения / Операции присваивания
Документация по MQL5: Основы языка / Операции и выражения / Операции присваивания
  • www.mql5.com
Побитовые операции производятся только с целыми числами. При выполнении операции логический сдвиг представления y вправо/влево на x бит используются младшие 5 двоичных разрядов значения x, старшие разряды отбрасываются, то есть сдвиг производится на 0-31 бит.
 

Valery, talvez isto sirva:

void  F(int &ArgX, int &ArgX1, int &ArgX2)
 
Aleksei Stepanenko:

Valery, talvez isto sirva:

Certo, links, appersand se não estou enganado.

2020.09.09 15:18:33.572 TestS EURUSD,H1: x4= 6x5= 4

2020.09.09 15:18:33.572 TestS EURUSD,H1: x1= 3x2= 1

Obrigado))))


 
Isso mesmo! Transmissão no link.
 
Valeriy Yastremskiy:

Questionar como atribuir um valor a diferentes variáveis através de argumentos em uma função. Se houver um argumento, ele pode ser devolvido e receber um valor, mas se houver 2, o que dizer disso?

O que é isto?

void start()

Era uma vez, há muito, muito tempo. mamutes comeram. E então eles a colocaram. É isso que eu acho que é?

 
Artyom Trishkin:

O que é isso?

Era uma vez... mamutes costumavam comer. E então eles a colocaram. É isso o que eu penso que é?

Não julgue, eu escrevi o roteiro à mão. E uma verificação rigorosa salta funções antigas. É claro que não escrevo meu roteiro dessa maneira. Além disso, há construtores. )))))

Corrigido)
 
Colegas, bom dia para todos. Há cinco robôs comerciais com símbolos mágicos diferentes abrindo posições de mercado ao preço de abertura de uma nova barra e todos eles têm as mesmas condições de entrada. As saídas são diferentes.
Às vezes eu fecho todas as cinco posições manualmente.
E então, como com o mínimo esforço para organizar um algoritmo para abrir uma nova posição no mercado, mas não no próximo bar - o comércio no M1, mas em diferentes consecutivas, ou seja, em 1 m1 abriu o primeiro que teve tempo, no segundo m1 abriu o segundo que teve tempo, etc. a 5.
Ou seja, acho que a questão se resume ao seguinte, como opção, como alocar um minuto de tempo de abertura do mercado para sua posterior comparação com a minuta () f-fi padrão? E, claro, se já existe uma posição de mercado neste momento, então volte ().
Razão: