Acho que o erro está na forma como você está fazendo seus pedidos. Se você estiver usando ordens de parada, então suas ordens estão muito próximas do preço de mercado. Normalmente, seu stop de compra deve estar pelo menos "MarketInfo(Symbol(),MODE_STOPLEVEL)" a pips de distância do pedido atual.
Se você estiver colocando ordens de parada, certifique-se de usar RefreshRates() e, em seguida, coloque as ordens que exigiram distância de distância. Para mercados em rápida movimentação, ainda pode não funcionar e você terá que colocar as ordens mais distantes.
Espero que isto ajude.
é uma compra/venda não pára
Hi
Obrigado, mas não é uma parada, é uma troca - compra/venda, vou tentar 2*MarketInfo(Symbol(),MODE_STOPLEVEL)
Hi
Estou recebendo a mensagem de erro inválida para o erro 130, ou seja
Eu imprimo meus valores e eles são os seguintes
2006.06.29 13:15:05 AUDUSD,H1: Detalhes do pedido: Preço de Venda : 0.731 ,CurrentBid : 0.731 ,stoploss : 0.7319 ,takeprofit : 0.7291 ,slippage : 2
Eu estou usando o seguinte para verificar meu sl e tp antes de fazer o pedido
if (StopLoss<=MarketInfo(Symbol(),MODE_STOPLEVEL)) StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL)+3;
if (TakeProfit<=MarketInfo(Symbol(),MODE_STOPLEVEL)) TakeProfit=2*(MarketInfo(Symbol(),MODE_STOPLEVEL)+3);
Às vezes a venda é feita da seguinte forma
2006.06.29 08:32:56 AUDUSD,H1: aberto #5976740 venda 0.01 AUDUSD a 0.7309 sl: 0.7324 tp: 0.7278 ok
Talvez minha verificação não esteja funcionando corretamente.
Alguma sugestão?Talvez você esteja usando "+ 3" tanto na compra quanto na venda. No sell u tem que colocar "-3" para que seja um preço válido
isso não é o incômodo
Estou começando a pensar que seu interbankfx tenta evitar o escalpe quando o mercado está apertado. Funciona quando o mercado não está apertado - ainda é confuso, pois uma vez que o sl e o tp são maiores que MarketInfo(Symbol(),MODE_STOPLEVEL) ele deve abrir o comércio.
De qualquer forma, aqui está o código que eu uso
StopLoss = NormalizeDouble((TradeAbovePct/100)*(DemaH-DemaL)*(1/Point),0);
if (StopLoss<=MarketInfo(Symbol(),MODE_STOPLEVEL)) StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL)+3;
TakeProfit = NormalizeDouble(2*((DemaH-DemaL)*(1/Point)),0);
if (TakeProfit<=MarketInfo(Symbol(),MODE_STOPLEVEL)) TakeProfit=2*(MarketInfo(Symbol(),MODE_STOPLEVEL)+3);
//Then I call a buy and sell as needed
//e.i
OpenBuy1(10);
OpenSell1(10);
////////////////////////////////////////////////
bool OpenBuy1(int pips1)
{
int ticket;
string comment="";
//reset defaults
use_MTBE = use_MTBEd;
use_split = use_splitd;
RefreshRates();
price1 = Ask;
stoploss1 = NormalizeDouble(price1-StopLoss*Point,Digits);
tp1 = NormalizeDouble(price1+TakeProfit*Point,Digits);
//expire1 = iTime(Symbol(),TimeFrame,0)+TimeFrame*HoursStopOpen*60;
Print("Openbuy lots: ", Lots);
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_BUY,Lots,price1,2,stoploss1,tp1,comment,MAGICMA,0,Orange);
else
ticket=OrderSend(Symbol(),OP_BUY,Lots,price1,2,0,tp1,comment,MAGICMA,0,Orange);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
Print("BUY order opened : ",OrderOpenPrice());
//time1 = CurTime()+2*60*Period();
return(true);
}
}
else
{
Print("Error opening BUY order : ",GetLastError());
Print("OrderDetails: BuyPrice : ",price1," ,CurrentAsk : ", Ask," ,stoploss : ",stoploss1," ,takeprofit : ",tp1," ,slippage : ",2);
return(false);
}
}
bool OpenSell1(int pips1)
{
int ticket;
string comment="";
//reset defaults
use_MTBE = use_MTBEd;
use_split = use_splitd;
RefreshRates();
price1 = Bid;
stoploss1 = NormalizeDouble(price1+StopLoss*Point,Digits) ;
tp1 = NormalizeDouble(price1-TakeProfit*Point,Digits);
// expire1 = iTime(Symbol(),TimeFrame,0)+TimeFrame*HoursStopOpen*60;
Print("Opensell lots: ", Lots);
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_SELL,Lots,price1,2,stoploss1,tp1,comment,MAGICMA,0,Red);
else
ticket=OrderSend(Symbol(),OP_SELL,Lots,price1,2,0,tp1,comment,MAGICMA,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
Print("SELL order opened : ",OrderOpenPrice());
// time1 = CurTime()+2*60*Period();
return(true);
}
}
else
{
Print("Error opening SELL order : ",GetLastError());
Print("OrderDetails: SellPrice : ",price1," ,CurrentBid : ", Bid," ,stoploss : ",stoploss1," ,takeprofit : ",tp1," ,slippage : ",2);
return(false);
}
}
Ajuda Necessária - Erro 138 ordens de abertura
Hi!
Bem, como você pode ver, sou novato neste fórum. Eu sou Ignacio, da Argentina. E estou tentando desenvolver um simples EA.
Eu acho que a estratégia está "pronta". Mas quando eu corro para trás, nenhuma ordem está aberta. Eu imprimi algumas informações de depuração e as condições estão OK. O erro lançado pela função OrderSend é 138.
o código é o seguinte:
RefreshRates();
OrderSend( Symbol(), OP_BUY, Lots, Slippage, Ask, 0.0, 0.0, c , magic_number, 0, Blue);
Alguém pode me explicar o que está errado?
Obrigado a todos vocês.
ign...
Hi!
Bem, como você pode ver, sou novato neste fórum. Eu sou Ignacio, da Argentina. E estou tentando desenvolver um simples EA.
Eu acho que a estratégia está "pronta". Mas quando eu corro para trás, nenhuma ordem está aberta. Eu imprimi algumas informações de depuração e as condições estão OK. O erro lançado pela função OrderSend é 138.
o código é o seguinte:
RefreshRates();
OrderSend( Symbol(), OP_BUY, Lots, Slippage, Ask, 0.0, 0.0, c , magic_number, 0, Blue);
Alguém pode me explicar o que está errado?
Obrigado a todos vocês.
ign...Oerro 138 significa que houve um requote. Você já tentou usar um valor de pip maior para escorregamento, algo como entre 3 e 5?
Obrigado por suas respostas,
Maji, testei alguns valores de deslizamento em um loop e OrderSend me dá o mesmo erro.
elihayun, eu acrescentei corretamente sua condição e ainda o mesmo erro.
Eu fiz muitos testes e nenhum resultado bom
Alguma sugestão? Eu realmente quero terminar esta para fazer outra EA mais séria.
Obrigado a todos vocês.
ign...
Primeiro, a fim de obter a descrição do erro, faça o seguinte
após o link #propriedade adicione a linha
#link da propriedade "http://www.elihayun.com"
#incluir
agora para verificar o erro, faça isso
if (err != 0)
{
Print("Error # ", err, " ", ErrorDescription(err));
}Para seu problema, não consigo pensar em outro problema. Talvez você esteja usando outro RefreshRates() Tente comentá-los
// RefreshRates()
Primeiro, a fim de obter a descrição do erro, faça o seguinte
após o link #propriedade adicione a linha
#link da propriedade "http://www.elihayun.com"
#incluir
agora para verificar o erro, faça isso
if (err != 0)
{
Print("Error # ", err, " ", ErrorDescription(err));
}[/PHP]
For your problem, I cannot think of another problem. Maybe u are using another RefreshRates() Try to comment them out
// RefreshRates()Aqui está o roteiro fora do roteiro:
2006.07.02 11:07:15 2006.01.04 12:00 eaButler EURUSD,H4: Error Description [#138]: requote
2006.07.02 11:07:15 2006.01.04 12:00 stdlib EURUSD,H4: loaded successfully
e aqui está o código:
[PHP]
last_ticket = OrderSend( Symbol(), OP_SELL, Lots, Slippage, Bid, 0.0, 0.0, c , magic_number, 0, Red);
if(último_ticket < 0)
{
rv = GetLastError();
Imprimir("Descrição do Erro [#"+ rv + "]: "+ ErrorDescription(rv));
}
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Hi
Estou recebendo a mensagem de erro inválida para o erro 130, ou seja
Eu imprimo meus valores e eles são os seguintes
2006.06.29 13:15:05 AUDUSD,H1: Detalhes do pedido: Preço de Venda : 0.731 ,CurrentBid : 0.731 ,stoploss : 0.7319 ,takeprofit : 0.7291 ,slippage : 2
Eu estou usando o seguinte para verificar meu sl e tp antes de fazer o pedido
if (StopLoss<=MarketInfo(Symbol(),MODE_STOPLEVEL)) StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL)+3;
if (TakeProfit<=MarketInfo(Symbol(),MODE_STOPLEVEL)) TakeProfit=2*(MarketInfo(Symbol(),MODE_STOPLEVEL)+3);
Às vezes a venda é feita da seguinte forma
2006.06.29 08:32:56 AUDUSD,H1: aberto #5976740 venda 0.01 AUDUSD a 0.7309 sl: 0.7324 tp: 0.7278 ok
Talvez minha verificação não esteja funcionando corretamente.
Alguma sugestão?