Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 414
![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
sputa
possibile perdita di dati dovuta alla conversione del tipo .mq4 1697 29
tipo Doble a SL.
Il compilatore è rigoroso al giorno d'oggi, dovrebbe essere così, MarketInfo restituisce il tipo double
Il compilatore è rigoroso al giorno d'oggi, dovrebbe essere così, MarketInfo restituisce il tipo double
La variabile "sumbol" è corretta, ce l'ho come variabile nel wrapper del modificatore.
Grazie ho messo(int) e tutto va bene.
Non so come ho fatto prima; la mia esperienza nello scrivere EAs è di 21 giorni))
Non so da quanto tempo scrivo i miei EA e non so come farlo correttamente).
Leanid Aladzyeu:
Non so come facevo a scrivere gli EA (li ho scritti per 21 giorni)). E il mio EA si sta persistentemente facendo strada verso la cima degli EA gratuiti))
Beh, allora sei molto fortunato, fino alla versione 600 il vecchio MQL4 era orribile )) Per favore, mandami il link al MQL4 Expert Advisor.
Per qualche motivo dà un errore sull'ultima riga.
'}' - non tutti i percorsi di controllo restituiscono un valore Expert4.mq4
Ogni funzione non vuota dovrebbe finire con l'operatore di ritorno.
Sto solo guardando questo codice dal video tutorial, ma potrebbe essere per una vecchia build.
#include#include <stderror.mqh>
//+------------------------------------------------------------------+//|Esperto4.mq4 |
//|Mikhail |
//||
//+------------------------------------------------------------------+
#proprietà copyright "Mikhail"
#proprietà link ""
#proprietà versione "1.00"
#proprietà rigorosa
segnale int = 1;
int start()
{
se (segnale == 1)
{
OrderSendX (Symbol(), OP_BUY, 0.2, Ask, 30, 0, 0, 0, "Test", 123, 0, Blue);
}
ritorno(0);
}
//+------------------------------------------------------------------+
int OrderSendX (simbolo stringa, int cmd, doppio volume, doppio prezzo, int slippage, doppio stoploss,
double takeprofit,string comment=NULL,int magic=0,datetime expiration=0,color arrow_color=CLR_NONE)
{
int err = GetLastError();
errare = 0;
bool exit_loop = false;
int ticket = -1;
int Retry = 10;
int cnt = 0;
se (cmd == OP_BUY || cmd == OP_SELL)
{
mentre(!exit_loop)
{
ticket = OrderSend(symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment,magic, expiration, arrow_color);
err = GetLastError();
interruttore(err)
{
caso ERR_NO_ERROR:
exit_loop = true;
pausa;
{ caso ERR_SERVER_BUSY:
caso ERR_NO_CONNECTION:
caso ERR_INVALID_PRICE:
caso ERR_OFF_QUOTES:
caso ERR_BROKER_BUSY:
caso ERR_TRADE_CONTEXT_BUSY:
cnt++;
pausa;
caso ERR_PRICE_CHANGED:
RefreshRates();
continuare;
default:
exit_loop +true;
pausa;
}
se (cnt> Riprova)
exit_loop = true;
se (!exit_loop)
{
Dormire(1000);
RefreshRates();
}
else
{
se(err != ERR_NO_ERROR)
{
Stampa ("ERRORE: " + err);
}
}
se(err == ERR_NO_ERROR)
{
OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES);
return(ticket);
}
Print("Error: order open failed after" + cnt + "atempts");
ritorno(-1);
}//while
}//if
}//exit
Qui....
}
}
return(ticket);
}
Inserire correttamente il codice nel forum
Per qualche motivo dà un errore sull'ultima riga.
'}' - non tutti i percorsi di controllo restituiscono un valore Expert4.mq4
Ogni funzione non vuota dovrebbe finire con l'operatore di ritorno.
Ho appena visto questo codice nel video tutorial ma potrebbe essere per vecchie build.
#include#include <stderror.mqh>
//+------------------------------------------------------------------+//|Esperto4.mq4 |
//|Mikhail |
//||
//+------------------------------------------------------------------+
#proprietà copyright "Mikhail"
#proprietà link ""
#proprietà versione "1.00"
#proprietà rigorosa
segnale int = 1;
int start()
{
se (segnale == 1)
{
OrderSendX (Symbol(), OP_BUY, 0.2, Ask, 30, 0, 0, 0, "Test", 123, 0, Blue);
}
ritorno(0);
}
//+------------------------------------------------------------------+
int OrderSendX (simbolo stringa, int cmd, doppio volume, doppio prezzo, int slippage, doppio stoploss,
double takeprofit,string comment=NULL,int magic=0,datetime expiration=0,color arrow_color=CLR_NONE)
{
int err = GetLastError();
errare = 0;
bool exit_loop = false;
int ticket = -1;
int Retry = 10;
int cnt = 0;
se (cmd == OP_BUY || cmd == OP_SELL)
{
mentre(!exit_loop)
{
ticket = OrderSend(symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment,magic, expiration, arrow_color);
err = GetLastError();
interruttore(err)
{
caso ERR_NO_ERROR:
exit_loop = true;
pausa;
{ caso ERR_SERVER_BUSY:
caso ERR_NO_CONNECTION:
caso ERR_INVALID_PRICE:
caso ERR_OFF_QUOTES:
caso ERR_BROKER_BUSY:
caso ERR_TRADE_CONTEXT_BUSY:
cnt++;
pausa;
caso ERR_PRICE_CHANGED:
RefreshRates();
continuare;
default:
exit_loop +true;
pausa;
}
se (cnt> Riprova)
exit_loop = true;
se (!exit_loop)
{
Dormire(1000);
RefreshRates();
}
else
{
se(err != ERR_NO_ERROR)
{
Stampa ("ERRORE: " + err);
}
}
se(err == ERR_NO_ERROR)
{
OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES);
return(ticket);
}
Print("Error: order open failed after" + cnt + "atempts");
ritorno(-1);
}//while
}//if
}//exit
Inserire correttamente il codice nel forum
Sono di nuovo in ritardo, non riesco ad adattarlo.
Va bene, che browser stai usando? Prova a cambiare con un altro. Ho FFox. Ho dato la risposta nei commenti del codice alla fine.