[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 295

 
isCloseLastPosByStop - Restituisce il flag per chiudere l'ultima posizione per stop
isCloseLastPosByTake - Restituisce il flag per chiudere l'ultima posizione per take profit.
 

Aiuto fix, stockistik standard, aggiunto un avviso che non funziona correttamente, non riesco a capire dove sia l'errore....

Grazie

//+------------------------------------------------------------------+
//|                                                   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);
}
//+------------------------------------------------------------------+
 

Voglio fare un multi MA. Cioè 2 MA dovrebbero essere visibili sul grafico - una per lo strumento corrente e un'altra per il secondo strumento:

C'è una questione di legarli l'uno all'altro, perché la volatilità e la molteplicità dei punti di ogni strumento è diversa. Non mi viene in mente niente di utile.... Aiuto! :)

 
Cmu4:

Voglio fare un multi MA. Cioè 2 MA dovrebbero essere visibili sul grafico - una per lo strumento corrente e un'altra per il secondo strumento:

C'è una questione di legarli l'uno all'altro, perché la volatilità e la molteplicità dei punti di ogni strumento è diversa. Non mi viene in mente niente di utile.... Aiuto! :)

Con la sottofinestra spero che non causi problemi.

Dipende dal compito, si può prendere una MA con un grande periodo su entrambi i grafici e prenderla come base.

Per esempio, il MA lavorativo ha un periodo di 12. Per il simbolo principale lo disegniamo così com'è.

Per gli altri simboli, troviamo la differenza tra il MA 12 e 60; questa differenza moltiplicata per il coefficiente deve essere aggiunta al MA 60 del simbolo principale.

 
artmedia70:

E per chiarire? La prima posizione deve essere selezionata tra quelle aperte (nel mercato) o tra quelle già chiuse? E se la prima posizione fosse stata aperta tre anni fa? Deve essere selezionato?

E a cosa serve tutto questo?

Scegliere il primo tra le posizioni aperte.

È necessario controllare la distanza in pip tra la prima posizione aperta e l'ultima posizione aperta.

 
forexnew:
Ho provato a usare il metodo IsConnected() - nessun effetto. Qualche consiglio?

Forse vedere cos'altro restituisce IsTradeAllowed()?

Per favore, aiutatemi. Sto cercando di costruire una tendenza secondo due punti attaccati alle barre per N barre avanti dall'ultimo punto. Cioè in arrivo - tempo-prezzo del primo e del secondo punto, e N espresso in numero di barre avanti (casella di controllo fascio = falso). Se il secondo punto, supponiamo, si trova sulla barra 1 dalla barra 0 corrente, e devo trarne 10 barre avanti, come posso calcolare il tempo e il prezzo della barra dal futuro?

 

Per favore, aiutatemi.

Come posso scoprire il tempo High[3]?

 
alex11230:

Per favore, aiutatemi.

Come posso scoprire il tempo High[3]?


Tempo[3]
 
Roll:

Provate:
Grazie :)
 

Come ritrarre:

/

in stringa?

Per esempio:

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

dà un errore, e se si rimuove la barra "/"

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

- nessun errore.