Codici di errore

 

Ciao

Sto ricevendo il messaggio di errore invalid stops err 130 cioè.

Stampo i miei valori e sono i seguenti

2006.06.29 13:15:05 AUDUSD,H1: OrderDetails: SellPrice : 0.731 ,CurrentBid : 0.731 ,stoploss : 0.7319 ,takeprofit : 0.7291 ,slippage : 2

Sto usando il seguente per controllare i miei sl e tp prima di piazzare l'ordine

/

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

A volte la vendita va a buon fine come la seguente

2006.06.29 08:32:56 AUDUSD,H1: open #5976740 sell 0.01 AUDUSD at 0.7309 sl: 0.7324 tp: 0.7278 ok

Forse il mio controllo degli stop non funziona correttamente.

Qualche suggerimento?

 

Penso che l'errore risieda nel modo in cui stai piazzando i tuoi ordini. Se stai usando ordini stop, allora i tuoi ordini sono troppo vicini al prezzo di mercato. In genere, il tuo stop di acquisto dovrebbe essere almeno "MarketInfo(Symbol(),MODE_STOPLEVEL)" a pip di distanza dall'attuale ask.

Se stai piazzando ordini di stop, assicurati di usare RefreshRates() e poi piazza gli ordini alla distanza richiesta. Per i mercati in rapido movimento, potrebbe ancora non funzionare e dovrai piazzare gli ordini più lontano.

Spero che questo aiuti.

 

è un acquisto/vendita non stop

Ciao

Grazie ma non è uno stop è un trade - buy/sell, proverò 2*MarketInfo(Symbol(),MODE_STOPLEVEL)

 
cardio:
Ciao

Ricevo il messaggio di errore invalid stops err 130 cioè.

Stampo i miei valori e sono i seguenti

2006.06.29 13:15:05 AUDUSD,H1: OrderDetails: SellPrice : 0.731 ,CurrentBid : 0.731 ,stoploss : 0.7319 ,takeprofit : 0.7291 ,slippage : 2

Sto usando il seguente per controllare i miei sl e tp prima di piazzare l'ordine

/

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

A volte la vendita va a buon fine come la seguente

2006.06.29 08:32:56 AUDUSD,H1: open #5976740 sell 0.01 AUDUSD at 0.7309 sl: 0.7324 tp: 0.7278 ok

Forse il mio controllo degli stop non funziona correttamente.

Qualche suggerimento?

Forse stai usando "+ 3" sia in acquisto che in vendita. In vendita devi mettere "-3" per renderlo un prezzo valido

 

questo non è il fastidio

Sto cominciando a pensare che sia interbankfx che cerca di impedire lo scalping quando il mercato è stretto. Funziona quando il mercato non è stretto - ancora è confuso come una volta che uno sl e tp sono maggiori poi MarketInfo(Symbol(),MODE_STOPLEVEL) dovrebbe aprire il commercio.

Comunque ecco il codice che 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);

}

}

 

Aiuto necessario - Errore 138 apertura ordini

Ciao!

Come potete vedere, sono un novellino in questo forum. Sono Ignacio, dall'Argentina. E sto cercando di sviluppare un semplice EA.

Penso che la strategia sia "pronta". Ma quando eseguo il backtest, non ci sono ordini aperti. Ho stampato alcune informazioni di debug e le condizioni sono OK. L'errore lanciato dalla funzione OrderSend è 138.

Il codice è il seguente:

RefreshRates();

OrderSend( Symbol(), OP_BUY, Lots, Slippage, Ask, 0.0, 0.0, c , magic_number, 0, Blue);

Qualcuno può spiegarmi cosa c'è che non va?

Grazie a tutti.

ign...

 
ignacio:
Ciao!

Bene, come potete vedere, sono un novellino in questo forum. Sono Ignacio, dall'Argentina. E sto cercando di sviluppare un semplice EA.

Penso che la strategia sia "pronta". Ma quando eseguo il backtest, non ci sono ordini aperti. Ho stampato alcune informazioni di debug e le condizioni sono OK. L'errore lanciato dalla funzione OrderSend è 138.

Il codice è il seguente:

RefreshRates();

OrderSend( Symbol(), OP_BUY, Lots, Slippage, Ask, 0.0, 0.0, c , magic_number, 0, Blue);

Qualcuno può spiegarmi cosa c'è che non va?

Grazie a tutti.

ignorare...

L'errore 138 significa che c'è stato un requote. Hai provato a usare un valore di pip più grande per lo slippage, qualcosa come tra 3 e 5?

 

Penso che non esista il problema del requote in backtesting. Il problema, secondo me, si verifica a causa dei "RefreshRates" che forse in backtesting possono causare un problema di requote. Considerate questo

se (!isTesting()) RefreshRates();

 

Grazie per le vostre risposte,

Maji, ho provato alcuni valori di slippage in un ciclo e OrderSend mi dà lo stesso errore.

elihayun, ho aggiunto correttamente la tua condizione e ancora lo stesso errore.

Ho fatto molti test e nessun buon risultato

Qualche suggerimento? Voglio davvero finire questo per fare un altro EA più serio hehee.

Grazie a tutti

ign...

 

Per prima cosa, per ottenere la descrizione dell'errore fate come segue

dopo il link #property aggiungi la linea

#property link "http://www.elihayun.com"

#include

ora per controllare l'errore fai così

int err = GetLastError();

if (err != 0)

{

Print("Error # ", err, " ", ErrorDescription(err));

}

Per il tuo problema, non riesco a pensare a un altro problema. Forse stai usando un altro RefreshRates() Prova a commentarlo

// RefreshRates()

 
elihayun:
Per prima cosa, per ottenere la descrizione dell'errore fare quanto segue

dopo il link #property aggiungere la linea

#proprietà link "http://www.elihayun.com"

#include

ora per controllare l'errore fate così

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

Ecco l'out of script:

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

ed ecco il codice:

[PHP]

last_ticket = OrderSend( Symbol(), OP_SELL, Lots, Slippage, Bid, 0.0, 0.0, c , magic_number, 0, Red);

if(last_ticket < 0)

{

rv = GetLastError();

Print("Descrizione dell'errore [#"+ rv + "]: " + ErrorDescription(rv));

}

Motivazione: