[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 295

 
isCloseLastPosByStop - Renvoie l'indicateur de clôture de la dernière position par stop
isCloseLastPosByTake - Renvoie l'indicateur de clôture de la dernière position par take profit.
 

Correction de l'aide, stockistik standard, ajout d'une alerte qui ne fonctionne pas correctement, je n'arrive pas à savoir où se trouve l'erreur.....

Merci

//+------------------------------------------------------------------+
//|                                                   Stochastic.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//+------------------------------------------------------------------+

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
#property  indicator_width1 1
#property  indicator_width2 1
#property indicator_level1 20
#property indicator_level2 50
#property indicator_level3 80
#property indicator_levelcolor DimGray
//---- input parameters
//+------------------------------------------------------------------+
extern bool Alerts  = true;
//+------------------------------------------------------------------+
extern int AlertBar = 1; 
//+------------------------------------------------------------------+
extern int KPeriod  = 5;
//+------------------------------------------------------------------+
extern int DPeriod  = 2;
//+------------------------------------------------------------------+
extern int Slowing  = 3;
//+------------------------------------------------------------------+
extern int MAMethod = 3; // 0=SMA,1=EMA,2=SSMA,3=LWMA
//+------------------------------------------------------------------+
//-------------------------------------------------------------------+
//-----
datetime LastAlertTime = -333;
//---- Buffers
double MainBuffer[];
double SignalBuffer[];
double HighesBuffer[];
double LowesBuffer[];
//----
int    MAMode;
string strMAType;
//----
int draw_begin1=0;
int draw_begin2=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
  string short_name;
//---- 2 additional buffers are used for counting.
  IndicatorBuffers(4);
//---- indicator lines
  SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1);
  SetIndexBuffer(0,MainBuffer);
  SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
  SetIndexBuffer(1,SignalBuffer);
//----
  SetIndexBuffer(2,HighesBuffer);
  SetIndexBuffer(3,LowesBuffer);
//----
  switch(MAMethod)
  {
    case 1:  strMAType="EMA";  MAMode=MODE_EMA;  break;
    case 2:  strMAType="SMMA"; MAMode=MODE_SMMA; break;
    case 3:  strMAType="LWMA"; MAMode=MODE_LWMA; break;
    default: strMAType="SMA";  MAMode=MODE_SMA;  break;
  }
//---- name for DataWindow and indicator subwindow label
  short_name="Stochastic ("+KPeriod+","+DPeriod+","+Slowing+","+strMAType+")";
  IndicatorShortName(short_name);
  SetIndexLabel(0,short_name);
  SetIndexLabel(1,"Signal");
//----
  draw_begin1=KPeriod+Slowing;
  draw_begin2=draw_begin1+DPeriod;
  SetIndexDrawBegin(0,draw_begin1);
  SetIndexDrawBegin(1,draw_begin2);
//----
  return(0);
}
//+------------------------------------------------------------------+
//| Stochastic oscillator                                            |
//+------------------------------------------------------------------+
int start()
{
  int i,k;
  int counted_bars=IndicatorCounted();
  double price;
//----
  if(Bars<=draw_begin2) return(0);
//---- initial zero
  if(counted_bars<1)
  {
    for(i=1;i<=draw_begin1;i++) MainBuffer[Bars-i]=0;
    for(i=1;i<=draw_begin2;i++) SignalBuffer[Bars-i]=0;
  }
//---- minimums counting
  i=Bars-KPeriod;
  if(counted_bars>KPeriod) i=Bars-counted_bars-1;
  while(i>=0)
  {
    double min=1000000;
    k=i+KPeriod-1;
    while(k>=i)
    {
      price=Low[k];
      if(min>price) min=price;
      k--;
    }
    LowesBuffer[i]=min;
    i--;
  }
//---- maximums counting
  i=Bars-KPeriod;
  if(counted_bars>KPeriod) i=Bars-counted_bars-1;
  while(i>=0)
  {
    double max=-1000000;
    k=i+KPeriod-1;
    while(k>=i)
    {
      price=High[k];
      if(max<price) max=price;
      k--;
    }
    HighesBuffer[i]=max;
    i--;
  }
//---- %K line
  i=Bars-draw_begin1;
  if(counted_bars>draw_begin1) i=Bars-counted_bars-1;
  while(i>=0)
  {
    double sumlow=0.0;
    double sumhigh=0.0;
    for(k=(i+Slowing-1);k>=i;k--)
    {
      sumlow+=Close[k]-LowesBuffer[k];
      sumhigh+=HighesBuffer[k]-LowesBuffer[k];
    }
    if(sumhigh==0.0) MainBuffer[i]=100.0;
    else MainBuffer[i]=sumlow/sumhigh*100;
    i--;
  }
//---- last counted bar will be recounted
  if(counted_bars>0) counted_bars--;
  int limit=Bars-counted_bars;
//---- signal line is simple movimg average
  for(i=0; i<limit; i++)
  SignalBuffer[i]=iMAOnArray(MainBuffer,Bars,DPeriod,0,MAMethod,i);
//+------------------------------------------------------------------+ 
  if(Alerts)
  {
    if(AlertBar >= 0 && Time[0] > LastAlertTime)
    {
      if(MainBuffer[i+AlertBar] > SignalBuffer[i+AlertBar] && MainBuffer[i+AlertBar+1] <= SignalBuffer[i+AlertBar+1])
      {
        Alert("Stochastic BULL! ",Symbol()," TF: ",Period());
      }
      if(MainBuffer[i+AlertBar] < SignalBuffer[i+AlertBar] && MainBuffer[i+AlertBar+1] >= SignalBuffer[i+AlertBar+1])
      { 
        Alert("Stochastic BEAR! ",Symbol()," TF: ",Period());
      }
    }
    LastAlertTime = Time[0];
  }
//----
  return(0);
}
//+------------------------------------------------------------------+
 

Je veux faire un multi MA. C'est-à-dire que 2 MAs doivent être visibles sur le graphique - une pour l'instrument actuel et une autre pour le second instrument :

Il s'agit de les lier entre eux, car la volatilité et la multiplicité des points de chaque instrument sont différentes. Je ne peux pas penser à quelque chose d'utile. .... Au secours ! :)

 
Cmu4:

Je veux faire un multi MA. C'est-à-dire que 2 MAs doivent être visibles sur le graphique - une pour l'instrument actuel et une autre pour le second instrument :

Il s'agit de les lier entre eux, car la volatilité et la multiplicité des points de chaque instrument sont différentes. Je ne peux pas penser à quelque chose d'utile. .... Au secours ! :)

Avec la sous-fenêtre, j'espère que cela ne posera pas de problèmes.

Cela dépend de la tâche, vous pouvez prendre une MA avec une grande période sur les deux graphiques et la prendre comme base.

Par exemple, le MA de travail a une période de 12. Pour le symbole principal, nous le dessinons tel qu'il est.

Pour les autres symboles, on trouve la différence entre le MA 12 et 60 ; cette différence multipliée par le coefficient doit être ajoutée au MA 60 du symbole principal.

 
artmedia70:

Et pour clarifier ? La première position doit-elle être choisie parmi celles qui sont ouvertes (sur le marché) ou celles qui sont déjà fermées ? Et si le premier poste a été ouvert il y a trois ans ? Doit-il être sélectionné ?

Et à quoi ça sert ?

Pour choisir le premier parmi les positions ouvertes.

Il est nécessaire de vérifier la distance en pips entre la première position ouverte et la dernière position ouverte.

 
forexnew:
J'ai essayé d'utiliser la méthode IsConnected() - aucun effet. Des conseils ?

Peut-être voir ce qui retourne IsTradeAllowed() ?

Aidez-moi, s'il vous plaît. J'essaie de construire une tendance en fonction de deux points attachés aux barres pour N barres en avant du dernier point. C'est-à-dire entrant - prix en temps du premier et du deuxième point, et N exprimé en nombre de barres à venir (case à cocher faisceau = faux). Si le deuxième point, par exemple, se trouve sur la barre 1 à partir de la barre 0 actuelle, et que je dois en tirer des informations 10 barres plus loin, comment puis-je calculer le moment et le prix de la barre à partir du futur ?

 

Aidez-moi, s'il vous plaît.

Comment puis-je connaître le temps High[3] ?

 
alex11230:

Aidez-moi, s'il vous plaît.

Comment puis-je connaître le temps High[3] ?


Temps [3]
 
Roll:

Essayez-le :
Merci :)
 

Comment se représenter :

/

dans la chaîne ?

Par exemple :

string path=TerminalPath()+"/logs/"+tekTime+".log" ;

donne une erreur, et si vous enlevez le slash "/"

string path=TerminalPath()+"logs "+tekTime+".log" ;

- pas d'erreur.