Una strategia di trend-following. - pagina 12

 
JLY:

E come faccio a rimuovere le icone se la linea non c'è più?

ObjectDelete(0,"имя значка"+name);
если у значка нет имени, то в данном случае
ObjectDelete(0,name);

Hai bisogno del calcolo del tempo in barre

Fallo nei bar.

si conosce il tempo, cioè Time[9] era di 9 battute.

Ho scritto solo l'inizio,

Allora fai quello che vuoi.

 
pako:

Il calcolo del tempo è necessario nei bar

farlo nei bar.

Avete il tempo conosciuto, cioè Time[9] era di 9 battute.

Ho scritto solo l'inizio,

Allora fai quello che vuoi.

Grazie, solo che non c'era bisogno di creare una linea (solo parametri impostati), e quindi tutto funziona.

Nel 4-esimo tempo in barre attraverso iBarShift è stato calcolato. Ho usato questa formula:

datetime time01=time1NEW;datetime time02=time2NEW;
int shift01=iBarShift(0,0,time01);int shift02=iBarShift(0,0,time02);//перевод из скунд в бары
int timeCHANGE=shift01-shift02;//разница между 1-й и 2-й точкой линии
int timeBAR=(shift02-timeCHANGE);//прибавить разницу ко 2-й точке
int timeBARc=Time[timeBAR];//Перевод из баров в секунды

La quinta non ha questa funzione, e non so come usare Copy*...

 
JLY:

Grazie, ma non c'era bisogno di creare una linea (solo parametri impostati), ma funziona.

Nel 4, il tempo in barre è stato contato attraverso iBarShift. Questa è la formula:

La quinta non ha questa funzione, e non so ancora come usare la funzione Copy*...

iBarShift analogico in 5

int iBarShift(string symbol,
                  int tf,
                  datetime time,
                  bool exact=false)
  {
   if(time<0) return(-1);
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   datetime Arr[],time1;
   CopyTime(symbol,timeframe,0,1,Arr);
   time1=Arr[0];
   if(CopyTime(symbol,timeframe,time,time1,Arr)>0)
     {
      if(ArraySize(Arr)>2) return(ArraySize(Arr)-1);
      if(time<time1) return(1);
      else return(0);
     }
   else return(-1);
  }
 
In MQL5 le costanti dei periodi sono cambiate (sono stati aggiunti nuovi periodi M2, M3, M4, M6, M10, M12, H2, H3, H6, H8, H12), si può usare la seguente funzione per convertire i periodi MQL4:
ENUM_TIMEFRAMES TFMigrate(int tf)
  {
   switch(tf)
     {
      case 0: return(PERIOD_CURRENT);
      case 1: return(PERIOD_M1);
      case 5: return(PERIOD_M5);
      case 15: return(PERIOD_M15);
      case 30: return(PERIOD_M30);
      case 60: return(PERIOD_H1);
      case 240: return(PERIOD_H4);
      case 1440: return(PERIOD_D1);
      case 10080: return(PERIOD_W1);
      case 43200: return(PERIOD_MN1);
      
      case 2: return(PERIOD_M2);
      case 3: return(PERIOD_M3);
      case 4: return(PERIOD_M4);      
      case 6: return(PERIOD_M6);
      case 10: return(PERIOD_M10);
      case 12: return(PERIOD_M12);
      case 16385: return(PERIOD_H1);
      case 16386: return(PERIOD_H2);
      case 16387: return(PERIOD_H3);
      case 16388: return(PERIOD_H4);
      case 16390: return(PERIOD_H6);
      case 16392: return(PERIOD_H8);
      case 16396: return(PERIOD_H12);
      case 16408: return(PERIOD_D1);
      case 32769: return(PERIOD_W1);
      case 49153: return(PERIOD_MN1);      
      default: return(PERIOD_CURRENT);
     }
  }
 
JLY:

Ho fatto il disegno per secondi, ci sono dei vuoti nel fine settimana, il che significa che devi ancora contare per barre.

int  PeriodSeconds(
   ENUM_TIMEFRAMES  period=PERIOD_CURRENT      // период графика
   );
Restituisce il numero di secondi nel periodo.
 
pako:

Grazie mille. Il barshift conta.

Non resta che tradurre la barra risultante in secondi. Nel 4, era Time[bar].

Nella 5, sto facendo così secondo la regola, ma non funziona:

datetime Time[];
int count=1; 
ArraySetAsSeries(Time,true);
int timeBARsec=CopyTime(_Symbol,_Period,timeBAR,count,Time);//Перевод из баров в секунды
 
JLY:

Grazie mille. Il barshift conta.

Non resta che tradurre la barra risultante in secondi. Nel 4, era Time[bar].

Nel 5°, lo faccio secondo la regola, ma non riesco a farlo funzionare:

Se ho capito bene la domanda.

    datetime Time[]; 
    ArraySetAsSeries(Time,true);
    CopyTime(Symbol(),PERIOD_CURRENT,0,100,Time);
    long timeBARsec = Time[2];//Перевод из баров в секунды, в данном случае Time[бар] бар = 2

    Comment("timeBARsec = ",StringToTime(Time[2]));
 
pako:

se ho capito bene la domanda

Sì, funziona) Grazie mille)

Se non c'è una "fine" è zero e non può essere vista.

File:
TimeEnd.mq5  5 kb
 

1. Ha fatto la precisione dell'ora per l'indicatore e l'ora nella descrizione dell'icona (includi la descrizione nelle proprietà del grafico).

2. Sarebbe meglio mettere le icone in un buffer? Solo come fare questo, come combinare tempo e prezzo nello stesso buffer?

3. Se la linea è disegnata e non c'è ancora un'icona (la barra non è apparsa), allora dà un errore (nella scheda "Esperti") e il lavoro con le altre icone si ferma.

2013.09.22 00:10:36 FlatExecution (EURUSD,D1) array out of range in 'FlatExecution.mq5' (124,30)

Quindi, l'array è fuori portata... L'errore è in questa linea:

long timeBARsec=Time[timeBAR];

Come posso fare in modo che il mio indicatore non sia paralizzato da questo errore? Come posso cambiare l'indicatore per non paralizzare il funzionamento di questo errore?

Algoritmo di trading: Entrata con l'icona del tempo, stop con la linea di entrata, uscita con l'icona della linea di entrata.

5. Regola del disegno delle linee: da ogni frattale a tutti i successivi, dall'alto in alto e dal basso in basso. Rimuovi le linee che sono toccate dal prezzo e non disegnarle.


File:
 

Il problema dell'errore è stato risolto.

L'icona è ora disegnata sull'apertura della barra dei segnali.

Se la linea viene eseguita, prende un aspetto diverso, la linea viene anche disegnata su di essa e perde il raggio. Se la linea non viene eseguita, è gialla.

Se la linea su cui la fermata diminuisce oltre il 2° punto, si può fare una fermata dopo il secondo punto. Di fatto la fermata può essere spostata anche lungo questa linea, se viene calcolata in modo diverso.

Il disegno rimane lo stesso, secondo i frattali.

Algoritmo. Il segno non significa sempre un acquisto o una vendita senza ambiguità. Tuttavia penso che le notizie lo influenzino in qualche modo. In effetti, il test non è stato effettuato perché non esiste un disegno automatico di frattali e correzioni di questo disegno (rimozione delle linee interessate).

File:
Motivazione: