Questions de base ... - page 2

 

Je vais essayer de m'expliquer :

Supposons que j'ai 3 systèmes différents :

le système 1 fonctionne mieux sur le graphique EUR/USD 1M.

Le système 2 fonctionne mieux sur le graphique EUR/USD 5M.

le système 3 fonctionne le mieux sur le graphique EUR/USD 1H.

Maintenant, je veux que mon conseiller expert ouvre une position par graphique et pas plus. En d'autres termes, je veux ouvrir 1 position seulement pour le système 1, 1 position pour le système 2, et 1 pour le système 3.

La solution précédente que vous avez écrite limite 1 position par symbole, et maintenant je veux limiter 1 position par type de graphique...

 

. En d'autres termes, je veux ouvrir 1 position seulement pour le système 1, 1 position pour le système 2, et 1 pour le système 3.

OK

alors vous travaillez avec le nombre MAGIC par système

#property copyright "system 1"

#property link ""

#define MAGIC 01901

.

.

.

if ( ExistPosition() == False) {

OrderSend(Symbol(),op,Lots,pp,SLIPPAGE,ldStop,ldTake,lsComm,MAGIC,0,clOpen); // MAGIC = system 1

}

// if open 1 position only for system 1 MAGIC ?

bool ExistPosition() {

bool Exist=False;

for (int i=0; i<OrdersTotal(); i++) {

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {

if (OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC) Exist=True;

}

}

return(Exist);

}

Pouvez-vous afficher vos systèmes ?

 

10x !

Je n'ai pas de système spécifique. C'était seulement un exemple.

Je suis nouveau sur metaTrader et c'était une question de base que j'avais ...

Dès que j'aurai écrit quelque chose de bien, je le téléchargerai ici pour les commentaires...

 

Comment faire pour que l'EA ne trade qu'une fois par bougie ?

Je me demandais s'il existait un morceau de code que je pouvais ajouter à un EA pour qu'il n'effectue qu'une seule transaction par bougie.

Merci d'avance

 
basza:
Je me demandais s'il existait un morceau de code que je pouvais ajouter à un EA pour qu'il n'effectue qu'une seule transaction par bougie. Merci d'avance.

datetime statique timeprev ;

if(timeprev==Time[0]) {

return(0) ; //exécution uniquement sur une nouvelle mesure

} else if (timeprev==0) {

timeprev=Time[0] ; // ne fait rien si elle vient d'être ajoutée au graphique

return(0) ;

} else {

timeprev=Time[0] ;

// traitement des barres ici

}

 
ra300z:
statique datetime timeprev ;

if(timeprev==Time[0]) {

return(0) ; //exécution uniquement sur une nouvelle mesure

} else if (timeprev==0) {

timeprev=Time[0] ; // ne fait rien si elle vient d'être ajoutée au graphique

return(0) ;

} else {

timeprev=Time[0] ;

// traitement de la barre ici

}

Merci ra300z

 

Afficher un pourcentage cible ?

Bonjour

J'essaie d'afficher un pourcentage cible sous la forme d'un commentaire dans une ea.

J'ai ce bout de code qui affiche le solde actuel sous forme de commentaire :

"Pourcentage cible : " + AccountBalance()"\n"

Au début de l'ea, j'ai ce qui suit :

extern int ProfitPercentage=25 ;

Maintenant ce que je veux faire c'est : AccountBalance * ProfitPercentage et afficher les résultats. ex. $5675.69 * 25% = $1418.92 et afficher seulement $1418.69.

Merci d'avance

 

Salut les gars....

1:comment faire pour que l'EA ne trade qu'une seule fois le persignal...( ce que je veux dire c'est le code)

par exemple ma cross EA... quand le ma croise vers le haut et avec la cible 20 pip il sera fermé mais quand la tendance est continue il essayera d'ouvrir un autre commerce puisque le ma rapide toujours au-dessus du ma lent.il doit seulement ouvrir un autre commerce quand le ma croise vers le bas.

ma rapide > ma lent = besoin d'un seul trade persignal

ma rapide < ma lent = aussi besoin d'un seul persignal de transaction

2 : Est-il possible de mettre un délai sur le croisement ? Je sais seulement que la séparation des pip (quel que soit le nom qu'on lui donne) signifie qu'il attendra peut-être 10-15 pip après le croisement avant d'ouvrir un trade.

Je suis juste un débutant qui essaie d'apprendre le langage mq4 :)

 

Une façon de faire serait de faire en sorte que l'EA regarde les lectures historiques de la MA plutôt que les lectures actuelles. En principe, ce serait :

// Recognise past crossing (up or down)

if ( fast( past+1 ) slow( past ) )

then cmd = OP_BUY;

else if ( fast( past+1 ) >= slow( past+1 ) && fast( past ) < slow( past ) )

then cmd = OP_SELL;

else return;

// If processing reaches this point, then a trade decision of either OP_BUY

// or OP_SELL has been made, due to recognising a supporting MA crossing

// at "past" number of bars in history.

// Limit to only one trade in a direction

static int last_trade = -1;

if ( last_trade == cmd ) return;

last_trade = cmd;

// If processing reaches this point, then this processing is the first time

// that the supporting MA crossing is recognised.

Cela permettrait de prendre une décision sur le nombre "passé" de barres suivant la barre où le croisement se produit, et de n'autoriser une transaction que la première fois que le croisement est détecté.

 

merci bro pour le code...