Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 1003
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
Veuillez indiquer comment mettre en œuvre ce qui suit :
Il y a des lignes personnalisées sur le graphique, il y en a un nombre "n". Comment obtenir la valeur du prix lorsque le prix s'approche d'une des lignes ?
Merci d'avance !
Bonjour à tous ) aidez moi s'il vous plait - L'objectif est (si le prix est au-dessus de la "ligne" (100 pips) alors "acheter" ) ) comment l'exprimer (le prix est plus élevé de 100 pips à partir de n'importe quelle valeur) et aussi cette question : comment connaître le prix de la moyenne mobile en ce moment ?
Merci d'avance)
Bonjour à tous ) aidez moi s'il vous plait - L'objectif est (si le prix est au-dessus de la "ligne" (100 pips) alors "acheter" ) ) comment l'exprimer (le prix est plus élevé de 100 pips à partir de n'importe quelle valeur) et aussi cette question : comment connaître le prix de la moyenne mobile en ce moment ?
Merci d'avance)
Veuillez conseiller un nouvel arrivant sur la manière d'éviter de rouvrir un ordre, après qu'il ait été fermé, tout en conservant les conditions commerciales d'ouverture.
Par exemple : si la stochastique traverse le niveau 50 à la hausse, ouvrez un Achat. Fermer sur le renversement du stochastique, ou quand il atteint le niveau 80 ou sur le Take Profit. Mais les conditions commerciales pour ouvrir sont préservées ! C'est-à-dire que la stochastique reste au-dessus de 50 et l'achat est à nouveau ouvert !
double S_1=iStochastic(NULL,0,K,D,ralentissant,MODE_SMA,price_field,MODE_MAIN,0) ;
double S_2=iStochastic(NULL,0,K,D,ralentissant,MODE_SMA,price_field,MODE_MAIN,1) ;
si(S_1>50)
{
Opn_B=vrai ;
}
si(S_1<S_2||S_1>80)
{
Cls_B=vrai ;
}
J'insère des critères de transaction dans le schéma simple du conseiller expert, qui est présenté dans le tutoriel MQL. Veuillez indiquer quelle fonction utiliser pour éviter ce problème. Merci !
C'est la condition pour franchir le niveau 50 de bas en haut.
C'est la condition pour franchir le niveau 50 de bas en haut.
Bonjour, pourriez-vous me conseiller ? Je modifie les critères de transaction dans le conseiller expert présenté dans le tutoriel MQL4. Lorsque j'essaie de définir un stop loss sur Buy, le programme donne l'erreur 130 : wrong stops. Veuillez expliquer pourquoi ?
// Valeurs numériques pour M15
extern double StopLoss =0 ; // SL pour l'ordre en cours d'ouverture
extern double TakeProfit =0 ; // TP pour l'ordre en cours d'ouverture
extern int K = 5 ;
extern int D = 3 ;
extern int slowing = 3 ;
extern int price_field = 0 ;
extern int Level_1 = 80 ; // Niveau stochastique
extern int Level_2 = 20 ;
extern inttern Period_MA_2 = 31 ; // Période MA 2
extern double Rastvor =28.0 ; // Distance entre MA
extern double Lots =0.01 ; // Nombre fixe de lots.
extern double Prots =0.07 ; // Pourcentage de fonds libres
bool Work=true ; // Le conseiller expert fonctionnera.
string Symb ; // Nom de l'instrument financier
//--------------------------------------------------------------- 2 --
int start()
{
int
Niveau K,
Total, // Nombre de commandes dans la fenêtre
Tip=-1, // Type de commande sélectionné (B=0,S=1)
Ticket ; // Numéro de commande
double S_1,
S_2,
MA_1_t, // Valeur MA_1_t. Valeur actuelle de MA_1
MA_2_t, // Valeur. MA_2 courant MA_2_t valeur // Nombre de lots sélectionnés dans l'ordre
Lots, //Lots Quantité dans l'ordre actuellement sélectionné
Lts, //Nombre de lots dans un ordre ouvert
Min_Lot, // Nombre minimum de lots
Étape, // Étape de la modification de la taille du lot
Libre, // Fonds libres actuels
One_Lot, // Valeur d'un lot
Prix, // Prix de la commande sélectionnée
SL, // Prix SL de l'ordre sélectionné
TP ; // TP de l'ordre sélectionné
bool
Ans =false, // Réponse du serveur après la fermeture
Cls_B=false, // Critère de fermeture de l'achat
Cls_S=false, // Critère de fermeture Vendre
Opn_B=false, // Critère d'ouverture d'Achat
Opn__S=false ; // critère d'ouverture de Sell
//--------------------------------------------------------------- 3 --
//Prétraitement
if(Bars < Period_MA_2) // Pas assez de barres
{
Alert("Pas assez de barres dans la fenêtre, le conseiller expert ne fonctionne pas") ;
return ; // Quitter start()
}
if(Work==false) // Erreur critique.
{
Alert("Erreur critique. Le conseiller expert ne fonctionne pas.") ;
return ; // Sortie de start()
}
//--------------------------------------------------------------- 4 --
// Comptage des commandes
Symb=Symbol() ; // Nom de l'instrument financier.
Total=0 ; // Nombre de commandes
for(int i=1 ; i<=OrdersTotal() ; i++) // Boucle de commande
{
if(OrderSelect(i-1,SELECT_BY_POS)==true) // Si ce qui suit se produit
{ // Analyse de l'ordre :
if (OrderSymbol()!=Symb)continue ; // Pas notre instrument financier
if (OrderType()>1) // Nous avons un ordre en suspens
{
Alert("Ordre en attente détecté. Le conseiller expert ne fonctionne pas ;)
return ; // Exit()
}
Total++ ; // Compteur d'ordres de marché
if (Total>1) // Pas plus d'une commande
{
Alert("Plusieurs ordres de marché. Le conseiller expert ne fonctionne pas ;)
return ; // Exit()
}
Ticket=OrderTicket() ; // Numéro de commande sélectionné.
Tip =OrderType() ; // Type de la commande sélectionnée.
Prix =OrderOpenPrice() ; // Prix de l'ordre sélectionné.
SL =OrderStopLoss() ; // SL de l'ordre sélectionné.
TP =OrderTakeProfit() ; // TP de l'ordre sélectionné.
Lot =OrderLots() ; // Nombre de lots
}
}
//--------------------------------------------------------------- 5 --
// Critères commerciaux
S_1=iStochastic(NULL,0,K,D,ralentissement,MODE_SMA,price_field,MODE_MAIN,0) ;
S_2=iStochastic(NULL,0,K,D,ralentissant,MODE_SMA,price_field,MODE_MAIN,1) ;
si(S_1 > 50 && S_2 < 50)
{
Opn_B=vrai ;
}
if(S_1<S_2||(S_1 < 80 && S_2 > 80))
{
Cls_B=vrai ;
}
si(S_1 < 50 && S_2 > 50)
{
Opn_S=vrai ;
}
if(S_1>S_2||(S_1 > 20 && S_2 < 20))
{
Cls_S=vrai ;
}
//--------------------------------------------------------------- 6 --
// Fermer les commandes
while(true) // Fermez la boucle de commande.
{
if (Tip==0 && Cls_B==true) //Ouvrir un ordre d'achat.
{ //il y a un critère de fermeture
Alert("Essayer de fermer l'achat ",Ticket," ;)
RefreshRates() ; // Rafraîchir les données
Ans=OrderClose(Ticket,Lot,Bid,2) ; // Fermer l'achat
if (Ans==true) // Cela a marché :)
{
Alerte ("Ordre d'achat fermé",Ticket ;)
break ; // Sortie de la boucle fermée
}
if (Fun_Error(GetLastError())==1) // Traitement des erreurs
continue ; // réessayer
return ; // Sortie de start()
}
if (Tip==1 && Cls_S==true) // Ordre de vente ouvert.
{ // il existe un critère proche
Alert("Tentative de fermeture de la vente ",Ticket," ;)
RefreshRates() ; // Rafraîchir les données
Ans=OrderClose(Ticket,Lot,Ask,2) ; // Fermer la vente
if (Ans==true) // Cela a marché :)
{
Alert ("Sell order closed ",Ticket ;)
break ; // Sortie de la boucle fermée
}
if (Fun_Error(GetLastError())==1) // Traitement des erreurs
continue ; // réessayer
return ; // Sortie de start()
}
break ; // Quitter le while
}
//--------------------------------------------------------------- 7 --
// Valeurs de commande
RefreshRates() ; // Rafraîchir les données
Min_Lot=MarketInfo(Symb,MODE_MINLOT) ; // Nombre minimal de lots
Free =AccountFreeMargin() ; // Fonds libres
One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);// Valeur de 1 lot
Step =MarketInfo(Symb,MODE_LOTSTEP) ; // Taille du changement d'étape
if (Lots > 0) // Si les lots sont spécifiés
Lts =Lots ; // nous travaillons avec eux
else // % de fonds libres
Lts=MathFloor(Free*Prots/One_Lot/Step)*Step;// Pour ouvrir
if(Lts < Min_Lot) Lts=Min_Lot ; // Pas moins que Min_Lot ; // Pas moins que Min_Lot
if(Lts*One_Lot > Free) // Lots plus chers que Free
{
Alert(" Pas assez d'argent ", Lts," lots) ;
return ; // Quitter start()
}
//--------------------------------------------------------------- 8 --
//Ouverture des commandes
while(true) //Ordre de fermer la boucle.
{
if (Total==0 && Opn_B==true) // Aucun ordre ouvert
{ //open Buy criterion.
RefreshRates() ; // Mise à jour des données
Alert("Essayer d'ouvrir un achat. Attendre la réponse...") ;
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,StopLoss,TakeProfit);//ouverture d'un achat.
if (Ticket > 0) // ça a marché :)
{
Alerte ("Ordre d'achat ouvert ",Ticket ;)
return ; //Exit la commande
}
if (Fun_Error(GetLastError())==1) // Traitement des erreurs
continue ; // réessayer
return ; // Sortie de start()
}
if (Total==0 && Opn_S==true) // aucun ordre ouvert
{ //ouverture du critère de vente.
RefreshRates() ; // Mise à jour des données
Alert("Tentative d'ouverture de la vente. En attente de réponse...") ;
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,StopLoss,TakeProfit);//Open Sel.
if (Ticket > 0) // Cela a marché :)
{
Alerte ("Ordre de vente ouvert ",Ticket ;)
return ; //Exit la commande
}
if (Fun_Error(GetLastError())==1) // Traitement des erreurs
continue ; // réessayer
return ; // Sortie de start()
}
break ; // Quitter le while
}
//--------------------------------------------------------------- 9 --
return ; //sortir de start()
}
//-------------------------------------------------------------- 10 --
int Fun_Error(int Error) // Fie de gestion des erreurs
{
switch(Erreur)
{ // Erreurs insurmontables.
cas 4 : Alert("Le serveur commercial est occupé. Essayez à nouveau...") ;
Sleep(3000) ; // Solution simple.
return(1) ; // Sortie de la fonction.
cas 135:Alert("Le prix a changé. Essayez à nouveau...") ;
RefreshRates() ; // Rafraîchit les données.
return(1) ; // Sortie de la fonction.
cas 136:Alert("Pas de prix. En attente d'un nouveau tick...") ;
while(RefreshRates()==false) // Till a new tick
Sleep(1) ; // Délai dans la boucle
return(1) ; // Sortie de la fonction
cas 137:Alert("Broker is busy. Try again...") ;
Sleep(3000) ; // Solution simple.
return(1) ; // Sortie de la fonction.
cas 146:Alert("Le sous-système de négociation est occupé. Essayez à nouveau...") ;
Sleep(500) ; // Décision simple
return(1) ; // Sortie de la fonction
// Erreurs critiques
cas 2 : Alert("Erreur générale ;)
return(0) ; // Sortie de la fonction.
cas 5 : Alert("Ancienne version du terminal.") ;
Work=false ; // Ne plus travailler
return(0) ; // Sortie de la fonction
cas 64 : Alert("Compte bloqué.") ;
Work=false ; // Ne plus travailler
return(0) ; // Sortie de la fonction
cas 133:Alert("Trading interdit.") ;
return(0) ; // Sortie de la fonction
cas 134:Alert("Pas assez d'argent pour exécuter la transaction.") ;
return(0) ; // Sortie de la fonction
default : Alert("Une erreur s'est produite ",Error) ; // Autres options
return(0) ; // Sortie de la fonction
}
}
//-------------------------------------------------------------- 11 --
int New_Stop(int Parametr) // Vérifier le stop.
{
int Min_Dist=MarketInfo(Symb,MODE_STOPLEVEL);// Distance min.
if (Parametr < Min_Dist) // Si moins que ce qui est autorisé.
{
Parametr=Min_Dist ; // Définit la tolérance.
Alert("Distance d'arrêt augmentée ;)
}
return(Parametr) ; // Valeur de retour.
}