Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1178

 
Aleksey Vyazmikin:

Quindi non c'è menzione di una ventola per questa funzione nelle istruzioni

Poiché un oggetto in una coordinata di prezzo può avere diversi valori, è necessario specificare un numero di linea. Questa funzione è applicabile solo ai seguenti oggetti:

  • Linea di tendenza (OBJ_TREND)
  • Linea di tendenzaper angolo (OBJ_TRENDBYANGLE)
  • Linea di Gann (OBJ_GANNLINE)
  • Canale equidistante (OBJ_CHANNEL) - 2 linee
  • Canale di regressione lineare (OBJ_REGRESSION) - 3 linee
  • Canale di deviazione standard (OBJ_STDDEVCHANNEL) - 3 linee
  • Linea con freccia (OBJ_ARROWED_LINE)

Il ventilatore ha due punti in qualsiasi momento. Aggiungete una linea di tendenza parallela ad essa e calcolatela. L'uscita può sempre essere trovata.

 
Uladzimir Izerski:

Calcolato conObjectGetValueByTime prezzo, trovare qualsiasi percentuale del ventilatore.

Funziona nel tester. Non l'ho testato.

Puoi mostrarlo in forma di codice?

 
Aleksey Vyazmikin:

Puoi mostrarlo in forma di codice?

Ho appena controllato il codice. Funziona sui canali. Rileva anche il ventilatore.

 F_Draw_Object("FAN",OBJ_FIBOFAN,Time[20],High[20],Time[5],Low[5],0,0,0,2,C'00,00,200',OBJPROP_FILL,false);
 PriseCLv=ObjectGetValueByTime(0,"FAN",Time[10],0);

Si può legare una linea di tendenza a una ventola e si può anche rilevarla. Ma funziona così com'è.

 
Uladzimir Izerski:

Ho appena controllato il codice. Funziona sui canali. Rileva anche il ventilatore.

Puoi legare la linea di tendenza al ventilatore e puoi anche rilevarla. Ma funziona così com'è.

Come funziona per voi?

Non funziona per me, almeno non nel tester visivo...

bool fiboFanCreate(string ffname, datetime tm1, double pr1, datetime tm2, double pr2)
{
   Print(__FUNCSIG__);
   
   //if(!ObjectCreate(0,ffname,OBJ_FIBOFAN,0,tm1,pr1,tm2,pr2))
   if(!ObjectCreate(0,ffname,OBJ_FIBOFAN,0,tm1,pr1,tm2,pr2,0,0,0,2,C'00,00,200',OBJPROP_FILL,false))
   {
      Print(__FUNCSIG__,
            ": не удалось создать \"Веер Фибоначчи\"! Код ошибки = ",GetLastError());
      return(false);
   }
   
   ChartRedraw();
   Sleep(1000);
   
   return(true);
}
//+------------------------------------------------------------------+
bool fiboFanLevelsSet(double  &values[],  // значения линий уровня
                      string  name)       // имя веера
{
   Print(__FUNCSIG__);
   
   levels = ArraySize(values);
   ArrayPrint(values);
   //--- установим количество уровней
   ObjectSetInteger(0,name,OBJPROP_LEVELS,levels);
   
   //--- установим свойства уровней в цикле
   for(int i=0;i<levels;i++)
   {
      //--- значение уровня
      ObjectSetDouble(0,name,OBJPROP_LEVELVALUE,i,values[i]);
      //--- описание уровня
      ObjectSetString(0,name,OBJPROP_LEVELTEXT,i,IntegerToString(i+1));
   }
   ChartRedraw();
   Sleep(1000);
   //--- успешное выполнение
   return(true);
}

Controllare

void OnTick()
{
   new_bars    = current_chart.isNewBar();   // проверить появление нового бара
   
   if(new_bars > 0)
   {
      if(ObjectFind(0,ff_name) >= 0) Print(ff_name,"4 = ",NormalizeDouble(ObjectGetValueByTime(0,ff_name,TimeCurrent(),4),Digits()));

....

2020.01.19 19:38:50.208 2019.09.19 11:15:00   bool fiboFanCreate(string,datetime,double,datetime,double)
2020.01.19 19:38:50.208 2019.09.19 11:15:01   bool fiboFanLevelsSet(double&[],string)
2020.01.19 19:38:51.365 2019.09.19 11:30:00   FFan4 = 0.0
 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

2 domande MT5

Sergey Tabolin, 2020.01.20 11:52

Cosa ha causato un errore quando si chiama l'indicatore da un EA? L'indicatore è normalmente posizionato manualmente sul grafico.

   ResetLastError();
   handle_ICTMP1 = iCustom(Symbol(),0,"my_used\\ICTMP_3.01",0,in_symb1,false,false,in_smoothing);
   if(handle_ICTMP1 == INVALID_HANDLE)                                                 // проверяем наличие хендла индикатора
   {
      Print("Не удалось получить хендл индикатора handle_ICTMP1...",GetLastError());   // если хендл не получен, то выводим сообщение в лог об ошибке
      return(INIT_FAILED);                                                             // завершаем работу с ошибкой
   }
   else
   {
      Print("Получен хендл индикатора handle_ICTMP1");
      if(!MQLInfoInteger(MQL_OPTIMIZATION))
      {
         if(!ChartIndicatorAdd(ChartID(),0,handle_ICTMP1)) Print("Ошибка подключения индикатора к графику"); // подключаем индикатор к графику
      }
   }
2020.01.20 13:42:09.390 Core 1  file Indicators\my_used\ICTMP_3.01 read error
2020.01.20 13:42:09.390 Core 1  loading of ICTMP_  EURGBP,M15 failed [557]
2020.01.20 13:42:09.390 Core 1  2019.09.19 00:00:00   cannot load custom indicator 'my_used\ICTMP_3.01' [4802]
2020.01.20 13:42:09.390 Core 1  2019.09.19 00:00:00   Не удалось получить хендл индикатора handle_ICTMP1...4802
2020.01.20 13:42:09.390 Core 1  tester stopped because OnInit returns non-zero code
P.S. È nel tester.

E questo nonostante il fatto che l'EA viene eseguito sul grafico in tempo reale. Non rende l'indicatore. (((

In particolare, cos' è questo?

 

Cari amici, nessuno può suggerire qualcosa?

Separatamente, l'indicatore funziona sia nel tester che sul grafico. Quando lo eseguo dall'EA nel tester, ottengo un errore poco chiaro. L'Expert Advisor con questo indicatore si avvia normalmente e lavora sul grafico.

Dove devo scavare?

 
Сергей Таболин:

Cari amici, nessuno può suggerire qualcosa?

Separatamente, l'indicatore funziona sia nel tester che sul grafico. Quando lo eseguo dall'EA nel tester, ottengo un errore poco chiaro. L'Expert Advisor con questo indicatore si avvia normalmente e lavora sul grafico.

Dove devo scavare?

Forse verso il percorso dell'indicatore nel tester?
 
Artyom Trishkin:
Forse verso il percorso dell'indicatore nel tester?

Com'è?

Ho tutti gli indicatori di cui ho bisogno in questo modo

handle_ICTMP1 = iCustom(Symbol(),0,"my_used\\ICTMP_3.01"
handle_HMA7C = iCustom(Symbol(),0,"my_used\\my_HMA7C_201",

Questo non è mai successo prima. Inoltre, questa è la prima volta che sento parlare di un percorso separato per un indicatore nel tester...

Funziona per altri indicatori, ma non per questo?

 

Appositamente aggiunto un altro indicatore in anticipo.

   ResetLastError();
      handle_HMA7C = iCustom(Symbol(),0,"my_used\\my_HMA7C_201",45,9);
      if(handle_HMA7C == INVALID_HANDLE)                                                  // проверяем наличие хендла индикатора
      {
         Print("Не удалось получить хендл индикатора handle_HMA7C...",GetLastError());    // если хендл не получен, то выводим сообщение в лог об ошибке
         return(INIT_FAILED);                                                             // завершаем работу с ошибкой
      }
      else
      {
         Print("Получен хендл индикатора handle_HMA7C");
         if(!MQLInfoInteger(MQL_OPTIMIZATION))
         {
            if(!ChartIndicatorAdd(ChartID(),0,handle_HMA7C)) Print("Ошибка подключения индикатора к графику"); // подключаем индикатор к графику
         }
      }
   
   handle_ICTMP1 = iCustom(Symbol(),0,"my_used\\ICTMP_3.01",0,in_symb1,false,false,in_smoothing);
   if(handle_ICTMP1 == INVALID_HANDLE)                                                 // проверяем наличие хендла индикатора
   {
      Print("Не удалось получить хендл индикатора handle_ICTMP1...",GetLastError());   // если хендл не получен, то выводим сообщение в лог об ошибке
      return(INIT_FAILED);                                                             // завершаем работу с ошибкой
   }
   else
   {
      Print("Получен хендл индикатора handle_ICTMP1");
      if(!MQLInfoInteger(MQL_OPTIMIZATION))
      {
         if(!ChartIndicatorAdd(ChartID(),0,handle_ICTMP1)) Print("Ошибка подключения индикатора к графику"); // подключаем индикатор к графику
      }
   }
2020.01.20 20:15:34.713 program file added: Indicators\my_used\my_HMA7C_201.ex5. 41715 bytes loaded
2020.01.20 20:15:34.920 2019.09.19 00:00:00   Получен хендл индикатора handle_HMA7C
2020.01.20 20:15:34.921 file Indicators\my_used\ICTMP_3.01 read error
2020.01.20 20:15:34.921 loading of ICTMP_ EURGBP,M15 failed [557]
2020.01.20 20:15:34.921 2019.09.19 00:00:00   cannot load custom indicator 'my_used\ICTMP_3.01' [4802]
2020.01.20 20:15:34.921 2019.09.19 00:00:00   Не удалось получить хендл индикатора handle_ICTMP1...4802
2020.01.20 20:15:34.921 tester stopped because OnInit returns non-zero code

L'EA è ancora messo sul grafico normalmente. Tutti gli indicatori sono caricati e funzionanti....

 
Сергей Таболин:

Cari signori, nessuno può suggerire qualcosa?

Dove scavare?

Posso supporre che si ottiene la maniglia ripetutamente e gradualmente trabocca la memoria. quello sul grafico dal vivo lo fa lentamente, e non ha il tempo di riempire tutta la memoria. il tester lo fa molte volte al secondo, e rapidamente trabocca la memoria.