Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 98

 
Roger:

Non ci credo, questo EA non può funzionare né sul reale né nel tester.


Perché? C'è un errore? Spiegare.

Questa è solo una parte del codice che è responsabile della conversione delle linee orizzontali in ordini.

 
Per favore, aiutatemi. Come fare in modo che un EA ottimizzi ad una distanza di 20-30 barre dallo zero. Alla fine del grafico......
 

Aiuta a capire l'indicatore, non riesco a capire perché durante i segnali non vengono visualizzati in tempo reale, ma solo se si passa il timeframe, nel tester di visualizzazione tutto è reso come dovrebbe essere.

prima dell'aggiornamento http://charts.mql5.com/2/379/eurusd-m-m1-roboforex.png

dopo 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:

Aiuto per capire l'indicatore, non riesco a capire perché durante i segnali non vengono visualizzati in tempo reale, ma solo se si passa il timeframe, nel tester di visualizzazione, tutto reso come dovrebbe.



Ho a che fare con la variabile DeepBars.

 
splxgf:


Trattare la variabile DeerBars.


Grazie mille! Rimosso DeerBars e tutto ha funzionato, puoi anche dirmi come impostare correttamente la profondità visualizzata allora, con cosa sostituire DeerBars ora ?
 

Perché sostituirlo?

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

Perché sostituirlo?


Sì, l'ho corretto così:

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

e con DeepBars volevo impostare il numero di barre per non mostrare l'intera storia, ma per visualizzare sull'ultima DeepBars - questo per qualche motivo non posso farlo.

 
<br / translate="no">

E con DeepBars volevo impostare il numero di barre, in modo che non mostrasse l'intera storia, ma visualizzasse le ultime DeepBars - per qualche motivo non può farlo.


if (ExtCountedBars > 0) ExtCountedBars--;
int recalc=Bars-ExtCountedBars;
if (recalc>DeepBars) recalc=DeepBars;
 
Grazie mille per il vostro aiuto, mi avete aiutato molto.
 
Dozol:


Perché? C'è un errore? Spiegare.

Questa è solo la parte del codice responsabile della conversione delle linee orizzontali in ordini.

Secondo il tuo codice, la linea sarà cancellata dopo il primo tick, cioè non c'è una funzione di tracciamento del prezzo e funziona come uno script - si disegna manualmente una linea orizzontale, un ordine viene aperto o meno, ma la linea viene immediatamente cancellata. Gli ordini di Sellstop con questo codice non si apriranno mai.
Motivazione: