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

 
dzhini: Pourquoi je ferais ça. Je pose une question, est-il vraiment nécessaire de troller pour une réponse d'abord ?

Posez la question correctement.

dzhini:La question est la suivante : comment passer une minute à l'intérieur d'un cadre temporel supérieur avec des informations sur leur prix d'ouverture (de la minute) ?
iOpen(Symbol(),PERIOD_M1,shift);

vous donnera une réponse.

 
Les gars, vous pouvez me donner un indice ? Ce site a un script appelé "SendOrderMultiLock". J'aimerais savoir s'il est possible de l'allumer à un moment donné ?
 
dzhini:

Puisque vous avez pris l'initiative, essayons de trouver un code qui nous signalerait toutes les minutes le prix d'ouverture d'une bougie d'une minute sur un graphique de cinq minutes (avec la possibilité de travailler dans un testeur). Je propose ma propre variante :

Cette option est meilleure.
 
Merci pour ça aussi.
 
dzhini:
Merci.
// функция записывает в массив result[] цены открытия минутных баров 
// внутри бара с индексом shift текущего таймфрейма. Возвращаемое значение - количество соответствующих минутных баров
// 

int M1_OpenPrices(int shift, double &result[])
{
   int n=0;
   ArrayResize(result,n);
   
   int sh, sh1 = iBarShift(0, PERIOD_M1, Time[shift]);
   
   for(sh=sh1;sh>=0;sh--)
   {
      if(iBarShift(0, 0, iTime(0,PERIOD_M1,sh))!=shift) break;
      n++;
      ArrayResize(result,n);
      result[n-1] = iOpen(Symbol(),PERIOD_M1,sh1);
   }

   return(n);
}
Je pense que oui, regardez...
 
Qui sait comment faire en sorte que la couleur des lignes de take profit diffère sur le graphique de la couleur des stop loss automatiquement ? et comment faire en sorte qu'une icône apparaisse sur le graphique à l'endroit où l'ordre est placé ?
 

Aidez-moi à comprendre. Je construis le MACD sur la barre précédente (i+1). Je trouve les valeurs max et min visibles dans la fenêtre du graphique MACD. Je mets en commentaire les valeurs max, min et actuelles des lignes principale et de signal. Quelqu'un peut-il m'aider à comprendre.

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
#property  indicator_width1  2
//--- buffers
double Macd1Buffer[];
double Signal1Buffer[];

//--- for one bar
datetime last; 

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   //---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,Macd1Buffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,Signal1Buffer);
   
   IndicatorDigits(Digits+1);

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  Comment(""); 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    if(last>=Time[0]) return;
    
   double max_M1=-0.01,min_M1=0.01,
          max_S1=-0.01,min_S1=0.01,
          max1=-0.01,min1=0.01;
   
   int bars_counted=WindowBarsPerChart()-1,
       limit;  
       limit=bars_counted;
       
//---- macd counted in the 1-st buffer        
   for( int i=0; i<limit; i++)
              
   { 
      Macd1Buffer[i]=iMA(NULL,0,6,0,MODE_EMA,PRICE_CLOSE,i+1)-iMA(NULL,0,12,0,MODE_EMA,PRICE_CLOSE,i+1);
     
       max_M1=MathMax(Macd1Buffer[i],max_M1);
       min_M1=MathMin(Macd1Buffer[i],min_M1);
     
   }  
     
//---- macd counted in the 2-nd buffer       
   for( i=0; i<limit; i++)
           
   {
      Signal1Buffer[i]=iMAOnArray(Macd1Buffer,Bars,5,0,MODE_SMA,i);
      
       max_S1=MathMax(Signal1Buffer[i],max_S1);
       min_S1=MathMin(Signal1Buffer[i],min_S1);
            
   } 
   
       max1=MathMax(max_M1,max_S1);
       min1=MathMin(min_M1,min_S1);
   
   
   Comment( "\n"," Баров = ",WindowBarsPerChart()-1,
            "\n"," max1 = ",max1,
            "\n"," min1 = ",min1, 
            "\n"," Macd1Buffer = ",Macd1Buffer[i],
            "\n"," Signal1Buffer = ",Signal1Buffer[i]);
       
    last=Time[0];
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
MK07:

Aidez-moi à comprendre. Je construis le MACD sur la barre précédente (i+1). Je trouve les valeurs max et min visibles dans la fenêtre du graphique MACD. Je mets en commentaire les valeurs max, min et actuelles des lignes principale et de signal. Quelqu'un peut-il m'aider à comprendre.

Le type de données double est imprimé avec 4 chiffres décimaux après le point. Pour sortir des nombres avec une plus grande précision, vous devez utiliser la fonction DoubleToStr().

Exemple :

   Comment( "\n"," Баров = ",WindowBarsPerChart()-1,
            "\n"," max1 = ",max1,
            "\n"," min1 = ",min1, 
            "\n"," Macd1Buffer = ",DoubleToStr(Macd1Buffer[i],5),
            "\n"," Signal1Buffer = ",DoubleToStr(Signal1Buffer[i],5));
 
r772ra:

Les données de type double sont éditées avec 4 chiffres décimaux après le point. Pour sortir des nombres avec une plus grande précision, utilisez la fonction DoubleToStr().

... et dans votre cas, MK07, IndicatorDigits() signifie le nombre de chiffres dans la fenêtre de données et sur le graphique lui-même.
 
r772ra:

Les données de type double sont éditées avec 4 chiffres décimaux après le point. Pour sortir des nombres avec une plus grande précision, utilisez la fonction DoubleToStr().

exemple :

Merci pour le conseil Pourquoi les valeurs de la ligne MACD actuelle ne sont-elles pas affichées correctement dans le commentaire ?
Raison: