[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 295

 
isCloseLastPosByStop- Dev uelve labanderapara cerrar la última posición por stop
isCloseLastPosByTake - Devuelve la bandera para cerrar la última posición por take profit.
 

Ayuda para arreglar, stockistik estándar, añadió una alerta que no funciona correctamente, no puede averiguar dónde está el error....

Gracias

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

Quiero hacer un multi MA. Es decir, deberían ser visibles 2 MAs en el gráfico - una para el instrumento actual, la otra para el segundo instrumento:

Se trata de vincularlos entre sí, porque la volatilidad y la multiplicidad de puntos de cada instrumento es diferente. No se me ocurre nada útil.... ¡Ayuda! :)

 
Cmu4:

Quiero hacer un multi MA. Es decir, deberían ser visibles 2 MAs en el gráfico - una para el instrumento actual y otra para el segundo instrumento:

Se trata de vincularlos entre sí, porque la volatilidad y la multiplicidad de puntos de cada instrumento es diferente. No se me ocurre nada útil.... ¡Ayuda! :)

Espero no tener problemas con la subventana.

Depende de la tarea, se puede tomar una MA con un gran periodo en ambos gráficos y tomarla como base.

Por ejemplo, el MA de trabajo tiene un periodo de 12. Para el símbolo principal lo dibujamos tal cual.

Para los demás símbolos, hallamos la diferencia entre la MA 12 y la 60; esta diferencia multiplicada por el coeficiente debe añadirse a la MA 60 del símbolo principal.

 
artmedia70:

¿Y para aclarar? ¿La primera posición debe seleccionarse entre las que están abiertas (en el mercado) o las que ya están cerradas? ¿Y si el primer puesto se abrió hace tres años? ¿Es necesario seleccionarla ?

¿Y para qué sirve todo esto?

Para elegir el primero de los puestos abiertos.

Es necesario comprobar la distancia en pips entre la primera posición abierta y la última posición abierta.

 
forexnew:
He intentado utilizar el método IsConnected() - sin efecto. ¿Algún consejo?

¿Quizás ver qué más devuelve IsTradeAllowed() ?

Por favor, ayuda. Estoy tratando de construir una tendencia de acuerdo a dos puntos adjuntos a las barras para N barras por delante desde el último punto. Es decir, entrante - tiempo-precio del primer y segundo punto, y N expresado en número de barras por delante (haz de la casilla = falso). Si el segundo punto, supongamos, se encuentra en la barra 1 de la barra 0 actual, y tengo que sacar de él 10 barras adelante, ¿cómo puedo calcular el tiempo y el precio de la barra del futuro?

 

Por favor, ayuda.

¿Cómo puedo saber la hora Alta[3]?

 
alex11230:

Por favor, ayuda.

¿Cómo puedo saber la hora Alta[3]?


Tiempo[3]
 
Roll:

Pruébalo:
Gracias :)
 

Cómo retratar:

/

¿en cadena?

Por ejemplo:

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

da un error, y si se elimina la barra "/"

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

- ningún error.