Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 236

 
s4sha45:

Ciao a tutti, ho appena iniziato a imparare a scrivere un semplice robot di trading dagli esempi dei video di YouTube. Voglio scrivere uno script per aprire il primoordine di acquisto, e deve aprirsi se non ho altri ordini aperti, lo script ha scritto questo, ma l'ordine non si apre, per favore consigliate dove è l'errore!

<

void OnTick()

{

se(OP_SELL==0 && OP_BUY==0)

int ticket=OrderSend(Symbol(),OP_BUY,Lot1,Ask,Slippage,StopLoss,TakeProfit, "My order",MagicNumber,0,clrGreen);

>

Lei ha scritto (testualmente in russo):

Se 1 è uguale a 0 e 0 è uguale a 0, allora aprite una posizione.

 
Artyom Trishkin:

Lei ha scritto (testualmente in russo):

Se 1 è uguale a 0 e 0 è uguale a 0, allora aprite una posizione.

Nel video l'autore ha scritto questa linea come if (b==0&& s==0) e ha funzionato. e prima non ha inserito nessuna variabile b e s. forse la versione è vecchia. se questo è sbagliato, allora come dovrebbe essere la linea che determina che non ho ordini ora?
 
bool FindOrder(int eType, int eMagic, string eSymbol)
   {
   for(int i=OrdersTotal()-1; i>=0; i--)
      {
      if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if(OrderCloseTime()>0) continue;
      if(OrderSymbol()!=eSymbol) continue;
      if(OrderMagicNumber()!=eMagic) continue;
      if(OrderType()!=eType) continue;
      return(true);
      }
   return(false);
   }
bool b=FindOrder(OP_BUY,Magic,Symbol());
if(b)
   {
   
   }
 
s4sha45:

Ciao a tutti, ho appena iniziato a imparare come scrivere un semplice robot di trading dagli esempi dei video di YouTube. Voglio scrivere uno script per aprire il primoordine di acquisto, e deve aprirsi se non ho altri ordini aperti, lo script ha scritto questo, ma l'ordine non si apre, per favore ditemi dove è l'errore!

<

void OnTick()

  {

  if (OrdersTotal()==0)   int ticket=OrderSend(Symbol(),OP_BUY,Lot1,Ask,Slippage,StopLoss,TakeProfit,"My order",MagicNumber,0,clrGreen);

  }

Se hai bisogno di aprire un ordine quando non ci sono ordini di acquisto, vendita, stop o limite.

OrdersTotal()
Gli ordini chiusi non sono presi in considerazione.
 
Александр:

Se hai bisogno di aprire un ordine quando non ci sono ordini di acquisto, vendita, stop o limite.

Gli ordini chiusi non sono presi in considerazione.
Grazie!
 

Buona sera, ho una domanda: ho bisogno di confrontare i prezzi di mercato su ogni tick con i prezzi di un certo file csv (7 colonne), e gli ordini sono raggruppati in serie e il numero di ordini in ogni serie può essere arbitrario. Voglio capire cosa sarebbe più veloce: spendere tempo nell'inizializzazione per creare un array con tutti i dati su ogni ordine, e poi iterare sull'array al tick, o aprire il file e copiare tutto nel cursore ogni volta. Mi chiedo qual è il tempo approssimativo per accedere al file e all'array, quanto tempo guadagnerò. Grazie!

 
Karomos:

Buona sera, ho una domanda: ho bisogno di confrontare i prezzi di mercato su ogni tick con i prezzi di un certo file csv (7 colonne), e gli ordini sono raggruppati in serie e il numero di ordini in ogni serie può essere arbitrario. Voglio capire cosa sarebbe più veloce: spendere tempo nell'inizializzazione per creare un array con tutti i dati su ogni ordine, e poi iterare sull'array al tick, o aprire il file e copiare tutto nel cursore ogni volta. Mi chiedo qual è il tempo approssimativo per accedere al file e all'array, quanto tempo guadagnerò. Grazie!

Quello che hai scritto non è molto chiaro, ma accedere alla memoria è sicuramente più veloce che leggere da un file.

 

Salve. Potete dirmi se è possibile chiamare PROGRAMMATICAMENTE la finestra dei parametri EA?

Ilproblema è che i parametri possono essere inizializzati solo con delle costanti e voglio prima calcolarli con un certo algoritmo.

Ho i livelli BUY_STOP e SELL_STOP nei miei parametri EA. In realtà, l'Expert Advisor può calcolare questi livelli da solo nella maggior parte dei casi, ho solo bisogno di controllare la loro correttezza.

Pertanto, voglio che il mio EA calcoli questi livelli all'avvio e li metta nei parametri e visualizzi la finestra dei parametri. Se sono corretti, premo OK e l'EA continua il suo normale funzionamento. Se il mio Expert Advisor ha identificato erroneamente i livelli, li correggo con i valori corretti. Se è impossibile visualizzare la finestra dei parametri in modo programmatico, allora consigliatemi se possiamo in qualche modo inizializzare i parametri (ho scritto una funzione per il loro calcolo) PRIMA di visualizzare la finestra dei parametri dell'EA.

 

Cari esperti!

Può dirmi come trovare un mandato?

La situazione è la seguente:

- il mio EA sta aprendo 2 ordini allo stesso tempo. SL è lo stesso, TP non è impostato.

- E poi, in certe circostanze, il mio EA chiuderà il primo ordine e devo correggere SL nel secondo.

La domanda è come trovare il secondo ordine?

Il problema è che ci possono essere diverse coppie aperte. Ma il tempo di apertura è diverso per ogni coppia.


Per come la vedo io, ci possono essere molte varianti. Come renderlo più facile e corretto?

Non voglio scrivere il biglietto nei commenti perché il broker potrebbe cancellarlo.

In realtà, al secondo ordine si può dare un'altra magia. Ma questo non risolve il problema.

Possiamo cercare per tempo o per prezzo di apertura. Ma dov'è la garanzia che il secondo ordine sarà aperto allo stesso prezzo?

Cosa consigliate?

 

L'indicatore di MT5 disegna una linea in due colori.

I valori della linea sono nello stesso buffer.

C'è un modo per identificare il colore della linea quando si richiedono valori all'indicatore?

Motivazione: