[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 92

 
Shniperson >> :
Messieurs, comment faire pour que le trading H4 prenne en compte les barres H1 ? par exemple if(......&&& Close[0](H1 bar)>High[1](H1 bar) ? ??????????

Utilisez iClose() et iHigh() - vous pouvez définir un délai arbitraire dans ces fonctions.

 
Je ne comprends pas pourquoi l'assignation d'un buffer à un autre n'est pas correcte (le résultat de Buffer1 n'est pas imprimé dans la fenêtre de l'indicateur). Et la deuxième question, pourquoi l'indicateur doit-il calculer la barre zéro et la précédente (limit=2), alors qu'il peut être limité à la seule barre zéro actuelle ?

#property indicator_separate_window
#property indicator_buffers 1

extern int FastMA=3;
extern int SlowMA=25;

double Buffer1[];


double Buffer2[];

int init()
{
SetIndexBuffer(0,Buffer1);
SetIndexBuffer(1,Buffer2);
return(0);
}

int start()
{
int limit,counted_bars;
counted_bars=IndicatorCounted(); //counted_bars=Bars-1
if(counted_bars>0) counted_bars--; //??? counted_bars=Bars-1-1
limit=Bars-counted_bars; //лимит теперь равен двум
for(int i=0; i<limit; i++){
Buffer2[i]=MathAbs(Close[i]-Open[i]);
}
for(i=0; i<limit; i++){
Buffer1[i]=Buffer2[i]*(-1);
}
}

 
Chers programmeurs, aidez-moi s'il vous plaît à insérer un son dans l'indicateur qui sonnerait quand l'indicateur traverse le zéro. Merci !
Dossiers :
 
C-4 >> :
Je n'arrive pas à comprendre pourquoi l'affectation d'un tampon à un autre n'est pas correcte (le résultat de Buffer1 n'apparaît pas dans la fenêtre de l'indicateur)...

SetIndexStyle(0,DRAW_LINE) ; est manquant pour le tampon de dessin, et IndicatorBuffers(2) pour le tampon de calcul ;



 
Bingo ! Bien sûr, IndicatorBuffers(2), je pensais que spécifier SetIndexBuffer était suffisant. D'ailleurs, même sans SetIndexStyle(0,DRAW_LINE), j'obtiens une fine ligne noire - les paramètres par défaut sont engagés.
 

Bonjour les experts.

J'ai créé un EA qui ne ferme que les ordres ouverts !(négociation semi-automatique).

Règles de clôture : La clôture principale va au canal de prix, s'il casse 1 point vers le haut, fermez SHELL,

Si 1 point de moins ferme BAY. En outre, l'assurance breakeven quelques points à une certaine distance.

J'ai une question : si j'ai tout fait correctement, est-ce que le code est correct ! !!?

extern bool check=false; 
extern int PeriodP=12; 
extern double TrailingStop = 35;// расстояние после которого будем устанавливать безубыток
extern double X=5;//установка в + 5 пунктов! 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double P_up0, P_down0, P_up1, P_down1;
   int cnt, total;

  P_up0=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,0,0);
  P_down0=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,1,0);
  P_up1=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,0,1);
  P_down1=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,1,1);

    
   for( cnt=OrdersTotal()-1; cnt>=0; cnt--) {
      OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&    OrderSymbol()==Symbol())   {
         if(OrderType()==OP_BUY) 
            {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); 
                 return(0); 
                }
            if( TrailingStop>0)  
              {                  
               if(Bid-OrderOpenPrice()>Point* TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point* TrailingStop && OrderStopLoss()!=OrderOpenPrice()+ X*Point)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+ X*Point,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
         else  
         {
            
            if( P_up1< P_up0) 
            {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); 
               return(0); 
              }
            if( TrailingStop>0)  
              {               
               if((OrderOpenPrice()-Ask)>(Point* TrailingStop))
                 {
                  if(NormalizeDouble(OrderStopLoss(),Digits) != NormalizeDouble(OrderOpenPrice()- X*Point,Digits))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()- X*Point,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }
            
           }
        }
     
   if ( check) Order_Open();
   return(0);
  }
//+------------------------------------------------------------------+

void Order_Open(){
   if (OrdersTotal()<=1) {
      OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"",20080421,0);
      OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",20080421,0);
   }
}
 
Il n'y a pas de condition pour fermer une position longue, maintenant l'ordre d'achat sera fermé de toute façon.
Si vous avez une surcharge d'ordres, assurez-vous de placer RefreshRates() avant ou après OrderSelect.
 
Roger >> :
Pas de condition pour fermer la position longue, maintenant l'ordre BUY va fermer de toute façon.

J'ai trouvé l'erreur. J'ai vraiment raté la fermeture de la BUY.

au moins la compilation s'est achevée sans erreur.

extern bool check=false; 
extern int PeriodP=12; 
extern double TrailingStop = 35;// расстояние после которого будем устанавливать безубыток
extern double X=5;//установка в + 5 пунктов! 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double P_up0, P_down0, P_up1, P_down1;
   int cnt, total;

  P_up0=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,0,0);
  P_down0=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,1,0);
  P_up1=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,0,1);
  P_down1=iCustom(Symbol(),Period(),"Ценовой канал", PeriodP,1,1);

    
   for( cnt=OrdersTotal()-1; cnt>=0; cnt--) {
      OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&    OrderSymbol()==Symbol())   {
         if(OrderType()==OP_BUY) {  
            
            if( P_down1> P_down0) {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); 
                 return(0); 
                }
            if( TrailingStop>0)  
              {                  
               if(Bid-OrderOpenPrice()>Point* TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point* TrailingStop && OrderStopLoss()!=OrderOpenPrice()+ X*Point)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+ X*Point,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
            else  
            {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); 
               return(0); 
              }
            if( TrailingStop>0)  
              {               
               if((OrderOpenPrice()-Ask)>(Point* TrailingStop))
                 {
                  if(NormalizeDouble(OrderStopLoss(),Digits) != NormalizeDouble(OrderOpenPrice()- X*Point,Digits))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()- X*Point,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }
            
           }
        
     }
   if ( check) Order_Open();
   return(0);
  }
//+------------------------------------------------------------------+

void Order_Open(){
   if (OrdersTotal()<=1) {
      OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,"",20080421,0);
      OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",20080421,0);
   }
}
 

une question très "simple" : comment calculez-vous le prix d'un (un) lot d'indice ouvert dans la devise de dépôt?

Exemple : hier j'ai ouvert 1 lot nikkei le prix au moment de l'ouverture était de 9400 pips. question : comment puis-je savoir combien d'argent était 9400 (PAS le dépôt ! à savoir le prix du lot) dans la monnaie de dépôt au moment de l'ouverture ?

 
jobber писал(а) >>

une question très "simple" : comment calculez-vous le prix d'un (un) lot d'indice ouvert dans la devise de dépôt ?

Exemple : hier j'ai ouvert 1 lot nikkei le prix au moment de l'ouverture était de 9400 pips. ma question est : comment puis-je savoir combien d'argent 9400 était (PAS le dépôt ! à savoir le prix du lot) dans la monnaie de dépôt au moment de l'ouverture ?

i>MarketInfo() ne sera pas utile avec ce paramètre.