Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 239
![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
Obrigado pela ajuda, mas na negociação real não faz diferença como tomar o preço? Afinal, você tem que colocar tanto o indicador quanto a EA no gráfico?
No comércio real, você poderá obter os dados. Desde que não se apaguem acidentalmente as linhas indicadoras.
Com um verdadeiro, você poderá receber dados. Se você não remover acidentalmente as linhas indicadoras...
Por isso, tenho mais uma pergunta. Tenho um excelente Expert Advisor. Mas precisa fazer isso: quando cruza uma linha, uma ordem adicional é aberta nessa direção, e depois fecha com lucro... Como fazer para que, depois de fechar com lucro, o pedido adicional não seja aberto novamente? Até que a linha indicadora seja atualizada?
Boa tarde! Preciso de uma pequena ajuda com o código que:
abre BUY se o arquivo 11112222.txt contiver 1;
abre o SELL se o arquivo 11112222.txt contiver -1;
fecha todos os pedidos se o arquivo 11112222.txt contiver 0;
Dado o arquivo 11112222.txt, pode haver apenas três entradas: 1, -1 ou 0
Eu não entendo o que está errado com este código; por alguma razão, se eu vejo 0 no arquivo 11112222.txt, ele abre ordem de compra, ao invés de código de ordem fechada, eu simplesmente não sei o que está errado.
Ay, há também um problema, quando a EA está em execução, é quase sempre impossível abrir o arquivo 11112222.txt, ele diz que o arquivo está ocupado com outra aplicação, então para corrigir este problema eu coloco FileClose(handle2); // Fechar arquivo de texto; mas não ajuda e eu preciso que a EA verifique o arquivo 11112222.txt para 1, -1 ou 0 depois de aberto e depois feche-o, porque o arquivo é periodicamente usado por outro programa para colocar 1, -1 ou 0.
int handle2 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения
if(handle2>0) // если в файле больше 0, то есть 1, то открывать BUY
{
Print(FileReadString(handle2));
FileClose(handle2); // закрытие текстового файла
//ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ
if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на покупку
{
OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
FileClose(handle2); // закрытие текстового файла
}
else
Print("NE USPESHNO!!!");
FileClose(handle2); // закрытие текстового файла
}
//=================================конец кода BUY=========================================
//=================================SELL=========================================
int handle3 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения
if(handle3<0)//если в текстовом файле меньше 0, то есть -1, то открывать SELL
{
Print(FileReadString(handle3));
FileClose(handle3); // закрытие текстового файла
if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на продажу
{
OrderSend(Symbol(), OP_SELL, 0.01, Bid, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
FileClose(handle3); // закрытие текстового файла
}
else
Print("NE USPESHNO!!!");
FileClose(handle3); // закрытие текстового файла
}
//=================================конец кода SELL=========================================
//=================================ЗАКРЫТИЕ ВСЕХ ОРДЕРОВ=========================================
int handle4 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения
if(handle4=0)//если в текстовом файле равно 0, то закрыть все ордера
{
Print(FileReadString(handle4));
FileClose(handle4); // закрытие текстового файла
//-----------------код закрывает все ордера--------------------
bool result;
int error;
while (OrdersTotal()>0)
{
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{ if(OrderType()==OP_BUY) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if(OrderType()==OP_SELL) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE);
if (OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)
OrderDelete(OrderTicket());
if(result!=TRUE) { error=GetLastError();
Print("LastError = ",error, " ",Symbol()); }
else error=0; }
else Print( "Error when order select ", GetLastError());
FileClose(handle4); // закрытие текстового файла
}
//------------конец кода закрывающего ордера------------------
FileClose(handle4); // закрытие текстового файла
}
//=================================конец кода ЗАКРЫТИЕ ВСЕХ ОРДЕРОВ=========================================
Boa tarde! Preciso de uma pequena ajuda com o código que:
abre BUY se o arquivo 11112222.txt contiver 1;
abre o SELL se o arquivo 11112222.txt contiver -1;
fecha todos os pedidos se o arquivo 11112222.txt contiver 0;
O arquivo 11112222.txt é dado e pode ter apenas três entradas: 1, -1 ou 0.
Por alguma razão, quando 0 está no arquivo 11112222.txt, ele abre a ordem de compra, enquanto deve acionar o código de fechamento da ordem; não entendo qual é o erro.
Portanto, há também um problema, quando a EA está em execução, é quase sempre impossível abrir o arquivo 11112222.txt, porque ele diz que o arquivo está ocupado com outra aplicação. Para corrigi-lo, coloquei FileClose(handle2); // Fechar arquivo de texto; mas não funciona e preciso que a EA verifique o arquivo 11112222.txt para 1, -1 ou 0 e o feche, porque a cada segundo outro programa usa este arquivo para colocar 1, -1 ou 0 nele.
Porque o cabo do arquivo não é o conteúdo do arquivo.
É preciso ler primeiro o conteúdo do arquivo e só depois definir a condição. É o contrário, você tem uma condição por manipulação, então leia o arquivo e feche-o.
Porque a manipulação do arquivo não é o conteúdo do arquivo.
É preciso ler primeiro o conteúdo do arquivo e só depois colocar a condição. No seu caso é o contrário, condicionar por manipulação, depois ler o arquivo e fechá-lo.
1) - Esta parte abre o arquivo 11112222.txt para ler os dados do mesmo:
//=================================BUY=========================================
int handle2 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения
2) - A seguir vem a condição se o cabo2>0
if(handle2>0) // если в файле больше 0, то есть 1, то открывать BUY
{
3) - Esta é a parte que eu não entendo:
Print(FileReadString(handle2));
4) - Esta parte encerra o arquivo:
FileClose(handle2); // закрытие текстового файла
5) - Como a condição handle2>0 é cumprida, ou seja, o arquivo 11112222.txt contém 1, ele abre uma ordem de compra:
//ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ
if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на покупку
{
OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
FileClose(handle2); // закрытие текстового файла
}
else
Print("NE USPESHNO!!!");
FileClose(handle2); // закрытие текстового файла
}
//=================================конец кода BUY=========================================
Saudações ao tentar escrever um roteiro para fechar pedidos.
Se eu abrir várias ordens de venda e compra alternadamente e tentar fechá-las com esta ordem, apenas algumas são fechadas, as demais recebem erro 129 (Preço incorreto).
Tentei fazer um roteiro que, por exemplo, faz 10 tentativas * sobre o número de pedidos, com pausa em caso de erro.
Normalmente, ela lida com sua tarefa após várias tentativas, nas quais o mesmo 129 erro é cometido. Mas enquanto ele tenta, com muitas tentativas, fechar as encomendas pode ser fechado manualmente, e isto não causa erros, eles fecham.
O que eu estou fazendo de errado?
Saudações ao tentar escrever um roteiro para fechar pedidos.
Se eu abrir várias ordens de venda e compra alternadamente e tentar fechá-las com esta ordem, apenas algumas são fechadas, as demais recebem erro 129 (Preço incorreto).
Tentei fazer um roteiro que, por exemplo, faz 10 tentativas * sobre o número de pedidos, com pausa em caso de erro.
Normalmente, ela lida com sua tarefa após várias tentativas, nas quais o mesmo 129 erro é cometido. Mas enquanto ele tenta, com muitas tentativas, fechar as encomendas pode ser fechado manualmente, e isto não causa erros, eles fecham.
O que eu estou fazendo de errado?
Em geral, o que você escreve não é permitido para negociar em uma conta real, é apenas para um testador
Em geral, o que você escreve não deve ser autorizado a negociar em uma conta real, é apenas para o testador
Ajuda, obrigado.
Em geral, o que você escreve não é permitido para negociar em uma conta real, é apenas para um testador
Você pode explicar por que "não é permitido negociar..."?
Você pode explicar por que "não é permitido negociar"?
Não há verificação de erros, e se o servidor fechar e gerar um erro crítico, a EA continuará a bater no servidor, e isto cheira a proibição de mais auto-negociações por parte da corretora.