[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 174

 

Questa è l'area in cui l'ordine a mercato viene attivato se il limite non può essere impostato. Forse è qui che si trova il problema? Ha funzionato nel tester :(

ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,timecl,blue);
if(ticket<1){// gestione degli errori
err=GetLastError();
se(err==147){// timeout
Err147=true;
ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,0,Blue);
se(biglietto>0){
WriteOrder(ticket,timecl);
}else{
err=GetLastError();
se(err==130){
se(Set_order_from_market){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
se(biglietto<1){
err=GetLastError();
Print("Errore di impostazione dell'ordine dal mercato # ",err,
" Tipo di ordine = COMPRA ",
"Prezzo aperto =",Ask,
" Prezzo = ",Ask,
" Stop Loss = ",sll,
" TakeProfit = ",tpp);
}
}else{
}
}
}
}
se(err==130){
se(Set_order_from_market){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
se(biglietto<1){
err=GetLastError();
Print("Errore di impostazione dell'ordine dal mercato # ",err,
" Tipo di ordine = COMPRA ",
"Prezzo aperto =",Ask,
" Prezzo = ",Ask,
" Stop Loss = ",sll,
" TakeProfit = ",tpp);
}
}else{
}
}
Print("4 Errore di impostazione dell'ordine # ",err);
}
}
}
}
 

messo all'inizio della funzione
sll = NormalizeDouble (sll, MarketInfo( Symbol (), MODE_DIGITS)); tpp = NormalizeDouble (tpp, MarketInfo( Symbol (), MODE_DIGITS))

 
alsu:

mettere
sll = NormalizeDouble (sll, MarketInfo( Symbol (), MODE_DIGITS)); tpp = NormalizeDouble (tpp, MarketInfo( Symbol (), MODE_DIGITS));



Stabilimenti come questo. Sfortunatamente, non sono troppo esperto del codice...

se(typ>0){
se(CountOpOrd(4,magic)<1){
if(buy!=0){
se(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){// gestione degli errori
err=GetLastError();
if(err==147){// disabilita il tempo di scadenza
Err147=true;
ticket=OrderSend(Symbol(),4,lot,buy,3*mno,sll,tpp,NULL,magic,0,Blue);
se(biglietto>0){
WriteOrder(ticket,timecl);
}else{
err=GetLastError();
se(err==130){
se(Set_order_from_market){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
se(biglietto<1){
err=GetLastError();
Print("Errore di impostazione dell'ordine dal mercato # ",err,
" Tipo di ordine = COMPRA ",
"Prezzo aperto =",Ask,
" Prezzo = ",Ask,
" Stop Loss = ",sll,
" TakeProfit = ",tpp);
}
}else{
}
}
}
}
se(err==130){
se(Set_order_from_the_market){
RefreshRates();
ticket=OrderSend(Symbol(),0,lot,Ask,3*mno,sll,tpp,NULL,magic,0,Blue);
se(biglietto<1){
err=GetLastError();
Print("Errore di impostazione dell'ordine dal mercato # ",err,
" Tipo di ordine = COMPRA ",
"Prezzo aperto =",Ask,
" Prezzo = ",Ask,
" Stop Loss = ",sll,
" TakeProfit = ",tpp);
}
}else{
}
}
Print("4 Errore di impostazione dell'ordine # ",err);
}
}
}
}
 

La logica è confusa, non si riesce a capire.

Questa linea non fa assolutamente nulla:

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

Chi l'ha scritto deve capirlo prima :))

In generale, mettete le mie linee appena prima di aprire gli ordini. Questo non peggiorerà comunque la situazione, ma se l'errore persiste, sarà ovvio che è stato causato da una violazione del livello di stop, perché 130 è l'unico modo per fare un errore.

 
alsu:

La logica è confusa, non si riesce a capire.

Questa linea non fa assolutamente nulla:

Chi l'ha scritto deve capirlo prima :))

In generale, mettete le mie linee appena prima di aprire gli ordini. Questo non peggiorerà comunque la situazione, ma se l'errore persiste, sarà ovvio che è stato causato da una violazione del livello di stop, perché 130 è l'unico modo per fare un errore.

https://www.mql5.com/ru/code/10111 - qui. Forse c'è una risposta qui...
 

Il tipster è un po' storto...

È meglio che tu chieda all'autore, mostrami la mia linea, che non fa niente. xrust è un uomo esperto, capirà come correggerlo.

 
alsu:

Un po' storto EA...

È meglio che tu chieda all'autore, mostrami la mia linea, che non fa niente. xrust è un uomo esperto, capirà come modificarlo.


Almeno lui lo fa :)

Ci sono dei bug, ma non fatali...

xrust non si fa sentire :(

Io stesso sto aspettando una versione senza bug. Forse lo metterà fuori...

 
Come si chiama il segnale di ALLERTA? Perché i suoi suoni di bip e gorgoglio quando il segnale è dato e non riesco a trovarlo ((...)
 
Rossi:
Come si chiama la tabella ALERT? Perché i suoi suoni di bip e gorgoglio quando il segnale è dato e non riesco a trovarlo ((...
Allarme()
 
Potete dirmi per favore come selezionare un ordine chiuso? Il punto è che voglio chiudere una posizione(se l'ho aperta manualmente e la posizione sarà sempre una - questo è il massimo), quindi la musica suonerà se l'ordine era in più, poi l'altra se era in meno, poi la terza se era niente. Puoi inserire le condizioni attraverso OrderProfit, ma non so come rimuovere l'ultimo ordine chiuso dalla storia.