Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 969

 
Vladimir Baskakov:

Grazie, funziona, solo una condizione è soddisfatta:

E ho bisogno di

Non apre una posizione per qualche motivo.

int barfrup_1 = GetLastFractals(1,MODE_UPPER);
int barfrup_2 = GetLastFractals(barfrup_1+1,MODE_UPPER);
int barfrdn_1 = GetLastFractals(1,MODE_LOWER);
int barfrdn_2 = GetLastFractals(barfrdn_1+1,MODE_LOWER);

if(High[barfrup_1] < High[barfrup_2] && Low[barfrdn_1] < Low[barfrdn_2] )
if(High[barfrup_1] < High[barfrup_2] && Low[barfrdn_1] > Low[barfrdn_2] )
 
Igor Makanu:

Funziona, ma apre posizioni, non per condizione, dove vuole, va bene

 
Vladimir Baskakov:

Funziona, ma apre le posizioni, non per condizione, dove vuole, ok

non può essere così, il mio codice è semplice, come ZigZag, il frattale ha valori solo sulle barre con le frecce nel ciclo, cerca i valori dell'indicatore prima che la freccia appaia e esce dal ciclo, restituisce il numero di barra frattale

Ho appena fatto un Expert Advisor di frattali - il codice è stato controllato, e si è scoperto durante il test che il frattale sulla barra numero 1 può essere overdraw - attivare la modalità di visualizzazione del tester e aggiungere un indicatore per il frattale

 
Igor Makanu:

non può essere, il mio codice è semplice, il frattale, come ZigZag, ha valori solo sulle barre con le frecce, nel ciclo, passare attraverso i valori dell'indicatore fino a quando la freccia appare e uscire dal ciclo, restituire il numero di barra su cui il frattale è

Ho appena fatto un Expert Advisor di frattali - il codice è stato controllato, e si è scoperto durante il test che il frattale sulla barra numero 1 può essere overdraw - attivare la modalità di visualizzazione del tester e aggiungere un indicatore per il frattale

Forse il risultato dovrebbe essere controllato a 0 o a un valore vuoto
 
Aleksei Beliakov:
Forse il risultato dovrebbe essere controllato per 0 o un valore vuoto

c'è 0 nei valori vuoti, beh non è il modo migliore per confrontare con _Point

funziona, non voglio provarlo, ma i valori dell'indicatore frattale dovrebbero funzionare con questa parte del codice

SZY: ancora una volta, per qualche motivo discuto il mio codice.... più il codice funziona, non vedo il codice degli altri partecipanti, non capisco chi ne ha bisogno alla fine? ))))


PS:Controllato, perché so che la domanda non riposerà, tutto funziona, il codice è veloce:

#property copyright "IgorM"
#property link      "https://www.mql5.com/ru/users/igorm"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_ARROW
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot Label2
#property indicator_label2  "Label2"
#property indicator_type2   DRAW_ARROW
#property indicator_color2  clrBlue
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//--- indicator buffers
double         Label1Buffer[];
double         Label2Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer);
   SetIndexBuffer(1,Label2Buffer);
   SetIndexArrow(0,SYMBOL_ARROWUP);
   SetIndexArrow(1,SYMBOL_ARROWDOWN);
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//--
   static int limit=0;   
   if(limit>=10) return(rates_total);
   int b_up = 0, b_dn = 0;
   while(limit<=10)
     {
      b_up = GetLastFractals(b_up,MODE_UPPER);
      Label1Buffer[b_up] = high[b_up];
      b_up++;
      b_dn = GetLastFractals(b_dn,MODE_LOWER);
      Label2Buffer[b_dn] = low[b_dn];
      b_dn++;
      limit++;
      }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//_______________________________________________________________________
int GetLastFractals(int bar,int mode) // bar - с какого бара начинать поиск, mode = MODE_UPPER или MODE_LOWER , результат № бара где найден фрактал
  {
   int i=bar; 
   while(i<Bars && iFractals(NULL,0,mode,i)<_Point) i++;
   return(i);
  }
//_______________________________________________________________________

risultato


 
Artyom Trishkin:

ArraySetAsSeries(true) per i buffer degli indicatori.

L'ha fatto. Ho fatto secondo il manuale
 
Igor Makanu:

non può essere, il mio codice è semplice, il frattale, come ZigZag, ha valori solo sulle barre con le frecce, nel ciclo, passare attraverso i valori dell'indicatore fino a quando la freccia appare e uscire dal ciclo, restituire il numero di barra su cui il frattale è

Ho appena fatto un Expert Advisor da frattali - il codice è stato controllato, e si è scoperto durante il test che il frattale sulla barra numero 1 può essere overdraw - accendere la modalità di visualizzazione del tester e aggiungere un indicatore per il frattale,

No, la mia posizione si apre. Come dovrebbe, alla terza barra un frattale. Ma oltre è peggio. Con la mia condizione (fr1_up<fr_2 && fr1_down>fr2_down) non trova. L'essenza è la compressione dei prezzi, che troviamo da due frattali
 

Penso di avercela fatta!

999

File:
IgorM.mq5  17 kb
 
Aleksandr Klapatyuk:

Penso di avercela fatta!

Che cos'è?
 
Vladimir Baskakov:
Quale?

il nome dell'oggetto si sposta su iFractals