[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 108

 
paladin80:
Sto cercando qualche consiglio dall'intelligenza collettiva. Ho messo l'Expert Advisor in demo e ho modificato un po' il suo codice. (1) Per sostituirlo in MT4, posso semplicemente sospendere la sua azione (senza chiudere MT4), sostituirlo con uno nuovo nella cartella .../experts/ (con lo stesso nome), e poi permettere nuovamente il trading nel pannello superiore di MT4? (2) O devo chiudere MT4 e trasferire l'EA in .../experts/ come al solito e trascinarlo sul grafico?

Quando l'EA è in esecuzione sul grafico, solo la sua ricompilazione porta allo scarico e al caricamento automatico sul grafico. E con parametri predefiniti.

Altrimenti l'EA rimane in memoria e anche cancellando il suo file ex4 non lo si cancella dal grafico.

 

Buon pomeriggio.

C'è un modo per cambiare le proprietà indicator_minimum e indicator_maximum quando vuoi, invece di impostarle come costanti una volta al preprocessore? Non ho trovato nulla di utile nei documenti.

 
Solree:

Buon pomeriggio.

C'è un modo per cambiare le proprietà indicator_minimum e indicator_maximum quando vuoi, invece di impostarle come costanti una volta al preprocessore? Non ho trovato nulla di utile nei documenti.

Nelle impostazioni dell'indicatore, scheda "comune". Non si può fare con il software MQL.
 
alsu:
Nelle impostazioni dell'indicatore, scheda "generale". Non si può usare il software MQL.
È un peccato... Grazie per la vostra risposta.
 
alsu:
Nelle impostazioni dell'indicatore, scheda "generale". Non si può usare il software MQL.
È possibile. Solo in modo sbagliato. Attraverso un buffer aggiuntivo. Vero, sarà impossibile impostare il valore minimo inferiore a quello operativo.
 
Zhunko:
È possibile. Solo storto. Usare un buffer aggiuntivo. Tuttavia, non sarà possibile impostare il minimo inferiore al minimo di lavoro.
E non si può nemmeno impostare il massimo sopra quello preimpostato))
 
alsu:
E non si può nemmeno andare più in alto del massimo prestabilito)).

Zhunko:
Sì, è possibile. Solo distorto. Attraverso un buffer aggiuntivo. È vero, sarà impossibile fissare il minimo inferiore al minimo di lavoro.

Se tutto è controllato internamente e programmaticamente, allora cambiatelo e controllatelo come volete.

Puoi tagliare i valori a VUOTO, o puoi allargare i buffer.

 
sergeev:

Perché? Se è tutto interno e controllato programmaticamente, allora cambialo e controllalo come vuoi.

Se volete tagliare i valori a VUOTO, o viceversa, allargate i buffer.

Risposta per il buffer.

Ho un buffer che è responsabile dello sweep verticale. Emetto le linee con oggetti grafici. Ecco perché tutto è scalato come dovrebbe essere in entrambe le direzioni.

 
Puoi entrare un po' più nel dettaglio di questo? Un pezzo di codice con questo, se non ti dispiace :)
 
Buona sera, è sorta un'altra domanda. Ecco una parte del codice:
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_width1 1
#property indicator_width2 1

extern string Symbol1.Name = "EURUSD";     // Название инструмента 1
extern bool   Symbol1.Reverse = false;     // Является ли инструмент 1 реверсивным (с обратной корреляцией) 
                                           // по отношению к остальным инструментам
extern string Symbol2.Name = "EURUSD";     // Название инструмента 2
extern bool   Symbol2.Reverse = false;     // Является ли инструмент 2 реверсивным (с обратной корреляцией) 

extern int MA.Slow = 80;                   // Период медленной МА

// Буферы для отображения данных
double Buf1[];    // Первый инструмент
double Buf2[];    // Второй инструмент

// Параметры графических объектов        
string Label.Name = "label";  
int wndNum;                                // Номер подокна индикатора
string wndName;                            // Наименование окна
string oSymb1,oSymb2;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() { 
  // Задаем имена графическим объектам
  oSymb1=Symbol1.Name;
  oSymb2=Symbol2.Name;

  // Формируем свойства графиков индикатора
  IndicatorBuffers(2);
  
  SetIndexStyle(0,DRAW_LINE);
  SetIndexBuffer(0,Buf1);
  SetIndexLabel(0,Symbol1.Name);

  SetIndexStyle(1,DRAW_LINE);
  SetIndexBuffer(1,Buf2);
  SetIndexLabel(1,Symbol2.Name);

  return(0);
}

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()  {
  // Удаляем все графические объекты
  DeleteObject(oSymb1);
  DeleteObject(oSymb2); 
  return(0);  
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
  // Подсчет количества баров для построения индикатора
  int limit; int counted_bars=IndicatorCounted();
  if(counted_bars<0) return(-1);
  if(counted_bars>0) counted_bars--; 
  limit=Bars-counted_bars;
  
  // Определяем параметры окна индикатора
  wndNum=WindowFind(WindowExpertName());
  wndName=WindowExpertName()+wndNum; 
  //------------------------------------------------------------------ 
  // Отрисовка ценовых линий: рисуем и синхронизируем по наличию баров
  for(int i=0; i<limit; i++) { 
    Buf1[i]= iMA(Symbol1.Name,0,MA.Slow,0,MODE_SMA,PRICE_CLOSE,i); }
    
  for (i=0; i<limit; i++) {
    Buf2[i]= iMAOnArray(Buf1,0,MA.Slow,0,MODE_SMA,i); }
Come fare in modo che Buf1 non venga affatto visualizzato nella finestra dell'indicatore?
Motivazione: