[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 594

 

for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ;
if(OrderType()<=OP_SELL && // vérification de la position ouverte
OrderSymbol()==lSymbol()) // vérification du symbole
{

?

 

Aide avec le code plz ! pourquoi j'ai 138 dans ce code, et qu'est-ce que ça a à voir avec ça ? les transactions s'ouvrent, mais quand vous fermez le prix n'est pas le même, qu'est-ce que c'est ? tout est simple. le conseiller expert dans les bougies s devrait fermer la transaction et ouvrir quand la fractale est pénétrée. merci d'avance pour le conseil

extern int s=5 ;



extern int stime=60 ;
extern int lots=1 ;
extern int slippage=5 ;
extern double sl=NULL ;
extern double tp=NULL ;
double upfr,dnfr=0.0;//niveaux des dernières fractales
double tClose=NULL ;
double tOpen=NULL ;
int flag=0 ;
int init()
{
//----



//----
return(0) ;
}
//+------------------------------------------------------------------+
//| fonction de désinitialisation des experts |

//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0) ;
}
//+------------------------------------------------------------------+
//| fonction de démarrage experte |
//+------------------------------------------------------------------+

int start()//ouverture sur rupture et fermeture après s bougies
{
//----
upfr=iFractals(Symbol(),PERIOD_H1,MODE_UPPER,4)
dnfr=iFractals(Symbol(),PERIOD_H1,MODE_LOWER,4) ;
//OPPER ORDERS ON PROBIT
if(upfr>0 && High[1]>upfr && flag==0) //si la fractale est en hausse et que le niveau de fractale est dépassé
{
tOpen=Time[0] ;
tClose=tOpen+s*stime*60 ;
OrderSend(Symbol(),OP_BUY,lots,Bid,slippage,sl,tp) ;
flag=1 ;
}
if(dnfr>0 && Low[1]<dnfr && flag==0)//si la fractale est en baisse et le niveau de la fractale est en baisse
{
tOpen=Time[0] ;
tClose=tOpen+s*stime*60 ;
OrderSend(Symbol(),OP_SELL,lots,Ask,sl, sl, tp) ;
flag=1 ;
}

// FERMER LES ORDRES PAR LA FIN DU TEMPS
if(Time[0]>=tClose )// si le temps avant la fermeture est passé
{
Print("CLOSE FUNCTION") ;
OrClose() ;
flag=0 ;
}


//----
return(0) ;
}
//+------------------------------------------------------------------+
//clôturer tous les ordres
void OrClose()
{
for(int i=OrdersTotal()-1;i>=1;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),lots,OrderOpenPrice(),0.0005) ;
}
}
return(0) ;
}
 
Qwertee:

Aide avec le code plz ! Pourquoi est-ce que j'obtiens une erreur 138 dans ce code ??? et qu'est-ce que ça a à voir avec ça ? les transactions s'ouvrent, mais quand vous fermez le prix n'est pas le même, qu'est-ce que c'est ?

OrderClose(OrderTicket(),lots,OrderOpenPrice(),0.0005);

le changer en

         if(OrderType()==OP_BUY)
           {
            OrderClose(OrderTicket(),OrderLots(),Bid,slippage);
           }
         else
           {
            OrderClose(OrderTicket(),OrderLots(),Ask,slippage);
           }
 
Bon après-midi. Les professionnels, qui ont traité avec l'indicateur Zigzag, conseillent comment obtenir les deux dernières valeurs des tops : High et Low ?
 

Bon après-midi.

Veuillez m'aider à ouvrir des commandes. J'utilise un EA sur un compte de démonstration, lorsque j'obtiens une condition d'achat ou de vente, il affiche 130 erreurs.

Voici la fonction d'ouverture de l'ordre :

int NewOrder(int Cmd,double Lot)
{double TP=0; //тейкпрофит
 double SL=0; //стоплосс
 double PR=0; //Цена
 while(!IsTradeAllowed()) Sleep(100);
 RefreshRates ();
 if(Cmd==OP_BUY)
   {PR=Ask;
    if(TakeProfit>0) TP=NormalizeDouble(Ask+TakeProfit*Point,Digits);
    if(StopLoss>0) SL=NormalizeDouble(Bid-StopLoss*Point,Digits);}
 if(Cmd==OP_SELL)
   {PR=Bid;
    if(TakeProfit>0) TP=NormalizeDouble(Bid-TakeProfit*Point,Digits);
    if(StopLoss>0) SL=NormalizeDouble(Ask+StopLoss*Point,Digits);}
 int tic=OrderSend(Symbol(),Cmd,Lot,PR,20,SL,TP,"",0,0,CLR_NONE);
 if(tic<0) Print("Ошибка открытия ордера: ",GetLastError());
return(tic);}

J'ai vérifié sur d'autres EA et j'ai trouvé que tout était ok avec le calcul du lot.

Compte de démonstration chez Alpari, type Micro. Le take et le stop sont de 100p, soot. 10 pips, car Alpari a 5 signes.

 
Normaliser leprix d'ouverture
 
FAQ:
Normaliser le prix d'ouverture.


Comment le normaliser ?

N'est-ce pas ?

PR=NormalizeDouble(Ask,Digits);

Si c'est le cas, rien ne change.

Je n'ai pas encore beaucoup d'expérience en programmation. Pouvez-vous m'expliquer comment le normaliser ?

 
Vérifiez ensuite la taille du stop et du profit au préalable, si elle est supérieure à votre stop et à votre profit - ajustez-les. Si elle est nulle, vous devez d'abord définir un ordre avec un stop et un profit nuls, puis les modifier aux niveaux que vous souhaitez.
 

Bonsoir. Question : Lorsque je ferme une partie d'une transaction, l'EA ouvre en quelque sorte une nouvelle transaction avec un nouveau ticket. La magie du nouvel ordre reste-t-elle la même ?

 
Installation de MetaTrader 4, ouverture d'un compte de démonstration. J'ai essayé d'ouvrir/fermer des ordres. Comment puis-je maintenant faire en sorte que le terminal lui-même déclenche un ordre de vente lorsque le prix monte et un ordre d'achat lorsqu'il descend, en utilisant des informations comme "vous avez besoin d'une différence de 2 bougies pour fermer l'ancien ordre et en ouvrir un nouveau" ?