Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 205

 
torblin:
ciao a tutti, non sembra che il post è per i neofiti domande oh gee whiz dove chiedere con dp 200 che consigliere funzionerà?
uno qualsiasi praticamente.
 

Cari signori, chiedo di avere un occhio esperto sul "tentativo numero uno". L'argomento è: ho ottenuto un codice "incrociando" un indicatore frattale scritto in MQL5 e l'indicatore azzx_larry-2.0, la cui essenza è di escludere le cosiddette "barre interne" durante la ricerca di un estremo (allegato). Durante la compilazione, otteniamo quattro errori, tutti in quella parte di codice che è stata presa in prestito da azzx scritta in "4". Sono sorte delle domande nell'interpretazione degli "errori":

1. Perché la dichiarazione for (posto nel codice - sottolineato) è proposta per essere messa in Global. ('for' - le espressioni non sono ammesse in uno scopo globale).


2. Perché il compilatore considera High[bar] e Low[bar] (anche sottolineati nel codice) non dichiarati, mentre diverse righe sopra nel codice ci sono High[i] e Low[i] che non considera errori.

('High' - identificatore non dichiarato, 'Low' - identificatore non dichiarato).


3. Lo stesso vale per il limite - perché il compilatore lo considera non dichiarato. ('limit' - identificatore non dichiarato).

PS: parte del codice (indicatore frattale) è derivato dalla documentazione mql5, e parte del codice dell'indicatore azzx_larry2.0 è derivato dal codobase mql4, autore azzx


//+------------------------------------------------------------------+
//|                                                     azzx 2.0.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
#property  indicator_type1   DRAW_ARROW
#property  indicator_type2   DRAW_ARROW
#property  indicator_color1  White
#property  indicator_color2  White
#property  indicator_label1  "azzx Up"
#property  indicator_label2  "azzx Down"
//---- indicator buffers
double max[];
double min[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//---- indicator buffers mapping
   SetIndexBuffer(0,max,INDICATOR_DATA);
   SetIndexBuffer(1,min,INDICATOR_DATA);
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//---- sets first bar from what index will be drawn
   PlotIndexSetInteger(0,PLOT_ARROW,108);
   PlotIndexSetInteger(1,PLOT_ARROW,108);
//---- arrow shifts when drawing
   PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,0);
   PlotIndexSetInteger(1,PLOT_ARROW_SHIFT,0);
//---- sets drawing line empty value--
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//---- initialization done
  }
//+------------------------------------------------------------------+
//|  Accelerator/Decelerator Oscillator                              |
//+------------------------------------------------------------------+
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 &TickVolume[],
                const long &Volume[],
                const int &Spread[])
  {
   int i,limit;
//---
   if(rates_total<3)
      return(0);
//---
   if(prev_calculated<3)
     {
      limit=1;
      //--- clean up arrays
      ArrayInitialize(max,EMPTY_VALUE);
      ArrayInitialize(min,EMPTY_VALUE);
     }
   else limit=rates_total-1;

   for(i=limit;i<rates_total-1 && !IsStopped();i++)
     {
      //---- Up azzx
      if(High[i]>High[i+1] && High[i]>=High[i-1])
         max[i]=High[i];
      else max[i]=EMPTY_VALUE;

      //---- Low azzx
      if(Low[i]<Low[i+1] && Low[i]<=Low[i-1])
         min[i]=Low[i];
      else min[i]=EMPTY_VALUE;
     }
//--- OnCalculate done. Return new prev_calculated.
   return(rates_total);
  }

//+------------------------------------------------------------------+

  // Поиск краткосрочных экстремумов.
  for(i=limit-2;i>1;i--) 
   {
    l = left_bar(i);
    r = right_bar(i);
    
    if((l>0) && (r>0)) 
      {
      if(((Low[l]>=Low[i]) && (Low[r]>Low[i])) ||
         ((Low[l]>Low[i]) && (Low[r]>Low[i]))) 
      {
        min[i] =1;
      }
    }
 
    if((l>0) && (r>0)) 
      {
      if(((High[l]<= High[i]) && (High[r]<High[i])) ||
         ((High[l]<High[i]) && (High[r]<High[i]))) 
      {
        max[i] =1;
      }
    }

  // Отметка экстремумов.
  ArrayInitialize(buf_st_min,0);
  ArrayInitialize(buf_st_max,0);

  
  for(i=limit-1;i>0;i--) 
  {
    switch(min[i]) 
    {
      case 1 : buf_st_min[i]=Low[i]; break;
    }
 
    switch(max[i]) 
    {
      case 1 : buf_st_max[i]=High[i]; break;
    }
  }
  
  return(0);
}
 
// Проверка, что заданный бар - внутренний.
bool is_internal(int bar) 
{
  return((High[bar] < High[bar + 1]) && 
         (Low [bar] > Low [bar + 1]));
}
 
// Возвращает бар слева от заданного бара или -1.
int left_bar(int bar) 
    {
  int i;
  
  for(i=bar+1;i<limit-2;i++) 
{
    if(is_internal(i)==false) 
{
      return(i);
    }
  }
  
  return(-1);
}
 
// Возвращает бар справа от заданного бара или -1.
int right_bar(int bar) {
  int i;
  
  for(i=bar-1;i>0;i--) 
{
    if(is_internal(i)==false) 
{
      return(i);
    }
  }
  
  return(-1);
}
//+------------------------------------------------------------------+
//| Indicator deinitialization function                              |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- почистим график при удалении индикатора
   Comment("");
  }
Credo che il codice abbia High[i] e Low[i] qualche riga sopra che non considera errori. 3. Allo stesso modo riguardo al limite - perché il compilatore lo considera non dichiarato
 

Reshetov:
А робот случаем не из Маркета?
только один.  что там продается - ужас. хотя наверное все они такие
 
beginner_mql:

ci sono High[i] e Low[i] nel codice, che non conta come errori. 3. Lo stesso vale per il limite - perché il compilatore lo considera non dichiarato

Hai una parentesi graffa di chiusura anticipata qui:

   return(rates_total);
  }

//+------------------------------------------------------------------+

  // Поиск краткосрочных экстремумов.
  for(i=limit-2;i>1;i--) 

Oppure mancano diverse righe, perché non sono dichiarate.

    l = left_bar(i);
    r = right_bar(i);
 
vicmos:

Hai una parentesi graffa di chiusura anticipata qui:

Oppure mancano diverse righe perché non sono annunciate

Grazie per la vostra partecipazione. La parentesi è stata spostata alla fine del codice, la compilazione ha dato 16 errori - qualcosa su cui lavorare.

 
Ciao a tutti, potete dire agli utenti del forum che lavorano con il prodotto software ITrade Chaos di G. Stanilevich? Mi piace molto ma ci sono alcune cose che non capisco. Se non vi dispiace, chi lavora o ha lavorato con questo prodotto, vi prego di contattarmi su Skype. Il mio skype è Furkat1962 Grazie in anticipo. Cordialmente Furkat
 
torblin:
Non credo che questo post sia per i principianti, quindi perché non mi dici dove chiedere a un principiante con un 200dpa cosa farà il consulente?
Non vuoi capire che il FOREX non è un commercio gratuito, ma è lo stesso lavoro di qualsiasi altro commercio, solo che il ritorno è più alto quando ci metti il lavoro!
 
Ho aggiunto un indicatore al grafico dall'EA - come faccio a colorare questo indicatore ora? L'indicatore usa 3 linee, vorrei farle tutte di 3 colori e spessore diversi.
 
YAndrey:
Ho aggiunto un indicatore al grafico dall'EA - come faccio a colorare questo indicatore ora? L'indicatore usa 3 linee, vorrei farle tutte di 3 colori e spessore diversi.
Si possono usare i pennarelli sul monitor).
 
zfs:
Puoi usare i pennarelli sul monitor).
Sì, si può fare. Ma non mi piacerebbe. E mi piacerebbe ascoltare le persone intelligenti ;). Ho trovato una via d'uscita creando un indicatore personalizzato con parametri di input sotto forma di colori per ogni linea, ma come posso renderlo più semplice? Quindi, di nuovo una domanda. Sto creando un indicatore iBands nel mio Expert Advisor. Lo allego al grafico. Vorrei disegnare le sue 3 linee con colori diversi. È possibile?