Questions des débutants MQL5 MT5 MetaTrader 5 - page 414
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
crache
perte possible de données due à la conversion de type .mq4 1697 29
type Doble à SL.
Le compilateur est strict de nos jours, cela devrait être comme ceci, MarketInfo retourne le type double
Le compilateur est strict de nos jours, cela devrait être comme ceci, MarketInfo retourne le type double
La variable "sumbol" est correcte, je la considère comme une variable dans le wrapper du modificateur.
Merci j'ai mis(int) et tout est bon.
Je ne sais pas comment j'ai fait avant ; mon expérience dans l'écriture d'EAs est de 21 jours)).
Je ne sais pas depuis combien de temps j'écris mes EA et je ne sais pas comment le faire correctement).
Leanid Aladzyeu:
Je ne sais plus comment je faisais pour écrire des EA (je les écris depuis 21 jours)). Et mon EA se hisse constamment au sommet des EA gratuites))
Eh bien, alors vous avez beaucoup de chance, jusqu'à la version 600, l'ancien MQL4 était horrible ;)) Veuillez m'envoyer le lien vers le conseiller expert MQL4.
Pour une raison quelconque, il y a une erreur sur la dernière ligne.
'}' - tous les chemins de contrôle ne renvoient pas une valeur Expert4.mq4
Toute fonction non vide doit se terminer par l'opérateur return.
Je regarde juste ce code à partir du tutoriel vidéo, mais il se peut que ce soit pour une ancienne version.
#include#include <stderror.mqh>
//+------------------------------------------------------------------+//|Expert4.mq4 |
//|Mikhail |
//||
//+------------------------------------------------------------------+
#property copyright "Mikhail"
#propriété lien ""
#propriété version "1.00"
#propriété stricte
int signal = 1 ;
int start()
{
si (signal == 1)
{
OrderSendX (Symbol(), OP_BUY, 0.2, Ask, 30, 0, 0, "Test", 123, 0, Blue) ;
}
retour(0) ;
}
//+------------------------------------------------------------------+
int OrderSendX (string symbol, int cmd, double volume, double price, int slippage,double stoploss,
double takeprofit,string comment=NULL,int magic=0,datetime expiration=0,color arrow_color=CLR_NONE)
{
int err = GetLastError() ;
err = 0 ;
bool exit_loop = false ;
int ticket = -1 ;
int Retry = 10 ;
int cnt = 0 ;
si (cmd == OP_BUY || cmd == OP_SELL)
{
while(!exit_loop)
{
ticket = OrderSend(symbol, cmd, volume, prix, slippage, stoploss, takeprofit, comment,magic, expiration, arrow_color) ;
err = GetLastError() ;
switch(err)
{
cas ERR_NO_ERROR :
exit_loop = true ;
pause ;
{ cas ERR_SERVER_BUSY :
cas ERR_NO_CONNECTION :
cas ERR_INVALID_PRICE :
cas ERR_OFF_QUOTES :
cas ERR_BROKER_BUSY :
cas ERR_TRADE_CONTEXT_BUSY :
cnt++ ;
pause ;
cas ERR_PRICE_CHANGED :
RefreshRates() ;
continuer ;
par défaut :
exit_loop +true ;
pause ;
}
si (cnt> Retry)
exit_loop = true ;
si (!exit_loop)
{
Sleep(1000) ;
RefreshRates() ;
}
sinon
{
si(err != ERR_NO_ERROR)
{
Print ("ERROR : " + err) ;
}
}
si(err == ERR_NO_ERROR)
{
OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES) ;
retour(ticket) ;
}
Print("Erreur : l'ouverture de l'ordre a échoué après" + cnt + "tentatives") ;
retour(-1) ;
}//while
}//if
}//exit
Ici....
}
}
retour(ticket) ;
}
Insérer le code correctement dans le forum
Pour une raison quelconque, il y a une erreur sur la dernière ligne.
'}' - tous les chemins de contrôle ne renvoient pas une valeur Expert4.mq4
Toute fonction non vide doit se terminer par l'opérateur return.
Je viens de voir ce code dans le tutoriel vidéo mais il se peut que ce soit pour des anciennes constructions.
#include#include <stderror.mqh>
//+------------------------------------------------------------------+//|Expert4.mq4 |
//|Mikhail |
//||
//+------------------------------------------------------------------+
#property copyright "Mikhail"
#propriété lien ""
#propriété version "1.00"
#propriété stricte
int signal = 1 ;
int start()
{
si (signal == 1)
{
OrderSendX (Symbol(), OP_BUY, 0.2, Ask, 30, 0, 0, "Test", 123, 0, Blue) ;
}
retour(0) ;
}
//+------------------------------------------------------------------+
int OrderSendX (string symbol, int cmd, double volume, double price, int slippage,double stoploss,
double takeprofit,string comment=NULL,int magic=0,datetime expiration=0,color arrow_color=CLR_NONE)
{
int err = GetLastError() ;
err = 0 ;
bool exit_loop = false ;
int ticket = -1 ;
int Retry = 10 ;
int cnt = 0 ;
si (cmd == OP_BUY || cmd == OP_SELL)
{
while(!exit_loop)
{
ticket = OrderSend(symbol, cmd, volume, prix, slippage, stoploss, takeprofit, comment,magic, expiration, arrow_color) ;
err = GetLastError() ;
switch(err)
{
cas ERR_NO_ERROR :
exit_loop = true ;
pause ;
{ cas ERR_SERVER_BUSY :
cas ERR_NO_CONNECTION :
cas ERR_INVALID_PRICE :
cas ERR_OFF_QUOTES :
cas ERR_BROKER_BUSY :
cas ERR_TRADE_CONTEXT_BUSY :
cnt++ ;
pause ;
cas ERR_PRICE_CHANGED :
RefreshRates() ;
continuer ;
par défaut :
exit_loop +true ;
pause ;
}
si (cnt> Retry)
exit_loop = true ;
si (!exit_loop)
{
Sleep(1000) ;
RefreshRates() ;
}
sinon
{
si(err != ERR_NO_ERROR)
{
Print ("ERROR : " + err) ;
}
}
si(err == ERR_NO_ERROR)
{
OrderSelect(ticket, SELECT_BY_TICKET,MODE_TRADES) ;
retour(ticket) ;
}
Print("Erreur : l'ouverture de l'ordre a échoué après" + cnt + "tentatives") ;
retour(-1) ;
}//while
}//if
}//exit
Insérer le code correctement dans le forum
Je suis encore en retard, je n'arrive pas à l'adapter.
C'est bon, quel navigateur utilisez-vous ? Essayez d'en changer. J'ai FFox. J'ai donné la réponse dans les commentaires du code à la toute fin.