Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 1067
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
À l'aide, s'il vous plaît ! Il y a 2 fichiers : un indicateur et un Expert Advisor. Comment faire correctement référence à la fonction dans l'indicateur via #include ? iCustom ne convient pas pour diverses raisons. C'est ce que j'ai écrit dans l'indicateur :
Et voici ce que j'ai écrit dans le conseiller expert :
Mais pour une raison quelconque, le conseiller expert ne fonctionne pas, l'indicateur n'apparaît pas dans le graphique des prix pendant les tests. L'ai-je écrit correctement, et s'il y a une erreur, où se trouve-t-elle ?
Tuta.
Je n'en ai pas. Mais il y a bien un fichier quelque part, j'en tire les informations enregistrées.
S'il vous plaît aidez-moi à compiler à mt4
FileClose' - l'expression de type 'void' est illégale TickToCVS~.mq4 84 12
Je n'en ai pas. Mais il y a bien un fichier quelque part et j'en tire les informations enregistrées.
C'est la valeur EMPTY_VALUE
Cherchez où il apparaît.
Ma capture d'écran montre que le menu provient de MetaEditor et votre capture d'écran provient de MT.
Bonjour, ma question est la suivante : je ne peux pas modifier une commande. Il y a deux aspects à cela, je ne comprends pas les mathématiques de la modification, alors s'il vous plaît expliquez-moi.
De la façon dont je le vois, SL= IF ORDERSELEKT,Bid-ORDERSTOPLOS*POINT,DIGITS
le deuxième aspect. appris de la vidéo XBMS
comment je n'ai pas essayé de changer les valeurs des variables dans le testeur eror 130 pas correct stop loss et d'autres conneries du genre
2016.06.28 21:42:23.402 2016.06.23 00:00 trade RSI inputs : Lots=0.1 ; Slippage=5 ; StopLoss=10 ; TakeProfit=30 ; RSIPeriod=7 ; Magic=1087 ;
bien qu'il y ait une multiplication à partir des chiffres et de la fonction sur le cas d'une mauvaise SL
extern double Lots = 0.1 ;
extern int Slippage = 10 ;
extern int StopLoss = 10 ;
extern int TakeProfit =30 ;
extern int RSIPeriod = 7 ;
extern int Magic =1087 ;
double MaRSI ;
int TP,SL ;
bool tfu ;
//+------------------------------------------------------------------+
//| Fonction d'initialisation de l'expert |
//+------------------------------------------------------------------+
int OnInit()
{
si(Chiffres == 3||Chiffres == 5)
{
Dérapage *= 10 ;
TakeProfit *= 10 ;
StopLoss *= 10 ;
}
return(INIT_SUCCEEDED) ;
}
//+------------------------------------------------------------------+
//| Fonction de désinitialisation experte |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
}
//+------------------------------------------------------------------+
//| fonction tick expert |
//+------------------------------------------------------------------+
void OnTick()
{
//+------------------------------------------------------------------+
//ouverture de la vente
//+------------------------------------------------------------------+
MaRSI=iRSI(Symbole(),0, RSIPeriod,PRICE_CLOSE,1) ;
si(CountTrades() <= 0&MaRSI<=30 )
{
if( SendOrder(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0, "test",Magic,0,Green))
{ int ticket = OrderTicket() ;
SL = NormalizeDouble( Ask - StopLoss*Point,Digits) ;
TP = NormalizeDouble( Ask + TakeProfit*Point,Digits) ;
ModifyOrder(ticket,OrderOpenPrice(),SL,TP,0,Black) ;
}
}// if(CountTrades <= 0&MaRSI>=70 )
//+------------------------------------------------------------------+
//ouverture de l'achat
//+------------------------------------------------------------------+
}//ONTICK
//+------------------------------------------------------------------+
//+compteur de commandes
//+------------------------------------------------------------------+
int CountTrades ()
{
int count = 0 ;
for(int i = OrdersTotal()-1;i>=0;i--)
{
if( OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)//si l'ordre est le nôtre
count++;//augmenter le compteur
}//select order by index
}// order.i===premier ordre.
return(count);//renvoie le nombre de commandes
}/// fonction
//+------------------------------------------------------------------+
//fonction de placement des commandes avec gestion des erreurs
//+------------------------------------------------------------------+
int SendOrder( string symbol,int cmd,double volume,double price,int slippage,double stoploss,
double takeprofit,string comment,int magic=0,date expiration=0,color arrow_color=CLR_NONE)
{
int err = GetLastError() ;
err =0 ;
bool exit_cikl = false ;
int ticket = -1 ;
int Retry = 10 ; //nombre de tentatives pour établir une commande
int cnt = 0 ; //compte des essais
if(cmd == OP_BUY || cmd == OP_SELL)
{
while(!exit_cikl)
{
ticket = OrderSend(symbol,cmd,volume,price,slippage,stoploss,takeprofit,comment,magic,expiration,arrow_color) ;
err= GetLastError() ;
switch(err)
{
cas ERR_NO_ERROR :
exit_cikl = 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 :
cas ERR_REQUOTE :
RefreshRates() ;
continuer ;
par défaut :
exit_cikl = true ;
pause ;
}// switch switch(err)
si(cnt > Retry)
exit_cikl = true ;
si(!exit_cikl)
{
Sleep(1000) ;
RefreshRates() ;
}//si nous ne sortons pas de la boucle if(!exit_cikl)
sinon
{
si(err != ERR_NO_ERROR)
{
Print("Erreur : " + IntegerToString(err)) ;
}// s'il y a toujours une erreur if(err != ERR_NO_ERROR)
}// OTHERWISE
if(err==ERR_NO_ERROR)
{
if( OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)==true)
retour(ticket) ;
}// if(err==ERR_NO_ERROR)
Print("Erreur d'ouverture de l'ordre après " + IntegerToString(cnt) + "tentatives") ;
retour(-1) ;
} //cycle while
}// si le type d'ordre est Achat ou Vente
retour(ticket) ;
}// Fonction SendOrder
//-------------------------------------------------------------------------------------------------------------
//fonction modifier l'ordre
//------------------------------------------------------------------------------------------------------------
ModifyOrder(int ticket,double price,double stoploss,double takeprofit,datetime expiration,colour arrow_color)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
prix = NormalizeDouble(prix,chiffres) ;
stoploss = NormalizeDouble(stoploss,Digits) ;
takeprofit = NormalizeDouble(takeprofit,Digits) ;
CheckValidStop(Symbol(),price,stoploss);//fonction permettant de modifier le stop minimum
int err = GetLastError() ;
err = 0 ;
int Retry = 10 ;
int cnt = 0 ;
bool exit_cikl = false ;
bool result ;
while(!exit_cikl)
{
result = OrderModify(ticket, price,stoploss,takeprofit,expiration, arrow_color) ;
err = GetLastError() ;
si(résultat == vrai)
{
Print("Commande #"+ IntegerToString(ticket), "modifiée avec succès") ;
retour (vrai) ;
}
switch(err)
{
cas ERR_NO_ERROR :
exit_cikl = 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 :
cas ERR_REQUOTE :
RefreshRates() ;
continuer ;
par défaut :
exit_cikl = true ;
pause ;
}// switch switch(err)
}// while(!exit_cikl)
si ( err != ERR_NO_ERROR)
{
Print("Erreur lors de la modification de la commande # " + IntegerToString(ticket)) ;
Print("Code d'erreur : " + IntegerToString(err)) ;
}
}//(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
sinon
{
Print("La sélection de la commande a échoué, ticket = " + IntegerToString(ticket)) ;
retour (faux) ;
}//si quelque chose ne va pas
retour (vrai) ;
}// fonction modifier
//----------------------------------------------------------------------------------------------------
//ChtckValidStop
//--------------------------------------------------------------------------------------------------
void CheckValidStop(string symbol,double price,double& sl)
{
si(sl==0)
retour ;
double min_stop_server = MarketInfo(symbol,MODE_STOPLEVEL)*MarketInfo(symbol,MODE_POINT) ;
si(MathAbs(prix-sl) <= min_stop_server)
{
si(prix>sl)
sl = prix - min_stop_server ;
autre sl = sl + min_stop_server ;
}// if(MathAbs(price-sl) <= min_stop_server)
sl = NormalizeDouble(sl,MarketInfo(symbol,MODE_DIGITS))
}/// fonction
VEUILLEZ ME CONSEILLER ! !!
Il y a deux ordres dans l'historique des transactions : 1) VENDRE № tic 415 STOPLOSS 1.1000 lot 0.01 2) VENDRE № tic 418 STOPLOSS 1.1000 lot 0.02
Je dois affecter les variables X=tick, Y=STOPLOSS et B=lot si le prix Asc est égal au STOPLOSS de l'ordre SELL. Comment affecter les premières valeurs au premier ordre, puis au second. Avec moi, il attribue toujours une valeur à la première commande.
VEUILLEZ ME CONSEILLER ! !!
Il y a deux ordres dans l'historique des transactions : 1) VENDRE № tic 415 STOPLOSS 1.1000 lot 0.01 2) VENDRE № tic 418 STOPLOSS 1.1000 lot 0.02
Je dois affecter les variables X=tick, Y=STOPLOSS et B=lot si le prix Asc est égal au STOPLOSS de l'ordre SELL. Comment affecter les premières valeurs au premier ordre, puis au second. Avec moi, il attribue toujours une valeur à la première commande.
Cette rubrique est destinée à aider ceux qui ont déjà écrit quelque chose, mais qui ne fonctionne pas tout à fait comme je le voudrais. Veuillez soumettre votre code afin que les autres personnes ici présentes puissent voir ce qui ne va pas et vous aider.
Et si vous voulez être écrit sur commande, c'est là que ça se passe.