Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1257
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
Você não precisa escrever este código no OnInit, mas no OnTick().
Não, você não pode.
Não consigo explicar como funcionam os modelos.... é assim - até que você chame tal função, o compilador não sabe nada sobre sua existência (muitas vezes, não há sequer erros de compilação se não houver chamada)
então você chama tal função de modelo e o compilador preenche os tipos necessários e só então verifica se tudo vai funcionar corretamente
e então você faz outra chamada ao modelo com diferentes tipos de parâmetros - e o compilador cria uma nova função, ou seja, mais uma, ou seja, como se você escrevesse 2 funções, que fazem a mesma coisa, mas com diferentes tipos de parâmetros
whew, é assim que funciona ))))
UPD:
você pode, mas se os tipos no modelo corresponderem, aqui está um exemplo, ele funciona corretamente:
Obrigado, ainda mais claro do que nos docs) Acontece que na predefinição do modelo de variáveis não permite não especificá-las. Preciso dele para imprimir para um arquivo. O registro não me dá a opção de dividir os registros. Gostaria que houvesse 5 logs). Como resultado, os modelos dão a opção de não trazer o tipo de variável para a desejada, ela pode ser feita dentro de uma função de modelo, mas o número de variáveis deve ser especificado por completo. E uma função simples com variáveis pré-definidas do tipo requerido dá uma oportunidade de especificar menos variáveis em uma chamada, mas os tipos de variáveis devem ser trazidos para a variável requerida. É claro que isto pode ser feito durante a chamada, mas o registro será muito longo.
Boa tarde a todos!
Fiz uma função para modificar a perda de carga. Mas quando funciona, dá EURUSD,H1: OrderModify error 130.
E o preço está longe do local onde deve ser fixado o stoploss.
Aqui está a função:
Tente desta forma:
Obrigado, funcionou!
Mas mais duas nuances:
1 que condição acrescentar para não fechar pedidos que foram abertos na sexta-feira da semana atual e nas sextas-feiras das semanas anteriores, respectivamente, foram fechados ?
2. como corrigir o código - OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_ASK),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE);
para remover"possível perda de dados devido à conversão do tipo" aviso? Parece ser sobre "...MarketInfo(nameSym,MODE_DIGITS)...".
Por favor, informe.
No testador, o valor de retorno da função de soma de lote GetAmountLotFromOpenPos dá um valor de -1717986918.
Eu encontrei a razão. Eu deveria ter colocado OrderTakeProfit() em OrderModify ao invés de OrderProft(). Dei uma pequena olhada.
De qualquer forma, obrigado pela ajuda.
Obrigado, funcionou!
Mas mais duas nuances:
1 que condição acrescentar para não fechar pedidos que foram abertos na sexta-feira da semana corrente, e nas sextas-feiras das semanas anteriores, respectivamente, foram fechados?
2. como corrigir o código - OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_ASK),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE);
para remover"possível perda de dados devido à conversão do tipo" aviso? Deve ser sobre "...MarketInfo(nameSym,MODE_DIGITS)...".
Para a primeira pergunta, você precisa fazer esta função:
{Imprimir("Erro ao selecionar o pedido", GetLastError();}
Para a segunda pergunta, deve haver a seguinte entrada:
OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(MarketInfo(nameSym,MODE_ASK)), 3, clrNONE);
Boa sorte.