[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 174

 

Esta é a área onde a ordem de mercado é acionada se o limite não puder ser definido. Talvez seja aqui que reside o problema? Funcionou no testador :(

ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,timecl,blue);
if(ticket<1){// manipulação de erros
err=GetLastError();
if(err==147){// timeout
Err147=verdadeiro;
ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket>0){
WriteOrder(ticket,timecl);
}else{
err=GetLastError();
if(err==130){
if(Set_order_from_market){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket<1){
err=GetLastError();
Print("Error setting order from market # ",err,
" Tipo de pedido = COMPRAR ",
"Preço aberto =",Pergunte,
"Preço = ",Pergunte,
"Stop Loss = ",sll,
"TakeProfit = ",tpp);
}
}else{
}
}
}
}
if(err==130){
if(Set_order_from_the_market){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket<1){
err=GetLastError();
Print("Error setting order from market # ",err,
" Tipo de pedido = COMPRAR ",
"Preço aberto =",Pergunte,
"Preço = ",Pergunte,
"Stop Loss = ",sll,
"TakeProfit = ",tpp);
}
}else{
}
}
Print("4 Order setting error # ",err);
}
}
}
}
 

colocado no início da função
sll = NormalizeDouble (sll, MarketInfo( Símbolo (), MODE_DIGITS)); tpp = NormalizeDouble (tpp, MarketInfo( Símbolo (), MODE_DIGITS))

 
alsu:

put
sll = NormalizeDouble (sll, MarketInfo( Símbolo (), MODE_DIGITS)); tpp = NormalizeDouble (tpp, MarketInfo( Símbolo (), MODE_DIGITS)));



Fica assim. Infelizmente, não sou muito versado no código...

if(digite>0){
if(CountOpOrd(4,magic)<1){
if(buy!=0){
if(OpPrise(buy){RefreshRates();
if(buy-Ask<stlw*Point){NormalizeDouble(Ask+stlw*Point,Digits);}
if(sl<0){sll=NormalizeDouble(buy-((buy-sell)*(sl/(-100))),Digits);}
if(sl>0){sll=NormalizeDouble(buy-sl*Point*mno,Digits);}
if(tp>){tpp=NormalizeDouble(buy+tp*Point*mno,Digits);}
if(tp<0){tpp=NormalizeDouble(buy+((buy-sell)*(-tp/100)),Digits);}
ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,timecl,Blue);
if(ticket<1){// manipulação de erros
err=GetLastError();
if(err===147){// tempo de expiração não permitido
Err147=verdadeiro;
ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket>0){
WriteOrder(ticket,timecl);
}else{
err=GetLastError();
if(err==130){
if(Set_order_from_market){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket<1){
err=GetLastError();
Print("Error setting order from market # ",err,
" Tipo de pedido = COMPRAR ",
"Preço aberto =",Pergunte,
"Preço = ",Pergunte,
"Stop Loss = ",sll,
"TakeProfit = ",tpp);
}
}else{
}
}
}
}
if(err==130){
if(Set_order_from_the_market){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
if(ticket<1){
err=GetLastError();
Print("Error setting order from market # ",err,
" Tipo de pedido = COMPRAR ",
"Preço aberto =",Pergunte,
"Preço = ",Pergunte,
"Stop Loss = ",sll,
"TakeProfit = ",tpp);
}
}else{
}
}
Print("4 Order setting error # ",err);
}
}
}
}
 

A lógica é confusa, não dá para perceber.

Esta linha não faz absolutamente nada:

if(buy-Ask<stlw*Point){NormalizeDouble(Ask+stlw*Point,Digits);

Aqueles que o escreveram precisam descobrir primeiro :))

Em geral, coloque minhas linhas um pouco antes de abrir os pedidos. Isso não vai piorar de qualquer forma, mas se o erro persistir, será óbvio que foi causado por uma violação do nível de parada, pois 130 não tem outras opções.

 
alsu:

A lógica é confusa, não dá para perceber.

Esta linha não faz absolutamente nada:

Aqueles que o escreveram precisam descobrir primeiro :))

Em geral, coloque minhas linhas um pouco antes de abrir os pedidos. Isso não vai piorar de qualquer forma, mas se o erro persistir, será óbvio que foi causado por uma violação do nível de parada, pois 130 é a única maneira de cometer um erro.

https://www.mql5.com/ru/code/10111 - aqui. Talvez haja aqui uma resposta...
 

O gorjeta é um pouco torto...

É melhor você perguntar ao autor, mostre-me minha linha, que não faz nada. xrust é um homem experiente, ele vai descobrir como corrigi-lo.

 
alsu:

Um pouco tortuoso EA...

É melhor você perguntar ao autor, mostre-me minha linha, que não faz nada. xrust é um homem experiente, ele vai descobrir como ajustá-la.


Pelo menos ele faz :)

Há insetos, mas não fatais...

xrust não está entrandoem contato :(

Eu mesmo estou esperando por uma versão sem bugs. Talvez ele o exponha...

 
como se chama o sinal ALERT ? porque seu sinal soa quando o sinal é dado e eu não consigo encontrá-lo ((...)
 
Rossi:
como se chama a tabela ALERT ? porque seu sinal soa quando o sinal é dado e eu não consigo encontrá-lo ((...
Alerta()
 
Você pode me dizer como selecionar um pedido fechado? A questão é, eu quero fechar uma posição(aberta manualmente e a posição será sempre uma - este é o máximo), então a música tocará se a ordem estava no mais, se negativa, então a outra, se em nula, então a terceira. Você pode entrar nas condições através do OrderProfit, mas não sei como remover a última ordem fechada da história.