[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 1095
![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
Non ho scritto subito un EA senza indicatori, non ci sono indicatori, solo ordini di acquisto e vendita e così via--- e poi i periodi che sono cambiati nel tester e il risultato finale è ancora nulla non capisco
Non si può dire nulla senza l'Expert Advisor stesso. Sto solo tirando a indovinare.
Cosa devo fare con Ilan6 per farlo iniziare a commerciare? Con quanti soldi comincia a funzionare e funziona anche con un centesimo?
Non ho scritto subito un EA senza indicatori, non ci sono indicatori, solo ordini di acquisto e vendita e così via--- e poi i periodi che sono cambiati nel tester e il risultato finale è ancora nulla non capisco
Sì, dovremmo guardare il codice stesso. Non ha nessuna strategia, in base ai cui calcoli apre e chiude gli ordini?
Può dirmi dov'è l'errore? Se c'è un ordine di mercato per vendere il nostro strumento finanziario, allora chiudilo e se non c'è un ordine di acquisto, allora apri un ordine di acquisto. Qui tutto è normale con la chiusura, ma li apre non una volta, ma ad ogni spunta.
//--------------------------------------------------------------------------------------------
extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
int sells=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
sells++;
}
}
if (sells==0)
{
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
//--------------------------------------------------------------------------------------------
Puoi dirmi dov'è l'errore? Se c'è un ordine di mercato per vendere il nostro strumento finanziario, allora chiudilo e se non c'è un ordine di acquisto, allora apri un ordine di acquisto. Qui tutto è normale con la chiusura, ma li apre non una volta ma ad ogni spunta.
//--------------------------------------------------------------------------------------------
extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
int sells=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
sells++;
}
}
if (sells==0)
{
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
//--------------------------------------------------------------------------------------------
O è meglio farlo? Se non ci sono ordini di vendita, non apriremo un ordine di acquisto.
extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------
Regola per l'esecuzione dell'istruzione for
Dimmi: è arrivato un tick, la condizione dell'operatore for è vera, il controllo è passato oltre - tutto questo accadrà durante un tick, cioè tutti questi operatori saranno eseguiti durante 1 tick oppure no.
extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------
O esattamente quali operatori saranno eseguiti durante questo tick? Tutti i precedenti o quali saranno eseguiti durante il prossimo tick? Spiegare...
Regola per l'esecuzione dell'istruzione for
Dimmi: è arrivato un tick, la condizione dell'operatore for è vera, il controllo è passato oltre - tutto questo accadrà durante un tick, cioè tutti questi operatori saranno eseguiti durante 1 tick oppure no.
O esattamente quali operatori saranno eseguiti durante questo tick? Tutti i precedenti o quali saranno eseguiti durante il prossimo tick? Spiegare...
La funzione start() viene eseguita quando arriva il primo tick. Se arrivano altri tick mentre la funzione è in esecuzione, saranno saltati.
La funzione di avvio sarà eseguita completamente secondo la sua logica
Regola di esecuzione degli statement for
Dimmi: è arrivato un tick, la condizione dell'operatore for è vera, il controllo è passato oltre - tutto questo accadrà durante un tick, cioè tutti questi operatori saranno eseguiti durante 1 tick oppure no.
extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------
O esattamente quali operatori saranno eseguiti durante questo tick? Tutti i precedenti o quali saranno eseguiti durante il prossimo tick? Spiegare...
L'ho capito. Tutti gli operatori saranno eseguiti se la condizione è esaurita.