![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Classificado e fixado. Obrigado.
Obrigado pela correcção, quase boa, porque quase...
No helpe diz
start_time [em] O tempo de bar correspondente ao primeiro elemento.
E o primeiro elemento é 0.
Mas o último elemento é bom.
Se foi assim que se pretendeu, por favor conserte o helpe.
Obrigado pela correcção, quase boa, porque quase...
No helpe diz
start_time [em] O tempo de bar correspondente ao primeiro elemento.
E o primeiro elemento é 0.
Mas o último elemento é bom.
Se é assim que deve ser, por favor conserte o cabo de ajuda.
A situação é que a hora_de_início e a hora_de_paragem no caso date-to-date podem ser qualquer - em qualquer caso formam um intervalo. Vamos tentar mapear isto mais precisamente na documentação
Isto é, está a dizer que as funções de cópia* devolverão, em caso de data até à data, todos os elementos excepto o elemento de partida? Por isso, preciso de escrever a expressão desta forma:
esta questão é muito importante para mim.
Por favor note que quando se muda para um novo dia, este é o tipo de coisa que acontece:
Após a actualização, tudo se encaixa no lugar.
Observar a formação da transição para um novo dia, muitas vezes noto esta mudança, e o mais interessante no momento da formação da primeira barra do gráfico de actualização do dia seguinte não traz resultados. (Posso estar errado, mas penso que o meu posto anterior também tem algo a ver com isso).
Bild 252.
Menu principal: <Gráficos> -<Instrumentos gráficos> são mostrados os prazos.
Infelizmente, a última versão da CAccountInfo não chegou a entrar na construção.
No ficheiro anexo, encontrará o método FreeMarginCheck (até agora apenas para SYMBOL_CALC_MODE_FOREX).
Se tiver quaisquer comentários e (ou) ideias, por favor escreva.
Descobri, que o método FreeMarginCheck precisa de ser melhorado.
1. Consideremos o caso SYMBOL_CALC_MODE_FOREX:
work=SymbolInfoString(símbolo,SYMBOL_CURRENCY_MARGIN)+Currency();
bid=SymbolInfoDouble(trabalho,SYMBOL_BID);
margem=baixa*volume*contrato_tamanho/alavancagem;
margin= free_margin;
pausa;
Se os valores dos dois summands SymbolInfoString(símbolo,SYMBOL_CURRENCY_MARGIN) e Currency() se revelarem iguais, então a variável de oferta recebe o valor 0 e a variável de margem recebe o valor free_margin.
Para o corrigir, fiz o seguinte:
caso SYMBOL_CALC_MODE_FOREX:
bid=1.0;
se (SymbolInfoString(símbolo,SYMBOL_CURRENCY_MARGIN)!=Currency())
{
work=SymbolInfoString(símbolo,SYMBOL_CURRENCY_MARGIN)+Currency();
bid=SymbolInfoDouble(trabalho,SYMBOL_BID);
}
margem=baixa*volume*contrato_tamanho/alavancagem;
margin= free_margin;
pausa;
Posso perguntar quando é que as funções de cópia*() funcionarão normalmente?
Em cada nova construção deixam de funcionar, será que ninguém os utiliza?
Obrigado pela correcção, quase boa, porque quase...
No helpe diz
start_time [em] O tempo de bar correspondente ao primeiro elemento.
E o primeiro elemento é 0.
Mas o último elemento é bom.
Se era esta a sua intenção, por favor conserte a ajuda.
Não está claro do seu exemplo como é adquirido o valor do tempo1. A tentativa de reproduzir a situação foi infrutífera.
Descobriu-se que o método FreeMarginCheck precisa de ser refinado.
Descobriu-se que o método FreeMarginCheck precisa de ser refinado.
2. Outro problema é o seguinte. Mais uma vez considerar o caso SYMBOL_CALC_MODE_FOREX:
work=SymbolInfoString(símbolo,SYMBOL_CURRENCY_MARGIN)+Currency();
bid=SymbolInfoDouble(trabalho,SYMBOL_BID);
Se a variávelsímbolo tiver uma moeda que não esteja directamente cotada (por exemplo CADJPY) como moeda base, SymbolInfoDouble(work,SYMBOL_BID) sairá 0.
2.1 Além disso, não é claro porque é que o preço BID é utilizado ao calcular a segunda variável (licitação). Afinal, precisamos de assegurar que a moedaem que as ofertas são calculadas é adquiridaà custa da moeda de depósito, ou seja, "comprar a moeda de margem, vender a moeda de depósito". E se num determinado par de moedas, a moeda de depósito estiver em segundo lugar, então temos de utilizar o preço ASK para realizar a operação especificada.
Para rectificar a situação, fiz o seguinte:
curso duplo;
//---
switch(SymbolInfoInteger(símbolo,SYMBOL_TRADE_CALC_MODE))
{
caso SYMBOL_CALC_MODE_FOREX:
curso=1.0;
//---Cheque se a moeda de depósito é a moeda base do par de moedas corrente
//par. Se for, então o valor da variável do curso permanecerá 1.0
if(SymbolInfoString(símbolo,SYMBOL_CURRENCY_MARGIN)!=Currency())
{
work=SymbolInfoString(símbolo,SYMBOL_CURRENCY_MARGIN)+Currency();
//---Cheque se existe um par de moedas cuja moeda base é a mesma que a
// a moeda base do par actual, e a moeda de cotação é a mesma que a moeda de depósito
//(i.e., se o depósito for em USD, verifique se há uma cotação directa)
if(SymbolInfoDouble(trabalho,SYMBOL_ASK)!=0)
course=SymbolInfoDouble(trabalho,SYMBOL_ASK);
//--- Se a condição acima não for cumprida, alterar a sequência dos símbolos
//currências na variável de trabalho não é cumprido e obtemos um par de moedas com moeda base
corresponde à moeda de depósito, // a moeda de cotação é a mesma que a moeda base
//corrente (se o depósito for em USD, obtemos o par de moedas com a cotação inversa).
senão
{
work=Currency()+SymbolInfoString(symbol,SYMBOL_CURRENCY_MARGIN);
curso=1/SymbolInfoDouble(trabalho,SYMBOL_BID);
}
}
margin=course*volume*contract_size/leverage;
margin= free_margin;
pausa;