Come posso imparare a creare oggetti grafici? MQL4. - pagina 2

 
barabashkakvn:
Se conoscete l'ora e le date dei vostri punti, dovete solo chiamarebool TrendCreate()

Grazie per il consiglio. Si è rivelato più facile di così.

L'ho fatto in questo modo:

#property strict
#property script_show_inputs

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
  long   chart_ID=0;        // ID графика
  string name="TrendLine";  // имя линии
  int    sub_window=0;      // номер подокна
//--- сбросим значение ошибки
   ResetLastError();
//--- создадим трендовую линию по заданным координатам
   if(!ObjectCreate(chart_ID,name,OBJ_TREND,sub_window,Time[41],1.0656,Time[65],1.0494))
     {
      Print(__FUNCTION__,
            ": не удалось создать линию тренда! Код ошибки = ",GetLastError());
      return;
     }
   
  }
//+------------------------------------------------------------------+

P.S. Una cosa che non riesco a capire è perché i numeri nell'esempio sono scelti così:

InpDate1=35;        
InpPrice1=60;        
InpDate2=65;        
InpPrice2=40; 

Da loro la linea di tendenza va da qualche parte nel mezzo della gamma.

 
Ora il prossimo problema da risolvere è come continuare la linea a destra e ottenere il valore della linea nell'EA?
 
forexman77:

...

Da essi, la linea di tendenza è messa da qualche parte nel mezzo della gamma.

Quindi, è solo uno script il cui compito principale è dimostrare come creare e lavorare con l'oggetto OBJ_TREND. Le cifre sono state prese per chiarezza.
 
forexman77:
Ora il prossimo problema da risolvere è come continuare la linea a destra e ottenere il valore della linea nell'EA?

Il codice dello script ha tutto:

//+------------------------------------------------------------------+
//| Создает линию тренда по заданным координатам                     |
//+------------------------------------------------------------------+
bool TrendCreate(const long            chart_ID=0,        // ID графика
.
.
.
//--- включим (true) или отключим (false) режим продолжения отображения линии влево
   ObjectSetInteger(chart_ID,name,OBJPROP_RAY_LEFT,ray_left);
//--- включим (true) или отключим (false) режим продолжения отображения линии вправо
   ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
.
.
.
 
barabashkakvn:

Il codice dello script ha tutto:

1.Quando viene chiamato dal tester le transazioni vengono aperte. Se eseguo l'ottimizzazione ci sono zeri ovunque. Quando lancio qualsiasi ottimizzazione, le offerte sono lì. Cosa fare?

2. Come posso fare in modo che una riga venga salvata se si è verificata una transazione (su ogni transazione), e se non lo è, venga cancellata?

  long   chart_ID=0;        // ID графика
  string name="TrendLine";  // имя линии
  int    sub_window=0;      // номер подокна
  ObjectDelete(chart_ID,name);
//--- сбросим значение ошибки
   ResetLastError();
//--- создадим трендовую линию по заданным координатам
   if(!ObjectCreate(chart_ID,name,OBJ_TREND,sub_window,Time[minbar],Low[minbar],Time[IPMIN],Low[IPMIN]))
     {
      Print(__FUNCTION__,
            ": не удалось создать линию тренда! Код ошибки = ",GetLastError());
      return(0);
     }
    ObjectSet("TrendLine",OBJPROP_TIME1,Time[minbar]);
    ObjectSet("TrendLine",OBJPROP_PRICE1,Low[minbar]);
    ObjectSet("TrendLine",OBJPROP_TIME2,Time[IPMIN]);
    ObjectSet("TrendLine",OBJPROP_PRICE2,Low[IPMIN]);

   if (IPMIN!=0){ double uroven= ObjectGetValueByTime(chart_ID,name,Time[1],sub_window);}
   
}
Print("uroven=",uroven);
if (Time[0] > b && Close[1] < uroven){Opn_B=true;}
 
Dovete controllare voi stessi le transazioni. Ma perché ogni trade abbia la sua linea, dovete dare a ogni linea un nome unico quando la create.
 
barabashkakvn:
Dovete controllare voi stessi le transazioni. Ma perché ogni trade abbia la sua linea, dovete dare a ogni linea un nome unico quando la create.
Come? Può fare un esempio?
 
forexman77:
Come? Posso fare un esempio?
Aiuta chi ha esempi, per favore.
 

Oggetti grafici durante il test

Durante il test di visualizzazione, l'Expert Advisor interagisce con il grafico reale. Nel test normale, senza visualizzazione, l'Expert Advisor opera con un grafico "virtuale" che non viene reso; in questo caso, sono possibili alcune sottigliezze. Gli oggetti grafici non sono supportati quando il tester è in modalità di ottimizzazione.

Due giorni per studiare, e si scopre che è impossibile eseguire l'ottimizzazione.

Mi chiedo se creo un indicatore. Sarò in grado di ottenere il valore della linea nel mio Expert Advisor attraverso di esso?

Chi deve dire cosa? Forse, chi ha già studiato questa domanda?

 
forexman77:

...

Mi chiedo se posso fare un indicatore? Sarò in grado di ottenere il valore della linea nell'EA attraverso di essa?

...

Se l'indicatore crea oggetti grafici e poi ottiene i loro parametri, no.

Ma è ancora più facile risolvere tutto attraverso l'uso di un indicatore. I calcoli vengono eseguiti nell'indicatore e i loro risultati vengono visualizzati attraverso i buffer dell'indicatore.

C'è un'altra alternativa. Create variabili globali con parametri della linea invece di linee, ma poi la funzione GetValueByShift() non funzionerà, dovete scrivere il suo analogo.

Motivazione: