[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 909
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Ho bisogno di aiuto. Ho un Expert Advisor nel tutorial, ma funziona solo con un ordine di mercato, e voglio farlo funzionare con diversi, solo il commercio su diversi strumenti finanziari e aprire e chiudere ordini su di essi allo stesso tempo. Qui sotto ho buttato giù un esempio, ma ho rallentato su quello in cui il valore del primo ordine è assegnato alle variabili per gli ordini contabili. Come posso fare lo stesso per il secondo ordine (di un'altra coppia di valute)? E se voglio che non solo un ordine funzioni per queste coppie di valute ma per esempio, per un giorno l'indicatore ha mostrato diverse aperture ma la chiusura non ha ancora avuto luogo e 3 o 5 ordini sono aperti in coppia su queste due coppie di valute. Per favore, consigliate come implementare questo.
// Conteggio degli ordini
Symb1=SymbolN1(variabile esterna); // Nome dello strumento finanziario.
Symb2=SymbolN2(variabile esterna); // Nome dello strumento finanziario.
Total=0; // Numero di ordini
for(int i=1; i<=OrdersTotal(); i++) // Ciclo di ordini
{
if (OrderSymbol(i-1,SELECT_BY_POS)==true) // Se il seguente
{ // Analisi degli ordini:
if (OrderSymbol()!=Symb1 $$ OrderSymbol()!=Symb2)continue; // Non è il nostro strumento finanziario
if (OrderType()>1) // Ordine in sospeso catturato
{
Alert("Ordine in sospeso rilevato. Expert Advisor non funziona.");
return; // Exit start()
}
Total++; // Contatore di mercato. orders
if (Total>2) // Non più di due ordini
{
Alert("more than 2 market orders. Expert Advisor does not work.");
return; // Exit start()
}
Di seguito questo valore è impostato sulla variabile, per farci qualcosa alla seconda iterazione, dato che ci saranno 2 ordini (il secondo su un'altra coppia di valute) cambieranno i valori per il secondo ordine ma ho bisogno di impegnare le informazioni per il primo e il secondo ordine.
Ticket=OrderTicket(); // Numero dell'ordine selezionato.
Tip =OrderType(); // Tipo di ordine selezionato.
Price =OrderOpenPrice(); // Prezzo dell'ordine selezionato.
SL =OrderStopLoss(); // SL dell'ordine selezionato.
TP =OrderTakeProfit(); // TP dell'ordine selezionato.
Lot =OrderLots(); // Numero di lotti
Possiamo semplicemente usare le stesse variabili per il secondo ordine, solo con il prefisso 1?
Ticket1=OrderTicket(); // Numero dell'ordine selezionato.
Tip1 =OrderType(); // Tipo di ordine selezionato.
Price1 =OrderOpenPrice(); // Prezzo dell'ordine selezionato.
SL1 =OrderStopLoss(); // SL dell'ordine selezionato.
TP1 =OrderTakeProfit(); // TP dell'ordine selezionato.
Lot1 =OrderLots(); // Numero di lotti
}
}
ERR_LONGS_NOT_ALLOWED 4110 Le posizioni lunghe non sono permesse. Le proprietà degli esperti devono essere controllate.
ERR_SHORTS_NOT_ALLOWED 4111 Le posizioni corte non sono consentite. Le proprietà degli esperti devono essere controllate.
cosa intende per posizioni lunghe e corte, come sono?
Pensiero approssimativamente corretto.
Queste sono per la maggior parte variabili di tipo bool.
E può avere solo due valori:
vero (true) e falso (false).
Quindi, se il flag è impostato (valore true), significa che c'è un ordine, e se è cancellato (valore false), significa che non c'è nessun ordine.
I valori true e false non significano necessariamente presenza/assenza.
A volte falso significa che una condizione è presente , e vero significa che non c'è alcuna condizione.
Tutto dipende dalla logica del programma e dai criteri che il programmatore controlla.
In ogni caso, se si impostano questi flag da soli, si può specificare quale valore del flag (vero o falso)
corrisponderà a uno stato di dati o a un altro.
Allo stesso tempo, ci sono funzioni standard che restituiscono vero o falso a seconda del risultato della funzione.
Questi valori possono essere trovati nel riferimento della funzione.
cosa significano lungo e corto? come sono fatti?
Lungo = Lungo = Comprare
breve =Corto = Vendere
Grazie
Sto cercando uno script che chiuda un ordine solo quando la barra è sopra o sotto un livello specificato.
Naturalmente ci dovrebbe essere un'impostazione tf.
. Se ce n'è uno, datemi un link. Molte grazie in anticipo
Ho ordini di acquisto e di vendita che si aprono allo stesso prezzo per quasi 50-100 posizioni,
come dovrei fare per aprire un solo ordine, se non mi sbaglio - OrdersTotal()
Se sì, come devo usarla e dove devo metterla? Sento che senza questa funzione devo inserire tutta l'algebra
Ho ordini di acquisto e di vendita che si aprono allo stesso prezzo per quasi 50-100 posizioni,
come dovrei fare per aprire un solo ordine, se non mi sbaglio - OrdersTotal()
Se sì, come devo usarla e dove devo metterla? Sento che senza questa funzione devo inserire tutta l'algebra
Avresti dovuto allegare il tuo codice.
Ho ordini di acquisto e di vendita che si aprono allo stesso prezzo per quasi 50-100 posizioni,
come dovrei fare per aprire un solo ordine, se non mi sbaglio - OrdersTotal()
Se sì, come devo usarlo e dove devo metterlo? Sento che senza questa funzione devo inserire l'intera algebra
La funzione OrderSend() funziona con ogni tick (credo di sì). Per risolvere questo problema, è necessario creare una variabile prima della funzione di avvio, per esempio int H=0.
Più avanti il codice:
..........
se ( H==0)
{
OrderSend(bla bla bla);
}
H=1;
E non c'è bisogno dell'algebra. E OrdersTotal() è meglio non usarlo per i vincoli.