Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 405

 
Leanid Aladzyeu:

Ecco il codice:

if(OrderStopLoss()>Ask+(TrailingStop+TrailingStep)*Point)

Non si considera la possibilità che OrderStopLoss() sia uguale a zero. E zero in ogni caso sarà inferiore all'espressioneAsk+(TrailingStop+TrailingStep)*Point, e la condizione restituirà false.

 
if((OrderStopLoss()>Ask+(TrailingStop+TrailingStep)*Point)||OrderStopLoss()==0)
Provatelo e vedete se funziona. Non sono entrato nel codice.
 

GrazieVitalii Ananev,Vladimir Zubov!

Sto scrivendo un EA basato sull'indicatore RSI. Il principio dell'EA sarà quello di aprire ordini in base all'indicatore ma anche di chiudere in base allo stesso indicatore (non conosco il prezzo di chiusura)

if(OrderType()==OP_BUY && irsa <=20 || irsa >=40 )

OrderClose(ticket,Lot,Ask,Slippage,Blue);

ritorno(0);

Questa condizione non è soddisfatta. Perché? (Apre e chiude immediatamente l'ordine, e così via nel ciclo).

Ecco la domanda principale. Il mio Expert Advisor lavorerà con un gran numero di ordini e ho bisogno di calcolare il prezzo medio, alto e basso per tutti gli ordini sul mercato, come faccio a trovare i prezzi di chiusura di tutti gli ordini per ottenere un profitto totale e altre operazioni simili?

 
Leanid Aladzyeu:

Come indicato nel riferimento dà un errore.

Sì!? E che tipo di errore ti dà? Cosa dice il compilatore?

 
Leanid Aladzyeu:

GrazieVitalii Ananev,Vladimir Zubov!

Sto scrivendo un EA basato sull'indicatore RSI. Il principio dell'EA sarà quello di aprire ordini in base all'indicatore ma anche di chiudere in base allo stesso indicatore (non conosco il prezzo di chiusura)

if(OrderType()==OP_BUY && irsa <=20 || irsa >=40 )

OrderClose(ticket,Lot,Ask,Slippage,Blue);

ritorno(0);

Questa condizione non è soddisfatta. Perché? (Apre e chiude immediatamente l'ordine, e così via nel ciclo).

Ecco la domanda principale. Il mio Expert Advisor lavorerà con un gran numero di ordini e ho bisogno di calcolare il prezzo medio, alto e basso per tutti gli ordini sul mercato.

Il prezzo di chiusura di una posizione non sarà noto finché la posizione non sarà chiusa. Dopodiché, potete trovare il prezzo di chiusura nella storia delle compravendite con la funzione OrderClosePrice().

Apre e chiude immediatamente la posizione, perché la condizione di chiusura è soddisfatta. Controllare la logica della condizione di chiusura. Prova a scriverlo in questo modo per cominciare:

if(OrderType()==OP_BUY && (irsa <=20 || irsa >=40))
{
  OrderClose(ticket,Lot,Ask,Slippage,Blue);

 return(0); 
}

Leggi il riferimento sulla priorità dei calcoli delle espressioni logiche.

"Devi calcolare il prezzo medio, alto e basso per tutti gli ordini nel mercato" - Scusa, di quale prezzo stiamo parlando? Il prezzo dell'ordine aperto? Il prezzo corrente di una coppia di valute? Il prezzo in cui il profitto totale di tutte le posizioni aperte sarà raggiunto senza alcuna perdita?

 
Tapochun:

Sì!? E che tipo di errore dà? Cosa dice il compilatore?

Scusa, nessun errore, ma il metodo di esempio non funziona per me (ottengo errori con la pesca a strascico).
 
Vitalii Ananev:

Il prezzo di chiusura della posizione non sarà noto finché la posizione non sarà chiusa. La funzione OrderClosePrice() può quindi essere trovata nella cronologia delle transazioni.

Apre e chiude immediatamente le posizioni, perché la condizione di chiusura è soddisfatta. Controllare la logica della condizione di chiusura. Prova a scriverlo in questo modo per cominciare:

Leggete l'aiuto sulla priorità dei calcoli delle espressioni logiche.

Bene, come essere in per esempio con una griglia, c'è bisogno di un TP totale o (e) il prezzo totale.

Forse c'è uno o più buffer dove il prezzo dovrebbe essere salvato o forse l'indicatore stesso ha un buffer dove viene salvato il prezzo aperto dell'ultimo ordine (e da lì si può prendere e salvare il prezzo nel nostro buffer globale)

 
Leanid Aladzyeu:

Se impostiamo una griglia, per esempio, avremo bisogno di un TP totale o (e) un prezzo totale.

Forse c'è uno o più buffer per salvare il prezzo o nell'indicatore stesso potrebbe esserci un buffer dove viene memorizzato il prezzo di apertura dell'ultimo ordine (e da lì possiamo prenderlo e salvarlo nel nostro buffer globale)

Vi consiglio di iniziare a studiare la lingua con il libro di testo Kovalev (potete trovarlo sul nostro sito). Naturalmente è un po' datato, ma in combinazione con la documentazione andrà bene!
 
Leanid Aladzyeu:

GrazieVitalii Ananev,Vladimir Zubov!

Sto scrivendo un EA basato sull'indicatore RSI. Il principio dell'EA sarà quello di aprire ordini in base all'indicatore ma anche di chiudere in base allo stesso indicatore (non conosco il prezzo di chiusura)

if(OrderType()==OP_BUY && irsa <=20 || irsa >=40 )

OrderClose(ticket,Lot,Ask,Slippage,Blue);

ritorno(0);

Questa condizione non è soddisfatta. Perché? (Apre e chiude immediatamente l'ordine, e così via nel ciclo).

Ecco la domanda principale. Se il tuo EA lavorerà con un gran numero di ordini e hai bisogno di calcolare il prezzo medio, alto e basso per tutti gli ordini sul mercato, come trovi il prezzo di chiusura di tutti gli ordini per ottenere un profitto totale e altre operazioni simili?

Stai cercando di chiudere un ordine di acquisto su un asc, se non capisci le cose elementari - leggi la documentazione.

O sei abituato alla regola del pollice?

 
Leanid Aladzyeu:

Se impostiamo una griglia, per esempio, avremo bisogno di un TP totale o (e) un prezzo totale.

Forse c'è uno o più buffer per salvare il prezzo o nell'indicatore stesso forse c'è un buffer dove viene memorizzato il prezzo di apertura dell'ultimo ordine (e da lì possiamo prenderlo e salvarlo nel nostro buffer globale)

Dovreste calcolare il prezzo medio aperto per tutte le posizioni. E sulla base di questo calcolare il Take Profit totale per tutte le posizioni. Il prezzo aperto delle posizioni è noto (OrderOpenPrice()). Sommate tutto e dividete per il numero di posizioni aperte.