Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 383
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
Se non è esterno - c'è PositionClose
Puoi anche aprire una posizione con lo stesso volume nella direzione opposta, che risulterà in una chiusura.
Nella funzione OnTick impostiamo due variabili locali di tipo bool: buyExist = false e sellExist = false.
Quando arriva un nuovo tick, si controlla se ci sono ordini che appartengono a questo EA. Se c'è un ordine di vendita, sellExist = true e la stessa cosa con l'ordine di acquisto. E poi si controlla se buyExist = true - non aprire un ordine di acquisto. Lo stesso vale per la vendita. Questo è tutto.
A cosa ci servono le variabili inutili se controlliamo comunque se ci sono posizioni aperte?
Abbiamo controllato se ci sono posizioni Buy - nessun Buy aperto, ne abbiamo aperto uno. Perché abbiamo bisogno di variabili?
Perché abbiamo bisogno di variabili extra se stiamo comunque controllando le posizioni aperte?
Controlliamo per acquistare - nessun acquisto aperto - ne apriamo uno, controlliamo per vendere - nessuna vendita aperta - ne apriamo uno. Perché abbiamo bisogno di variabili?
Perché abbiamo bisogno di variabili extra se stiamo comunque controllando le posizioni aperte?
Controlliamo per acquistare - nessun acquisto aperto - ne apriamo uno, controlliamo per vendere - nessuna vendita aperta - ne apriamo uno. Perché abbiamo bisogno di variabili?
Pensavo che sarebbe stato qualcosa come OrderTotal, ma qui bisogna fare il rimbalzo e scrivere la funzione per riconoscere gli ordini?
Potresti farlo. L'ho solo immaginato nella mia testa come una funzione di controllo separata, dove le bandiere sono passate per riferimento. In questo caso, la mia variante, esegue solo una funzione - controllare gli ordini, non controllare+aprire. Sarebbe più facile estendere il programma. In breve - una funzione - un'azione.
Bene, il controllo è una chiamata di funzione che restituisce una bandiera:
if(!function_check_open_position(symbol, OP_BUY,magic)) function_open_position(symbol,OP_BUY,Lots,stop_loss,take_profit,magic,comment);
if(!Function_check_open_position(symbol,OP_SELL,magic)) Function_open_position(symbol,OP_SELL,Lots,stop_loss,take_profit,magic,comment);
Pensavo che sarebbe stato qualcosa come OrderTotal.
nessuna funzione del genere?
Come si può fare senza sforzarsi troppo? Potresti avere un mucchio di ordini da un mucchio di Expert Advisors su un mucchio di simboli contemporaneamente. E tu vuoi che il tuo EA elabori solo i tuoi ordini, vero?
è un'aggiunta iniziale al robot principale. il robot principale ha sempre due ordini aperti in entrambe le direzioni (il robot principale li raccoglie, ma il robot principale stesso non può partire. Quando il robot principale finisce una delle direzioni la chiude) e poi questo EA dovrebbe aprire di nuovo un ordine nella direzione del mercato dove non c'è nessun ordine.
dobbiamo solo aggiungere le condizioni di apertura dell'ordine
extern double Lots = 1.00;
extern int MagicNumb = 698541; //Magic
int inizio ()
{
if(OrdersTotal() == 0 && ********** )
OrderSend("USDCHF",OP_BUY,Lots,Ask,0,0,0, "5891",MagicNumb,0,Red);
if (OrdersTotal() == 0 && ***********)
OrderSend("USDCHF",OP_SELL,Lots,Bid,0,0,0, "58892",MagicNumb,0,Red);
}
è un'aggiunta iniziale al robot principale. il robot principale ha sempre due ordini aperti in entrambe le direzioni (il robot principale li raccoglie, ma il robot principale stesso non può partire. Quando il robot principale finisce una delle direzioni la chiude) e poi questo EA dovrebbe aprire di nuovo un ordine nella direzione del mercato in cui non c'è nessun ordine.