Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 756
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Je suis habitué à mon propre système d'archivage.
Bon après-midi.
J'ai écrit un programme d'exercices. Ça ne marche pas pour une raison quelconque.
Je l'ai testé dans le testeur de stratégie entre le 29 septembre et le 15 octobre.
Le programme devrait fonctionner comme suit : je fais un achat. Lorsque le prix baisse de 0,010, il doit vendre avec une perte.
Un achat a lieu. Il n'y a pas de vente. Je commence à visualiser et je vois que le prix n'est pas seulement inférieur de 0,010 mais bien supérieur. Étrange.
// -------- variables --- Démarrer -----
extern double L1=0.01 ; // taille du lot pour l'achat
extern double L1n=0.01 ; // taille du lot pour l'achat (lot normalisé)
extern double AktualAsk=0.0 ; // prix d'offre actuel
extern double AktualBid=0.0 ; // prix de vente réel
extern int ticketlackmus=1 ; // indicateur de réussite de l'ouverture d'un ordre.
extern int ticket1=0 ; // ticket
extern bool PozOtk1=true ;
// -------- variables --- Fin -----
int init()
{
retour(0) ;
}
int start()
{
si (PozOtk1==vrai)
{
//position ouverte
ticketlackmus=1 ;
while (ticketlackmus>0)
{
Alerte (" Ouvrir la première position ") ;
RefreshRates() ;// Rafraîchir les données
AktualAsk=NormalizeDouble(Ask,Digits) ; //pour le prix
L1n=NormalizeDouble(L1,2) ; //pour le lot.
ticket1=OrderSend ("GBPUSD", OP_BUY, L1n, AktualAsk, 5, 0, 0, 0, 0, 0, CLR_NONE) ;
si (ticket1>0) ticketlackmus=-1 ;
{
Alerte (" ORDER OPEN ", ticket1, ", ticketlackmus) ;
}
}
PozOtk1=false ;
Alerte (" PozOtk1 ", PozOtk1) ;
}
RefreshRates() ;// RefreshRates()
AktualBid=NormalizeDouble(Bid,Digits) ; //pour le prix
si (AktualBid<=AktualAsk-0.010 && PozOtk1==false)
{
RefreshRates() ; // Rafraîchir les données
OrderSelect(ticket1, SELECT_BY_TICKET ;)
L1n=NormalizeDouble(L1,2) ; //pour le lot
OrderClose (ticket1, L1n, AktualBid, 5) ;
PozOtk1=vrai ;
}
retour(0) ;
}
int deinit()
{
retour(0) ;
}
Ozero.
Veuillez utiliser le bouton magique SRC lorsque vous insérez un code :
Insérer le code correctement dans le forum
Si une position est ouverte sur un certain symbole (dans ce cas - "GBPUSD"), il est conseillé de prendre toutes les données sur ce symbole via marketinfo, c'est-à-dire pas seulement AktualAsk=NormalizeDouble(Ask,Digits ) ; aktualAsk=MarketInfo( "GBPUSD",MODE_ASK) ;
Et donc toutes les données du marché devraient être prises, afin d'éviter.
Si une position s'ouvre sur un symbole spécifique (dans ce cas - "GBPUSD"), il est souhaitable de prendre toutes les données également sur ce symbole via marketinfo, c'est-à-dire pas seulement AktualAsk=NormalizeDouble(Ask,Digits) ; aktualAsk=MarketInfo( "GBPUSD",MODE_ASK) ;
Et donc toute donnée du marché devrait être prise, pour éviter.
Merci, Evillive !
J'ai fait des changements. Mais j'ai déjà commencé à acheter. Pas de vente après les changements. Test M15 du 30 septembre 2014 à la mi-octobre.
Merci Evillive !
J'ai fait le changement. Mais, l'achat se faisait quand même. Après les changements, aucune vente n'a lieu. Test M15 du 30 septembre 2014 à la mi-octobre.
OrderClose (ticket1, L1n, AktualBid, 5);