Aide au codage - page 705

 


double BU1=iMA(Symbol(),0,ShortSma,0,MODE_SMA,PRICE_CLOSE,i+1) ;

double BL1=iMA(Symbol(),0,LongSma,0,MODE_SMA,PRICE_CLOSE,i) ;

string SBUY="false";string SSEL="false" ;

if(BU1<Close[1]&&BL1<Close[1])SBUY="true";if(BL1>Close[1]&&BU1>Close[1])SSEL="true";

Cela fonctionne maintenant, quelque chose n'allait pas avec le Trade après TP.....

Merci pour votre aide Mladen.

 

bonjour mr mladen

comment traduire ce mot :

http://forexsystemsru.com/1075962-post327.html

Analyse en grappes


regard


 

Mr mladen :

pourriez-vous en faire une MTF

Bien à vous

Dossiers :
 

Bonjour chers codeurs,

J'ai probablement une question simple, mais je suis bloqué en ce moment sur :

Mon EA ouvre des ordres d' achat et de vente sans problème, mais quand il s'agit de SIGNAL_CLOSEBUY ou SIGNAL_CLOSESELL il ne ferme pas les ordres.

mais quand il s'agit de SIGNAL_CLOSEBUY ou SIGNAL_CLOSESELL il ne ferme pas les ordres.

J'utilise ici un RSI_Filter comme déclencheur pour fermer les ordres d'achat ou de vente.

J'ai copié mon code, je serais très heureux si quelqu'un pouvait y jeter un œil.

Merci d'avance !

#define SIGNAL_NONE      0
#define SIGNAL_BUY       1
#define SIGNAL_SELL      2
#define SIGNAL_CLOSEBUY  3
#define SIGNAL_CLOSESELL 4

extern int    MaxShortTrades   = 1;
extern int    MaxLongTrades    = 1;
int           Order            = SIGNAL_NONE;

// RSI Filter
double RSIfilter=iRSI(Symbol(),0,RSIPeriod,PRICE_CLOSE,BarShift);

// Trade Signal Indicator
double NLD1,NLD2;
      NLD1 = iCustom(NULL,0,"indicator",0,Length,0,0,1,0,0,0,1);
      NLD2 = iCustom(NULL,0,"indicator",0,Length,0,0,1,0,0,0,2);        

// Amount of long / short trades      
int longs  = 0;
int shorts = 0;
double j;
      
      for(j=OrdersTotal()-1;j>=0; j--)
        {
         if(OrderType()==OP_BUY)  longs++;  // Check # of long trades.
         if(OrderType()==OP_SELL) shorts++; // Check # of short trades
        }
                
// place orders
if(longs < MaxLongTrades && NLD1 > NLD2 && RSIfilter>55) Order  = SIGNAL_BUY;        
if(shorts < MaxShortTrades && NLD1 < NLD2 && RSIfilter<45) Order = SIGNAL_SELL;
   

// Signal Begin(Exit Buy)
if (RSIfilter<50) Order=SIGNAL_CLOSEBUY;

if(Order==SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars!=BarCount))))
              {
               dummyResult=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage*PipMultiplier,MediumSeaGreen);
               if(EachTickMode) TickCheck = True;
               if(!EachTickMode) BarCount = Bars;
               return(0);
              }

// Signal Begin(Exit Sell)                                                              
if (RSIfilter>50) Order=SIGNAL_CLOSESELL;

if(Order==SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars!=BarCount))))
                 {
                  dummyResult=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage*PipMultiplier,DarkOrange);
                  if(EachTickMode) TickCheck = True;
                  if(!EachTickMode) BarCount = Bars;
                  return(0);
                 }
 
tfi_markets:

Bonjour chers codeurs,

J'ai probablement une question simple, mais je suis bloqué en ce moment sur :

Mon EA ouvre des ordres d'achat et de vente sans problème, mais quand il s'agit de SIGNAL_CLOSEBUY ou SIGNAL_CLOSESELL il ne ferme pas les ordres.

mais quand il s'agit de SIGNAL_CLOSEBUY ou SIGNAL_CLOSESELL il ne ferme pas les ordres.

J'utilise ici un RSI_Filter comme déclencheur pour fermer les ordres d'achat ou de vente.

J'ai copié mon code, je serais très heureux si quelqu'un pouvait y jeter un œil.

Merci d'avance !

#define SIGNAL_NONE      0
#define SIGNAL_BUY       1
#define SIGNAL_SELL      2
#define SIGNAL_CLOSEBUY  3
#define SIGNAL_CLOSESELL 4

extern int    MaxShortTrades   = 1;
extern int    MaxLongTrades    = 1;
int           Order            = SIGNAL_NONE;

// RSI Filter
double RSIfilter=iRSI(Symbol(),0,RSIPeriod,PRICE_CLOSE,BarShift);

// Trade Signal Indicator
double NLD1,NLD2;
      NLD1 = iCustom(NULL,0,"indicator",0,Length,0,0,1,0,0,0,1);
      NLD2 = iCustom(NULL,0,"indicator",0,Length,0,0,1,0,0,0,2);        

// Amount of long / short trades      
int longs  = 0;
int shorts = 0;
double j;
      
      for(j=OrdersTotal()-1;j>=0; j--)
        {
         if(OrderType()==OP_BUY)  longs++;  // Check # of long trades.
         if(OrderType()==OP_SELL) shorts++; // Check # of short trades
        }
                
// place orders
if(longs < MaxLongTrades && NLD1 > NLD2 && RSIfilter>55) Order  = SIGNAL_BUY;        
if(shorts < MaxShortTrades && NLD1 < NLD2 && RSIfilter<45) Order = SIGNAL_SELL;
   

// Signal Begin(Exit Buy)
if (RSIfilter<50) Order=SIGNAL_CLOSEBUY;

if(Order==SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars!=BarCount))))
              {
               dummyResult=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage*PipMultiplier,MediumSeaGreen);
               if(EachTickMode) TickCheck = True;
               if(!EachTickMode) BarCount = Bars;
               return(0);
              }

// Signal Begin(Exit Sell)                                                              
if (RSIfilter>50) Order=SIGNAL_CLOSESELL;

if(Order==SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars!=BarCount))))
                 {
                  dummyResult=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage*PipMultiplier,DarkOrange);
                  if(EachTickMode) TickCheck = True;
                  if(!EachTickMode) BarCount = Bars;
                  return(0);
                 }

Il y a deux problèmes que vous devez résoudre avant de continuer :

  1. Vous devez d'abord sélectionner un ordre - vous n'avez jamais sélectionné l'ordre avant de tenter de le fermer.
  2. Vous ne vérifiez pas quel est le type de l'ordre que vous voulez fermer - vérifiez le type et ensuite, selon le type d'ordre, prenez des mesures supplémentaires - et ajustez le prix de clôture à l'offre ou à la demande, selon le type d'ordre.
 
mladen:

deux problèmes que vous devez résoudre avant de poursuivre :

  1. Vous devez d'abord sélectionner un ordre - vous n'avez jamais sélectionné l'ordre avant de tenter de le fermer.
  2. Vous ne vérifiez pas quel est le type de l'ordre que vous voulez fermer - vérifiez le type et ensuite, selon le type d'ordre, prenez des mesures supplémentaires - et ajustez le prix de clôture à l'offre ou à la demande, selon le type d'ordre.

Cher Mladen,

Je vous remercie beaucoup pour vos suggestions utiles.

Si je vous ai bien compris, je dois implémenter quelque chose comme le code suivant

pour sélectionner un "buy_ticket" l'EA doit se fermer. Le code n'a pas encore été testé, et est en quelque sorte un "pseudo état".

int buy_ticket=0;
int sell_ticket=0;
int ticket;

// Iterate through tickets
for(int i=OrdersTotal()-1; i>=0; i--)
    {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
         {
           if(OrderType()== OP_BUY)
              buy_ticket=OrderTicket();
            else
            if(OrderType() == OP_SELL)
               sell_ticket=OrderTicket();
           }
        }

// Close Ticket with trigger
if (RSIfilter<50) Order=SIGNAL_CLOSEBUY;

if (RSIfilter>50) Order=SIGNAL_CLOSESELL; 

                
if(Order==CLOSE_BUY && buy_ticket!=0)
         {
         if(OrderSelect(buy_ticket,SELECT_BY_TICKET))
            {
            if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,clrDodgerBlue))
               Print("Error closing Buy #",(string)OrderTicket()," Error code ",(string)GetLastError());
            }
         }
      else
      if(Order==CLOSE_SELL && sell_ticket!=0)
         {
         if(OrderSelect(sell_ticket,SELECT_BY_TICKET))
            {
            if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,clrDodgerBlue))
               Print("Error closing Sell #",(string)OrderTicket()," Error code ",(string)GetLastError());
            }
         }
    
 
tfi_markets:

Cher Mladen,

Je vous remercie beaucoup pour vos suggestions utiles.

Si je vous ai bien compris, je dois implémenter quelque chose comme le code suivant

pour sélectionner un "buy_ticket" l'EA doit se fermer. Le code n'a pas encore été testé, et est en quelque sorte un "pseudo-état".

int buy_ticket=0;
int sell_ticket=0;
int ticket;

// Iterate through tickets
for(int i=OrdersTotal()-1; i>=0; i--)
    {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol())
         {
           if(OrderType()== OP_BUY)
              buy_ticket=OrderTicket();
            else
            if(OrderType() == OP_SELL)
               sell_ticket=OrderTicket();
           }
        }

// Close Ticket with trigger
if (RSIfilter<50) Order=SIGNAL_CLOSEBUY;

if (RSIfilter>50) Order=SIGNAL_CLOSESELL; 

                
if(Order==CLOSE_BUY && buy_ticket!=0)
         {
         if(OrderSelect(buy_ticket,SELECT_BY_TICKET))
            {
            if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,clrDodgerBlue))
               Print("Error closing Buy #",(string)OrderTicket()," Error code ",(string)GetLastError());
            }
         }
      else
      if(Order==CLOSE_SELL && sell_ticket!=0)
         {
         if(OrderSelect(sell_ticket,SELECT_BY_TICKET))
            {
            if(!OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,clrDodgerBlue))
               Print("Error closing Sell #",(string)OrderTicket()," Error code ",(string)GetLastError());
            }
         }
    

Avez-vous un seul ordre (même magie, même symbole) ouvert en même temps ?

Si oui, alors il fonctionnera.

 

Chers amis,

L'ea ci-joint ouvre constamment des ordres à lot fixe(il ouvre tous les ordres à 0.10).

Je ne change pas ou ne contrôle pas la valeur du lot des ordres ouverts !


Les valeurs "Lots" et "MaximumRisk" sont disponibles dans les paramètres, mais elles ne sont pas effectives sur les valeurs de lot des ordres !

Pouvez-vous m'aider s'il vous plaît ?

 

bonjour mr mladen

Pourriez-vous créer une sous-fenêtre vide semblable à cette image ?

regard

 

Bonjour Mladen, j'ai téléchargé votre

stepma_pdf_4_4.ex4 ainsi que l'histogramme,

Je les ai copiés dans MT4. Je les glisse sur la fenêtre du graphique

J'obtiens le message suivant, voir dans l'image :

Pouvez-vous me dire comment je peux utiliser votre indicateur ?


Lea


ps. la même chose est arrivée avec : moyennes_-_mtf__alerts_7_4.ex4 et histogramme

Dossiers :
warning.jpg  20 kb
Raison: