Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 98

 
Roger:

No me lo creo, este EA no puede funcionar ni en el sitio real ni en el tester.


¿Por qué? ¿Hay algún error? Explícate.

Esta es sólo una parte del código que se encarga de convertir las líneas horizontales en órdenes.

 
Por favor, ayuda. Cómo hacer que un EA optimice a una distancia de 20-30 barras a cero. Al final de la carta......
 

Ayuda a entender el indicador, no puedo entender por qué durante las señales no se muestran en tiempo real, pero sólo si se cambia el marco de tiempo, en el probador de visualización todo se representa como debe ser.

antes de actualizar http://charts.mql5.com/2/379/eurusd-m-m1-roboforex.png

después de http://charts.mql5.com/2/379/eurusd-m-m1-roboforex-2.png

//+------------------------------------------------------------------+
//|                                                           t27_zz |
//|                                                          tommy27 |
//|                                        SKYPE:       t.o.m.m.y.27 |
//|                                        MAIL: tommy27fx@gmail.com |
//+------------------------------------------------------------------+
#property copyright "tommy27"
#property link      "tommy27fx@gmail.com"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 DodgerBlue
#property indicator_color2 FireBrick

extern int DeepBars = 5000;
double buf_1[];
double buf_2[];
//+------------------------------------------------------------------+
//| Функция инициализации, запускается один раз                      |
//+------------------------------------------------------------------+
int init() 
  {
   SetIndexBuffer(0,buf_1);
   SetIndexBuffer(1,buf_2);

   SetIndexStyle (0,DRAW_ARROW, STYLE_SOLID, 2);
   SetIndexStyle (1,DRAW_ARROW, STYLE_SOLID, 2);
   SetIndexArrow (0,108);
   SetIndexArrow (1,108);

   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   IndicatorShortName("t27_zz");
   return(0);
  }
//+------------------------------------------------------------------+
//| Основная Функция, запускается на каждом тике                     |
//+------------------------------------------------------------------+
int start() 
  {
   if (Bars <= 100) return(0);
   int ExtCountedBars = IndicatorCounted();
   if (ExtCountedBars < 0) return(-1);
   if (ExtCountedBars > 0) ExtCountedBars--;
   for (int i=DeepBars-ExtCountedBars-1; i>=0; i--)
     { 
      if (Bar1(i)==1)   buf_1[i+1] = Low[i+1]-5*Point;//UP
      if (Bar1(i)==2)   buf_2[i+1] = High[i+1]+5*Point;//DOWN
     }
   return(0);
  }
//---- end
//------------------------------------------------------------------------
int Bar1(int i)
{
 if(Low[i+1] <= Low[i+2] && Low[i+1] <= Low[i])//UP
  return(1);
 if(High[i+1] >= High[i+2] && High[i+1] >= High[i])//DOWN
  return(2);
 return(0);
} 
 
tommy27:

Ayudar a entender el indicador, no puedo entender por qué durante las señales no se muestran en tiempo real, pero sólo si se cambia el marco de tiempo, en el probador de visualización, todo rindió como debería.



Tengo que lidiar con la variable DeepBars.

 
splxgf:


Tratar la variable DeerBars.


¡Muchas gracias! He quitado las DeerBars y todo ha funcionado, ¿puedes decirme también cómo configurar correctamente la profundidad mostrada entonces, con qué sustituir las DeerBars ahora ?
 

¿Por qué reemplazarlo?

if (ExtCountedBars > 0) ExtCountedBars--;
int recalc=Bars-ExtCountedBars;//добавить
for (int i=recalc; i>=0; i--)//поправить
 
splxgf:

¿Por qué reemplazarlo?


Sí, lo corregí así:

if (ExtCountedBars > 0) ExtCountedBars--;
   for (int i=Bars-ExtCountedBars-1; i>=0; i--)

y con DeepBars quería establecer el número de barras para no mostrar toda la historia, pero para mostrar en el último DeepBars - esto por alguna razón no puedo hacer.

 
<br / translate="no">

Y con DeepBars quería establecer el número de barras, para que no mostrara todo el historial, sino que mostrara las últimas DeepBars - por alguna razón no puede hacerlo.


if (ExtCountedBars > 0) ExtCountedBars--;
int recalc=Bars-ExtCountedBars;
if (recalc>DeepBars) recalc=DeepBars;
 
Muchas gracias por tu ayuda, me has ayudado mucho.
 
Dozol:


¿Por qué? ¿Hay algún error? Explícate.

Esta es sólo la parte del código responsable de convertir las líneas horizontales en órdenes.

Según su código, la línea se borrará después del primer tick, es decir, no hay función de seguimiento del precio y funciona como un script - se dibuja manualmente una línea horizontal, se abre una orden o no, pero la línea se borra inmediatamente. Los pedidos de Sellstop con este código nunca se abrirán.
Razón de la queja: