[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 236

 

Colegas, estoy un poco confundido.

Es necesario utilizar el indicador para trazar una línea entre dos puntos


   SetIndexShift(0, DRAW_SECTION);
   SetIndexBuffer(0, z1);

   z1[1]=1.5;
   z1[2]=EMPTY_VALUE;
   z1[3]=EMPTY_VALUE;
   z1[4]=EMPTY_VALUE;
   z1[5]=EMPTY_VALUE;
   z1[6]=1.4;

No funciona así, ¿verdad?
 
neoclassic >> :

Colegas, un poco confundidos.

Es necesario utilizar el indicador para trazar una línea entre dos puntos

Y echa un vistazo a la ayuda de SetIndexShift. Función incorrecta. El tuyo es SetIndexStyle.

P.D.: y si se dibujan líneas utilizando la fórmula y=kx+b, entonces el indicador

se define para cada dos puntos :-).

 
jartmailru >> :

Y echa un vistazo a la ayuda de SetIndexShift. Función incorrecta. El tuyo es SetIndexStyle.

P.D.: y si se trazan líneas utilizando la fórmula y=kx+b, el indicador

definido para cada dos puntos :-).

Así es como sucede, más de un indicador escrito, shifter mezclado con stile :-) no hay error, me relajé.... gracias :-)

 

Chicos, podéis ayudarme a cambiar el indicador para que dibuje una elipse junto con la parábola, quiero comparar los resultados del EA. Me parece que la elipse es más adecuada para el stoploss que la parábola. ¿Alguien tiene un indicador de este tipo? ¿Basado en elipses? Me gustaría comparar los resultados con los de una parábola.

Archivos adjuntos:
 
001 писал(а) >>

Chicos, podéis ayudarme a cambiar el indicador para que dibuje una elipse junto con la parábola, quiero comparar los resultados del EA. Me parece que la elipse es más adecuada para el stoploss que la parábola. ¿Alguien tiene un indicador de este tipo? ¿Basado en elipses? Gracias de antemano.

He intentado conectar este indicador como externo en mi Asesor Experto. No entiendo qué es lo que está mal.

Tengo la siguiente información en mi indicador

extern double Paso=0,0513;
extern double Máximo=0,46;

En mi Asesor Experto:

extern double steptop=0.005;
extern double maximumstepstop=0,05;

double sarstop=iCustom(NULL,0, "ParabolicM",steptop,maximumstepstop,0,0);

Como resultado:

2009.09.25 17:01:42 2001.09.24 09:00 EnveIn EURUSD,M30: sarstop = 0.8625

2009.09.25 17:01:42 2001.09.24 09:00 EnveIn EURUSD,M30: sarstop = 0.8625

2009.09.25 17:01:42 2001.09.24 09:00 EnveIn EURUSD,M30: sarstop = 0.8625

2009.09.25 17:01:42 2001.09.24 09:00 EnveIn EURUSD,M30: sarstop = 0.8625

Significa que la lectura no cambia

 

¡Hola!


Tengo una pregunta sobre la lógica del Asesor Experto y debido a la falta de experiencia en programación, estoy apelando a aquellos que lo entienden.

Tengo un código (encontrado en un foro occidental y no puedo recordar el nombre del autor por desgracia), que se supone que el registro de la intersección de las líneas del indicador estocástico en cuatro marcos de tiempo. Si la línea principal es superior a la línea de señal en todos los plazos, se ejecuta el código para abrir la orden. Esta idea es genial, por supuesto, pero su implementación causó muchos problemas. Después de recorrer el historial vi que a veces la orden se abre cuando el evento se registra en un solo marco de tiempo. No puedo entender cuál puede ser el problema, ya que parece que las condiciones básicas están en su lugar.


Le agradecería cualquier ayuda.



double M1, S1, M2, S2, M3, S3, M4, S4;

string Sig;
string St;
double ticket;

int start()
{
M1=iStochastic(NULL,PERIOD_M15,14,3,3,MODE_SMA,0,MODE_MAIN,1);
S1=iStochastic(NULL,PERIOD_M15,14,3,3,MODE_SMA,0,MODE_SIGNAL,1);

M2=iStochastic(NULL,PERIOD_M30,14,3,3,MODE_SMA,0,MODE_MAIN,1);
S2=iStochastic(NULL,PERIOD_M30,14,3,3,MODE_SMA,0,MODE_SIGNAL,1);
M3=iStochastic(NULL,PERIOD_H1,14,3,3,MODE_SMA,0,MODE_MAIN,1);
S3=iStochastic(NULL,PERIOD_H1,14,3,3,MODE_SMA,0,MODE_SIGNAL,1);
M4=iStochastic(NULL,PERIOD_H4,14,3,3,MODE_SMA,0,MODE_MAIN,1);
S4=iStochastic(NULL,PERIOD_H4,14,3,3,MODE_SMA,0,MODE_SIGNAL,1);

St = "READY";

Sig = "NONE";

if(M1>S1, M2>S2 && M3>S3 && M4>S4)
{
Sig="LONG";
}
if(M1<S1, M2<S2 && M3<S3 && M4<S4)
{
Sig="SHORT";
}

if(St=="READY" && Sig=="LONG")
{
ticket=OrderSend(Symbol(),OP_BUY,LotSize,Ask,5,Bid-SL*Point,Bid+TP*Point,LongComment,Magic,0,Blue);
if(ticket>-1)
{
St="LONG ON";
}
}

if(St=="READY" && Sig=="SHORT")
{
ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,5,Ask+SL*Point,Ask-TP*Point,ShortComment,Magic,0,Red);
if(ticket>-1)
{
St="SHORT ON";
}
}

}

 
if-t >> :

¡Hola!

Tengo un código (lo encontré en uno de los foros occidentales y no recuerdo el nombre del autor por desgracia) que es supuestamente ......

..... ha comprobado que a veces se abre una orden cuando se registra un evento en un solo plazo.

Agradeceré la ayuda.



Tal vez el problema sea esta extraña entrada :

if(M1>S1, M2>S2 && M3>S3 && M4>S4)
¿Qué significa esto? -
(M1>S1, M2>S2

¿Tal vez en lugar de una coma pruebe con el operador " && " ? (tanto para comprar como para vender)

 
rid >> :

Tal vez el problema sea esta extraña entrada :

¿Qué significa esto? -

¿Tal vez en lugar de una coma intente poner el operador " && " ? (tanto para comprar como para vender)

Rid, ¡muchas gracias por tu respuesta! Este error lo cometí al reordenar las variables (ya tengo la cabeza hinchada y cometo errores primitivos). La variante original es correcta:

if(M1>S1 && M2>S2 && M3>S3 && M4>S4)

Pero no funciona. Sigo pensando que tal vez la variable St no siempre recibe los valores correctos? Pero en realidad si la condición no se cumple el código no debería ejecutarse... En general, soy un programador como una bailarina y no puedo prescindir de la ayuda de los profesionales...


 

Por cierto, intenté insertar una impresión, pero las variables parecen tener los valores correctos.

 

Intenté escribir mi primer indicador pero sólo dibuja una línea en lugar de dos.

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Red
//---- buffers
double Buf_1[], Buf_2[];


//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0, Buf_1);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0, Buf_2);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    i, 
          Counted_bars=IndicatorCounted();
//----
i=Bars- Counted_bars-1;           // Индекс первого непосчитанного
   while( i>=0) 
      {  
       Buf_1[ i]= Close[ i]; 
       Buf_2[ i]= Open[ i];
       i--;
      }
 
//----
   return(0);
Razón de la queja: