[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 279
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
Et s'il avait un code pour 70 livres au lieu de 60 ? :) ;)
Bonjour, pouvez-vous me dire comment déterminer le nombre de pips de profit d'un ordre ?
.
Si une position d'achat est ouverte, soustrayez le prix d'ouverture du cours acheteur actuel. Si la position est une position de vente, soustrayez le cours vendeur actuel du cours d'ouverture.
Les scouts ont découvert que OrderClosePrice() peut être utilisé à la place de Bid ou Ask.
Chers utilisateurs du forum, pourriez-vous nous indiquer comment placer une variable de iCustom dans ArrayMaximum ?
int ArrayMaximum( double array[], int count=WHOLE_ARRAY, int start=0)
Il recherche l'élément ayant la valeur maximale. La fonction renvoie la position de l'élément maximum dans le tableau.La recherche est un processus, pas une variable. En d'autres termes, vous pouvez attribuer une valeur d'indicateur à un élément du tableau, puis rechercher l'élément le plus grand dans le tableau avec ArrayMaximum.
Pour cela, vous devez lire ce qu'est ArrayMaximum.
int ArrayMaximum( double array[], int count=WHOLE_ARRAY, int start=0)
Recherche de l'élément ayant la valeur maximale. La fonction renvoie la position de l'élément maximal dans le tableau.La recherche est un processus, pas une variable. En d'autres termes, vous pouvez attribuer une valeur d'indicateur à un élément du tableau, puis rechercher dans le tableau l'élément maximal avec ArrayMaximum.
Bonjour à tous, je suis assis devant mon ordinateur à me taper la tête contre le clavier - je n'arrive pas à corriger un seul bug dans le code... Veuillez aider un débutant.
Voici mon code hibou :
extern double TakeProfit = 500 ;
extern double Lots = 0.1 ;
extern double Stoploss = 30 ;
extern double TrailingStop = 30 ;
extern string Indicateur_1 = "SAR (SAR_STEP)" ;
extern double SAR_Step = 0.02 ;
extern double SAR_MaxStep =0.2 ;
extern double GeneralShift = 0 ; // 0 - barre non fermée, 1 - fermée.
// Ce sont les variables qui seront
// affiché pendant
// connexion de l'Expert Advisor avec le graphique
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
double a ;
int b ;
int total, ticket, cnt ;
//juste des variables à utiliser dans le programme
si(Bars<100)
{
Print("barres inférieures à 100") ;
retour(0) ;
}
// Cette condition vérifie si l'historique du graphique contient plus de 100 chandeliers, et si ce n'est pas le cas, elle renvoie une erreur,
// cela générera une erreur. Il est nécessaire d'attirer votre attention sur le problème des
// manque d'information
si(TakeProfit<5)
{
Print("TakeProfit inférieur à 5") ;
retour(0) ;
}
// Cette condition vérifie le niveau de TakeProfit (une des variables externes,
// qui contrôle le niveau de prise de bénéfices. C'est nécessaire pour vérifier si // vous avez fixé les niveaux de Take Profit.
// vérifiez si vous avez fixé des niveaux de prise de bénéfices à un niveau non autorisé par votre société de courtage.
// Non autorisé pour votre société de courtage. C'est juste pour que si votre Expert Advisor échoue, vous // sachiez exactement quelle est l'erreur.
// où se trouve l'erreur. Je recommande vivement de le régler.
total=OrdersTotal() ;
si(total<1)
// Cette vérification est nécessaire, afin d'éviter d'ouvrir plusieurs positions identiques à la fois. Si cette case n'est pas cochée, si, par exemple, votre EA est déclenché lorsque la stochastique est dans la zone de surachat, il sera négocié à chaque tick jusqu'à ce qu'il ait utilisé toute la marge.
// Par conséquent, afin de limiter le nombre de postes ouverts, cette
// limiteur. S'il est défini, le conseiller n'ouvrira pas plus d'un certain nombre // d'ouvertures.
// nombre de positions <x
{
// aucun ordre ouvert identifié
si(AccountFreeMargin()<(1000*Lots))
{
Print("Nous n'avons pas d'argent. Marge libre = ", AccountFreeMargin() ;
retour(0) ;
}
// Un autre morceau de code auxiliaire. S'il n'y a pas assez d'argent sur le compte, il...
// imprime une erreur. Cette pièce est complètement inutile si le conseiller expert fonctionne.
// temps réel, mais elle est très utile pour les tests sur l'historique.
if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)>Close[0]) ; // Ouvrir BUY
// Nous arrivons enfin à la partie la plus intéressante. A la place de ces x, nous devons insérer
// condition qui déclenche un BUY.
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-Stoploss*Point, Ask+TakeProfit*Point, "comment",16384,0,Green) ;
// Ce sont les conditions d'achat. En principe, il n'y a rien à changer ici, mais afin d'élargir /mes horizons, j'élargis la portée.
// Je vais déchiffrer ce qu'il dit ici. Il est dit ici que nous devons acheter
// (OP_BUY) le symbole actuel (paire de devises, au graphique duquel ce conseiller expert a été attaché),
// taille de la transaction Lots (variable qui est définie au début). Prix du marché, avec
// slippage 3, et avec un StopLoss et un TakeProfit fixés à la valeur de l'indice de référence.
au // début, la transaction sera marquée du commentaire "commentaire", avec le numéro déterminant 0, et au // début, la transaction sera marquée du commentaire "commentaire".
// au point d'achat, sur le graphique, il y aura un curseur vert avec le code déterminant
// 16384
si(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Ordre BUY ouvert : ",OrderOpenPrice()) ;
}
else Print("Erreur lors de l'ouverture de l'ordre BUY : ",GetLastError()) ;
retour(0) ;
}
// Ce bloc est uniquement nécessaire pour vérifier que tout s'est bien passé.
// Ou, sinon, pour enregistrer une erreur qui a fait échouer quelque chose.
// Maintenant la même chose avec le pari de vente. Au lieu de YYYYYY - condition
if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)<Close[0])
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+Stoploss*Point,Bid-TakeProfit*Point, "macd sample",16384,0,Red) ;
si(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Ordre de vente ouvert : ",OrderOpenPrice()) ;
}
else Print("Erreur lors de l'ouverture d'un ordre de VENTE : ",GetLastError()) ;
retour(0) ;
}
retour(0) ;
}
// Maintenant la sortie. Rien n'a changé ici non plus, c'est juste RRRRRR - condition
// fermer une transaction par BUY, ZZZZZZZZ - par SELL
for(cnt=0;cnt
//Pendant un moment, ils regardent tous les postes ouverts.
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;
if(OrderType()<=OP_SELL && // vérification des positions ouvertes
OrderSymbol()==Symbol()) // vérification du symbole
{
if(OrderType()==OP_BUY) // une position longue est ouverte
{
// doit-il être fermé ?
if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)<Close[0]) //close BUY.
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ; // fermer la position
return(0) ; // sortie
}
// vérifier le trailing stop
si(TrailingStop>0)
{
si(Bid-OrderOpenPrice()>Point*TrailingStop)
{
si(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green) ;
retour(0) ;
}
}
}
}
else // Même chose pour la position courte
{
// doit-il être fermé ?
if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)>Close[0])//clôturer SELL
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; // position de clôture
return(0) ; // sortie
}
// vérifier le trailing stop
si(TrailingStop>0)
{
si((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
si((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red) ;
retour(0) ;
}
}
}
}
}
}
}
retour(0) ;
//--------
}
//-------- la fin.
Un trader novice ne peut pas attraper un insecte ! !! S'IL VOUS PLAÎT AIDEZ-MOI !!!!!!!!!!!!!!!!!!
'}' - parenthèses non équilibrées C:\Program Files (x86)\Forex4you MetaTrader 4\experts\Saurentios V101.mq4 (167, 1)