Códigos de erro

 

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?

 

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)

 
cardio:
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...

 
ignacio:
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?

 

Acho que não existe tal coisa como a requalificação no backtest. O problema, para minha opinião, está acontecendo por causa das "RefreshRates" que talvez no backtest possam causar um problema de requote. Considere isto

se (!isTesting()) RefreshRates();

 

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

int err = GetLastError();

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()

 
elihayun:
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

int err = GetLastError();

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));

}

Razão: