Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 356

 
J'ai essayé de changer les paramètres MA1_Shift=1 des deux muwings. Cela semble aider. Je vais le tester dans une minute.
 
okidoki543:
Merci, mais j'aimerais une solution précise. Ainsi, la barre actuelle n'est pas prise en compte, mais seulement les barres précédentes.

Pour avoir une solution exacte, vous avez besoin de votre code, à partir duquel vous voulez obtenir une solution exacte. Mais vous n'avez pas le code. Donc vous n'avez pas non plus de solution...
 
всokidoki543:
Merci, mais j'aimerais une solution précise. Ainsi, la barre actuelle n'est pas prise en compte, mais seulement les barres précédentes.


Mince, j'ai creusé dans le code de quelqu'un d'autre, encore une fois à vue d'œil pour essayer de changer cette pièce. Dans ce cas, c'est probablement PRICE_CLOSE ou 0 qui devrait être...

   MA1_0=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 1);    // Текущее    значение 1-й МА
   MA1_1=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 2);    // Предыдущее значение 1-й МА
   MA2_0=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 1);    // Текущее    значение 2-й МА
   MA2_1=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 2);    // Предыдущее значение 2-й МА
 

Voici le code, j'ai changé les décalages de 0 à 1. Cela aidera-t-il ?

//============================================================================================
//
//
//
//
//
//============================================================================================
inttern MA1_Period=7 ; // 1ère période MA
extern intMA2_Period=13 ; // Période de la 2ème MA
extern int MA1_Method=1 ; // Méthode de calcul MA1 (SMA=0,EMA=1,SMMA=2,LWMA=3)
extern int MA2_Method=1 ; // Méthode de calcul MA2 (SMA=0,EMA=1,SMMA=2,LWMA=3)
extern int MA1_Price=0 ; // Méthode de calcul du prix MA1
extern int MA2_Price=0 ; // Méthode de calcul du prix MA2
extern int MA1_Shift=1 ; // décalage temporel de MA1
extern int MA2_Shift=1 ; // décalage temporel MA2
extern double Lot = 0.01 ; // Lot fixe
extern int slippage = 0 ; // Écart de prix pour les ordres au marché
int New_Bar ; // 0/1 Formation de nouvelles barres
int Time_0 ; // Heure de début d'une nouvelle mesure

int PosClose ; // Sens de la traversée
int total ; // Nombre d'ordres ouverts
double MA1_0 ; // Valeur actuelle du 1er МА (rose)
double MA1_1 ; // Valeur précédente de la 1ère MA (rose)
double MA2_0 ; // Valeur actuelle de la 2ème MA (bleu)
double MA2_1 ; // Valeur précédente de la 2ème MA (bleu)
int orderBuy ; // 1 = fait de la présence de l'ordre d'achat
int orderSell ; // 1 = fait de la présence d'un ordre de vente
//============================================================================================
int init()
{

}
//============================================================================================
int start()
{

double prix ;

int total=OrdersTotal() ; // total des commandes
for(int i=total-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) // Sélectionner la commande
{
if(OrderType()==OP_BUY) // si c'est un ordre d'achat
{
orderBuy=1 ;
if(CrossPositionClose()==1) // Clôture de l'ordre s'il est satisfaisant
{ // condition CrossPositionClose()=1
price=MarketInfo(Symbol(),MODE_BID) ;
OrderClose(OrderTicket(),OrderLots(),price,slippage,CLR_NONE) ;
}
}
if(OrderType()==OP_SELL) // Si un ordre d'achat est placé.
{
orderSell=1 ;
if(CrossPositionClose()==2) // Fermez l'ordre s'il est satisfait
{ // condition CrossPositionClose()=2
price=MarketInfo(Symbol(),MODE_ASK) ;
OrderClose(OrderTicket(),OrderLots(),price,slippage,CLR_NONE) ;
}
}
}
}

New_Bar=0 ; // Remettons-la à zéro d'abord.
if (Time_0 != Time[0]) // Si l'heure de début de la barre est déjà différente
{
New_Bar= 1 ; // Voici une nouvelle barre.
Time_0 = Time[0] ; // Se souvenir de la nouvelle heure de début de barre
}

MA1_0=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 0) ; // Valeur actuelle de la 1ère MA
MA1_1=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 1) ; // Valeur précédente de la 1ère MA
MA2_0=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 0) ; // Valeur actuelle de la 2ème MA
MA2_1=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 1) ; // Valeur précédente de la 2ème MA


retour ;
}

//============================================================================================
int CrossPositionClose()
{
PosClose=0 ; // c'est ici que le chien est enterré!! :)
if ((MA1_1>=MA2_0 && MA1_0<MA2_0) || (MA1_1>MA2_0 && MA1_0<=MA2_0)) // CrossPosition Close {
{
PosClose=1 ;
}
if ((MA1_1<=MA2_0 && MA1_0>MA2_0) || (MA1_1<MA2_0 && MA1_0>=MA2_0)) // Intersection descendante
{
PosClose=2 ;
}
return(PosClose) ; // retourne la direction de l'intersection.
}
//============================================================================================

//============================================================================================
int MAMethod(int MA_Method)
{
switch(MA_Méthode)
{
cas 0 : return(0) ; //return MODE_SMA=0
cas 1 : return(1) ; // retour MODE_EMA=1
cas 2 : return(2) ; // Retour MODE_SMMA=2
cas 3 : return(3) ; //return MODE_LWMA=3
}
}
//============================================================================================
int MAPrice(int MA_Price)
{
switch(MA_Price)
{
cas 0 : return(PRICE_CLOSE) ; // Retour PRICE_CLOSE=0
cas 1 : return(PRICE_OPEN) ; //return PRICE_OPEN=1
cas 2 : return(PRICE_HIGH) ; //return PRICE_HIGH=2
cas 3 : return(PRICE_LOW) ; //return PRICE_LOW=3
cas 4 : return(PRICE_MEDIAN) ; //return PRICE_MEDIAN=4
cas 5 : return(PRICE_TYPICAL) ; //return PRICE_TYPICAL=5
cas 6 : return(PRICE_WEIGHTED) ; //return PRICE_WEIGHTED=6
}
}
//============================================================================================

 
Sepulca, j'ai déjà essayé, le compilateur le jure.
 
okidoki543:
Sepulca, j'ai déjà essayé, le compilateur le jure.

Ce n'est pas possible, je vais essayer moi-même. ......
 
Merde, ce n'est pas un juron maintenant. Désolé pour la confusion. L'erreur apparaissait avant pour une raison quelconque. (
 
Pas de jurons .... Test par vous..... Déjà fait des changements, que l'auteur me pardonne....
Dossiers :
 
Deux de mes messages sur le forum s'ouvrent d'un seul clic, ou bien ma souris fait des siennes ou autre chose. Je dois le supprimer à nouveau plus tard......Mais je vais vérifier ce post....
 

Sepulca, merci, votre code fonctionne. Seulement, j'ai remis les équipes à leur place.

Je vais le vérifier sur des délais plus longs, je vais le torturer pendant quelques jours pour être sûr que ce code fonctionne.

Raison: