[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 143

 
BooGUY:

Su un frattale! L'ho provato con uno stop-loss - fa schifo, vorrei provarlo con gli stop sui frattali, ma non so come scriverlo nella condizione. O come scriverlo in un EA, ho scritto una condizione di entrata, qualcosa come questo

if(iOpen(NULL,PERIOD_H1,1)<iClose(NULL,PERIOD_H1,1)&&

iOpen(NULL,PERIOD_M30,1)<iClose(NULL,PERIOD_M30,1)&&

iOpen(NULL,PERIOD_M15,1)<iClose(NULL,PERIOD_M15,1)&&

iOpen(NULL,PERIOD_M5,1)<iClose(NULL,PERIOD_M5,1)

{...???

}


Dal vostro codice dubito che la conversazione riguardi un frattale. alcuni prezzi di apertura e chiusura su 4 periodi.
 
BooGUY:

Su un frattale! L'ho provato con uno stop loss - sta perdendo, vorrei provarlo con gli stop sui frattali, ma non so come scriverlo nella condizione. O come scriverlo in un EA, ho scritto una condizione di entrata, qualcosa come questo

if(iOpen(NULL,PERIOD_H1,1)<iClose(NULL,PERIOD_H1,1)&&

iOpen(NULL,PERIOD_M30,1)<iClose(NULL,PERIOD_M30,1)&&

iOpen(NULL,PERIOD_M15,1)<iClose(NULL,PERIOD_M15,1)&&

iOpen(NULL,PERIOD_M5,1)<iClose(NULL,PERIOD_M5,1)

{...???

}

Per testare la strategia, è più facile per te trovare una funzione di trailing stop tramite frattali e includerla nel tuo EA. Oppure potete scriverlo voi stessi.

La funzione sposterà l'arresto di ogni posizione aperta al frattale necessario impostato nelle impostazioni. E poi, in base ai risultati del test, possiamo già pensare all'opportunità di utilizzare o questo strascico, o la chiusura delle posizioni di mercato quando il prezzo raggiunge il livello frattale. Nessuna delle due è una cosa facile da fare.

La funzione standard iFractals() vi aiuterà. Restituisce il prezzo al quale viene trovato il frattale, come specificato nei parametri della funzione.

 

aiuto per favore, il mio indicatore misura il movimento massimo al minuto per l'ora corrente su un timeframe orario, le prime 6 ore (barre) misura tutto adeguatamente, e poi inizia alcuni valori illegali vengono fuori sotto il codice stesso e l'indicatore, consigliare dove ho sbagliato, anche se non mi interessa valori oltre 3 barre, ma ho paura che gli errori possono verificarsi sulla prima barra

#property indicator_separate_window
#property indicator_buffers 1       // Количество буферов
#property indicator_color1 Blue     // Цвет первой линии
#property indicator_minimum 0
#property indicator_maximum 25
double Buf_0[];             // Объявление массивов (под буферы индикатора)
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
SetIndexBuffer(0,Buf_0);         // Назначение массива буферу   
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//----
int i;                           // Индекс бара       
int Counted_bars;                // Количество просчитанных баров
int m;
int MaxSpeed;
int Speed; 
//--------------------------------------------------------------------   
Counted_bars=IndicatorCounted(); // Количество просчитанных баров    
i=Bars-Counted_bars-1;           // Индекс первого непосчитанного   
while(i>=0)                      // Цикл по непосчитанным барам     
 {
 
 MaxSpeed=0;
 if (Period()==PERIOD_H1)
  {
  m=59;
  while (m>=0)
   {
   Speed=(iOpen(Symbol(),PERIOD_M1,m+60*i)-iClose(Symbol(),PERIOD_M1,m+60*i))/Point;
   if (MaxSpeed<Speed)
    {
    MaxSpeed=Speed;
    }
   m--;
   }
  }
 if (Period()==PERIOD_M1)
  {
  m=0;
  while (m>=0)
   {
   Speed=(iOpen(Symbol(),PERIOD_M1,m+i)-iClose(Symbol(),PERIOD_M1,m+i))/Point;
   if (MaxSpeed<Speed)
    {
    MaxSpeed=Speed;
    }
   m--;
   }
  }      
 Buf_0[i]=MaxSpeed;             // Значение 0 буфера на i-ом баре      
 i--;                          // Расчёт индекса следующего бара     
 }   
//----
   return(0);
  }
//+------------------------------------------------------------------+
Credo di avere qualche errore nella prima barra.
File:
speed.mq4  3 kb
 
Tanti e tanti MASD Forse qualcuno sa dove piegare uno di questi????
 
LazarevDenis:

aiuto per favore, il mio indicatore misura il movimento massimo al minuto per l'ora corrente su un timeframe orario, le prime 6 ore (barre) misura tutto adeguatamente, e poi inizia alcuni valori illegali vengono fuori sotto il codice stesso e l'indicatore, consigliare dove ho sbagliato, anche se non mi interessa valori oltre 3 barre, ma ho paura che gli errori possono verificarsi sulla prima barra

In origine avevo un indicatore diverso, l'ho smontato e ho "saldato" il mio codice


Cosa volevi ottenere?
 

Vinin:

Cosa volevi prendere?


Voglio che l'indicatore mostri il valore massimo di iOpen-iClose tra le barre di minuti, ma per ORA, per esempio per un'ora di 59 barre di minuti iOpen-iClose = 3 (per esempio) e una barra di minuti iOpen-iClose = 10 e su un timeframe di un'ora, deve mostrare 10 senza alcuna deviazione e ho bisogno che l'indicatore chiuda gli ordini, se un tasso di minuti va troppo veloce nella direzione sbagliata, allora il consigliere sarà un segnale di chiusura

Questa è la prima versione e più tardi voglio che sia in grado di rilevare da che parte sta andando il prezzo.

 

Se cliccate su un oggetto grafico, per esempio una linea orizzontale, potete vedere una "Descrizione" nella finestra che si apre.

- È possibile aggiungere una "Descrizione" dal codice?

Grazie!

 
chief2000:

Se cliccate su un oggetto grafico, per esempio una linea orizzontale, potete vedere una "Descrizione" nella finestra che si apre.

- È possibile aggiungere una "Descrizione" dal codice?

Grazie!

https://docs.mql4.com/ru/objects/ObjectSetText
 

Proprio quello di cui avevo bisogno! Grazie!

 

LazarevDenis

Il conteggio iniziale è di 59 barre, che non è corretto. Ci possono essere dei vuoti di minuti e la barra dell'ultima ora può contenere meno minuti.

Dovresti prendere il tempo di apertura e di chiusura della barra delle ore (Time[i]). Usa questo tempo per calcolare gli offset per iBarShift minuti, e poi calcola il massimo entro questa gamma di offset.

A proposito, cosa dovrebbe mostrare l'indicatore su un periodo di un minuto?

Se il numero è positivo il prezzo va verso l'alto, se il numero è negativo - verso il basso, restituendo il numero modulo mostrerà la forza del movimento.

Motivazione: