Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 98

 
Roger:

Não acredito nisso, este EA não pode funcionar nem no real nem no de teste.


Por quê? Há algum erro? Explicar.

Esta é apenas uma parte do código que é responsável pela conversão de linhas horizontais em ordens.

 
Por favor, ajude. Como fazer uma EA otimizar a uma distância de 20-30 barras a zero. No final da tabela......
 

Ajuda para entender o indicador, não consigo entender porque durante os sinais não são exibidos em tempo real, mas somente se você mudar o período de tempo, no testador de visualização tudo é apresentado como deveria ser.

antes da atualização http://charts.mql5.com/2/379/eurusd-m-m1-roboforex.png

após 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:

Ajuda para entender o indicador, não consigo entender porque durante os sinais não são exibidos em tempo real, mas somente se você mudar o período de tempo, no testador de visualização, tudo apresentado como deveria.



Eu tenho que lidar com a variável DeepBars.

 
splxgf:


Lidar com a variável DeerBars.


Muito obrigado! Removido o DeerBars e tudo funcionou, você também pode me dizer como definir corretamente a profundidade exibida então, o que substituir oDeerBars por agora ?
 

Por que substituí-lo?

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

Por que substituí-lo?


Sim, eu corrigi dessa forma:

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

e com o DeepBars eu queria definir o número de barras para não mostrar toda a história, mas para exibir no último DeepBars - isto por alguma razão eu não posso fazer.

 
<br / translate="no">

E com o DeepBars eu queria definir o número de barras, para que ele não mostrasse toda a história, mas mostrasse no último DeepBars - por alguma razão ele não pode fazer isso.


if (ExtCountedBars > 0) ExtCountedBars--;
int recalc=Bars-ExtCountedBars;
if (recalc>DeepBars) recalc=DeepBars;
 
Muito obrigado por sua ajuda, você tem me ajudado muito.
 
Dozol:


Por quê? Há algum erro? Explicar.

Esta é apenas a parte do código responsável pela conversão das linhas horizontais em ordens.

De acordo com seu código, a linha será excluída após o primeiro sinal, ou seja, não há função de rastreamento de preço e funciona como um script - você desenha manualmente uma linha horizontal, um pedido é aberto ou não, mas a linha é imediatamente excluída. As ordens de venda por este código nunca serão abertas.
Razão: