Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 404
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
Comecei a escrever um invólucro para funções de abertura e modificação de encomendas (pensei que iria resolver os meus problemas com a devolução de valores por parte destes operadores), mas existe o mesmo problema.
Explicar qual é o problema (não importa o que eu escreva, há sempre um problema com a devolução de valores da OrderSend, OrderSelex e ModifyOrder)
Código de embalamento .
int start()
{
se (sinal == 1)
{
OrderSendX(Symbol(),OP_BUY,0.1,Ask,0,500,500,"123",123,0,Red);
}
return(0);
}
//-----------------------------------------------
int OrderSendX (símbolo de corda,int cmd, volume duplo,preço duplo,int slippage,stoploss duplo,takeprofit duplo,comentário de corda,
int magic,expiração da data/hora,cor seta_cor)
{
int err=GetLastError();
err = 0;
bool exit_loop = falso;
int ticket = -1;
int Retry = 10;
int cnt = 0;
if(cmd == OP_BUY || cmd == OP_SELL) //cheque o tipo de ordem de abertura
{
while(!exit_loop)
{
bilhete = OrderSend(symbol,cmd,volume,preço,slippage,stoploss,takeprofit,comment,magic,expiration,arrow_color);
err = GetLastError();
switch(err)
{
caso ERR_NO_ERROR:
exit_loop = true;
pausa;
{ caso ERR_SERVER_BUSY:
caso ERR_NO_CONNECTION:
caso ERR_INVALID_PRICE:
caso ERR_BROKER_BUSY:
caso ERR_TRADE_CONTEXT_BUSY:
cnt+++;
pausa;
caso ERR_PRICE_CHANGED:
caso ERR_OFF_QUOTES:
caso ERR_REQUOTE:
RefreshRates();
continuar;
padrão:
exit_loop = true;
pausa;
}
if(cnt>Retry)
exit_loop = true;
if(!exit_loop)
{
Sleep(1000);
RefreshRates();
}
senão
{
if(err !=ERR_NO_ERROR)
{
Imprimir("Erro : " " + erro);
}
}
if(err ==ERR_NO_ERROR)
{
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
regresso(bilhete);
}
Imprimir("Erro na ordem de abertura depois" + cnt + "tentativas");
retorno(-1);
}
}
}
Comecei a escrever um invólucro para funções de abertura e modificação de encomendas (pensei que iria resolver os meus problemas com a devolução de valores por parte destes operadores), mas existe o mesmo problema.
Explica-me qual é o problema (independentemente do que escrevi, tenho sempre problemas com a devolução de valores da OrderSend, OrderSelex e ModifyOrder)
https://docs.mql4.com/ru/trading/ordermodify
OrderModify() devolve sim , não
Ninguém consegue explicar.
Vamos tentar outro exemplo em vez de copiar 100 vezes a ajuda para mim.
Como deve ser correcto? Vou utilizar um exemplo para compreender as correcções
{
SL=NormalizeDouble(Bid-TrailingStop*Point,Digitos);
if(OrderStopLoss()!=SL)
OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0);
}
não inserir
"""bilhete """= OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0); todas as vezes está correcto?
E obrigado a todos os que tentaram explicar .
Infelizmente não compreendo como designar uma variável para uma variável que é predefinida como função.
E obrigado a todos os que tentaram explicar .
Infelizmente não compreendo como designar uma variável para uma variável que é predefinida como função.
CaroLeanid. Aprender a ler a ajuda e a trabalhar com erros e avisos. Se não aprender como o fazer, nem sequer programará correctamente. Estas são as noções básicas. Já tentou traduzir o que está escrito nos avisos? Compreende o significado das funções que "precisam de ser verificadas"? A ajuda descreve um exemplo correcto de tratamento destas funções. Por exemplo, OrderModify(). Vejam a ajuda:
Valor de retorno
Retorna verdadeiro se a função for concluída com sucesso ou falsa em caso de erro. Para obter informações sobreo erro, é necessário chamar a funçãoGetLastError().
e depois segue um exemplo:
Como se pode ver, o valor de retorno da função é tratado no operador if-else. A variável res é necessária "para a beleza" por uma razão. É o resultado da execução de uma função comercial! A função da qual depende o seu dinheiro! Consequentemente, para processar correctamente todas as variantes possíveis (o processamento neste exemplo não é fornecido), precisamos da variável res e do código de erro devolvido pela função GetLastError(). Os criadores incluíram propositadamente avisos como um lembrete para não esquecer que existem funções "importantes" para prestar atenção ao processamento de valores! Note também que se o valor não for verificado, não haverá erro! Ou seja, neste caso, a função funcionará como está, mas se ocorrer uma situação anormal, esta não será processada. A lista de situações não padronizadas são códigos de retorno da função GetLastError().
Espero que seja mais claro desta forma.
Comecei a escrever um invólucro para as funções de abertura e modificação de encomendas (pensei que iria resolver o meu problema com a devolução de valores por parte destes operadores), mas há o mesmo problema.
E, neste caso, não precisamos de escrever um invólucro. Não vai resolver o problema com o aviso sobre a verificação do valor de retorno! Dê uma vista de olhos aos exemplos destas funções e faça o mesmo!
Como indicado na referência dá um erro.
Escrevi-o desta forma e está bem
if(OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0))
{
Imprimir("A modificação foi bem sucedida");
}
senão Imprimir("Erro ao modificar a encomenda");
Inserir código correctamente nas mensagens:Inserir código correctamente no fórum
Porque é que o Trawling não funciona para vender? Funciona para comprar!
Sem erros ou avisos , sobre a compilação genética.
Aqui está o código: