Errori, bug, domande - pagina 2768

 
Saluti. L'evento di inizializzazione si verifica all'accensione del terminale?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Cara amministrazione. A chi devo scrivere per cancellare il mio account (con registrazione come venditore) da mql5.com?
 

C'è un indicatore MT5 "Grid Builder" che disegna linee orizzontali in incrementi di prezzo. È possibile selezionare ad esempio 100p, 200p ecc. E costruisce una griglia orizzontale su e giù con un determinato passo. Ma ha un problema, per esempio, quando disegno livelli orizzontali sul timeframe H4 (ho messo linee orizzontali da strumenti di disegno nel terminale) e passo a qualsiasi altro timeframe, tutte le mie linee vengono rimosse. Rimangono solo i livelli orizzontali dell'indicatore. Come posso correggere questo errore nel codice? Per garantire che i miei livelli orizzontali non vengano mai cancellati. Ecco il codice dell'indicatore.

//+------------------------------------------------------------------+
//|                                                  GridBuilder.mq5 |
//|                                              Copyright 2015, AM2 |
//|                                     https://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "https://www.forexsystems.biz"
#property version   "1.00"
#property indicator_chart_window

//---- для расчёта и отрисовки индикатора использовано ноль буферов
#property indicator_buffers 0
//---- использовано всего ноль графических построений
#property indicator_plots   0
//--- входные параметры 
input int count = 50;      //количество линий вверх вниз от цены
input int step  = 333;     //шаг линий 
input double pr = 1.4622;  //цена от которой пляшем
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   ObjectsDeleteAll(0,0,OBJ_HLINE);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
   ObjectsDeleteAll(0,0,OBJ_HLINE);
  }
//+------------------------------------------------------------------+ 
//| Создает горизонтальную линию                                     | 
//+------------------------------------------------------------------+ 
bool HLine(const string name="HLine",double price=0)
  {
//--- создадим горизонтальную линию 
   if(!ObjectCreate(0,name,OBJ_HLINE,0,0,price))
     {
      Print(__FUNCTION__,
            ": не удалось создать горизонтальную линию! Код ошибки = ",GetLastError());
      return(false);
     }
//--- установим цвет линии 
   ObjectSetInteger(0,name,OBJPROP_COLOR,clrGreen);
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
   return(true);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
   double price=pr;
//--- создадим горизонтальную линию 
   for(int i=0;i<=count;i++)
     {
      HLine("HLine"+(string)i,price+step*i*_Point);
      HLine("HLine"+(string)(i+count+1),price-step*i*_Point);
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
При создании графического объекта функцией ObjectCreate() необходимо указать тип создаваемого объекта, который может принимать одно из значений перечисления ENUM_OBJECT. Дальнейшие уточнения свойств созданного объекта возможно с помощью функций по работе с графическими объектами.
 
Александр:

C'è un indicatore MT5 "Grid Builder" che disegna linee orizzontali in incrementi di prezzo. È possibile selezionare ad esempio 100p, 200p ecc. E costruisce una griglia orizzontale su e giù con un determinato passo. Ma ha un problema, per esempio, quando disegno livelli orizzontali sul timeframe H4 (metto linee orizzontali da strumenti di disegno nel terminale) e passo a qualsiasi altro timeframe, tutte le mie linee vengono rimosse. Rimangono solo i livelli orizzontali dell'indicatore. Come posso correggere questo errore nel codice? Per assicurarmi che i miei livelli orizzontali non vengano mai cancellati. Ecco il codice dell'indicatore.

Siprega di provare ainserire il codice correttamente.

MQL5.community - Памятка пользователя
MQL5.community - Памятка пользователя
  • www.mql5.com
Теперь вы можете не только читать статьи и скачивать программы на языке MQL5, но и участвовать в обсуждении интересующих вас тем на Форуме, оставлять комментарии к статьям и опубликованным кодам. Кроме того, вы можете не только выкладывать собственные разработки в Code Base, но и публиковать Статьи, за которые мы предлагаем вознаграждение...
 

Beaubra a tutti.

Quando cambio timeframe che è stato inattivo per molto tempo, l'indicatore si blocca. Per favore, guidatemi dove è sepolto il cane. Grazie!

 
BROXIV:

Beaubra a tutti.

Quando cambio timeframe, che non è stato usato per molto tempo, l'indicatore si blocca. Per favore, guidatemi dove è sepolto il cane. Grazie!

Il cane sta caricando i dati.

 
BROXIV:

Beaubra a tutti.

Quando cambio timeframe, che non è stato usato per molto tempo, l'indicatore si blocca. Per favore, guidatemi dove è sepolto il cane. Grazie!

Lo stesso posto in cui il lupo ha morso la volpe....

L'ha morso. Cosa ne pensate? )))))))

 
Come può una funzione essere chiamata prima e poi dichiarata. Il programma va fuori sequenza o cosa?
 
Ivan_Invanov:
Come può una funzione essere chiamata prima e poi dichiarata? Il programma non gira in fila o cosa?

MQL-compilatore, non interprete, cerca su Google "linker compiler".





quanta probabilità di ricevere da una piccola stringa di testo(10-50 simboli) md5-hash (16 byte) uguale0xAAAAAAAAAAAAAAAAAAA + 0xAAAAAAAAAAAAAAAAAAAA

ulong hash[2]
this.hash[0] = this.hash[1] = 0xAAAAAAAAAAAAAAAA; 

in generale ho bisogno di un inizializzatore HASH_NULL (ho bisogno di alcune varianti ragionevoli), trovo 0 inaffidabile per qualche motivo


UPD: cercato online md5 decrittazione https://md5.web-max.ca/

sull'hash md5: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dice errore, anche 0 è un errore

 

Buon pomeriggio, sto scrivendo una classe per raccogliere gli estremi basati sulle letture dell'indicatore iWPR. Ecco un pezzo di codice: inizio creando un handle per un indicatore e poi copio i dati in un buffer. Creo un ciclo per ottenere i dati dell'indicatore in base alla dimensione dell'array e scrivo il corso degli eventi nel file per capire cosa sta succedendo. Vorrei sottolineare che ho copiato questo codice da MQL4 e, naturalmente, l'ho adattato per MQL5. Non capisco qualcosa o qualcosa è sbagliato, ma i dati della variabile dwpr vengono scritti in un file con qualche tipo di errore. Cosa sto facendo di sbagliato? Allego il file di testo del cosiddetto log!

   hWPR=iWPR(NULL,period,240);
   CopyBuffer(hWPR,0,0,ibars,WPRBuffer);
   CopyLow(NULL,0,0,ibars,Low);
   CopyHigh(NULL,0,0,ibars,High);
   CopyTime(NULL,0,0,ibars,Time);
   int y=ArraySize(WPRBuffer);
   //int w=ArraySize(Low);
   //int x=ArraySize(High);
   //int z=ArraySize(Time);
   
   ResetLastError(); 
   if(flag){filehandle=FileOpen(Symbol()+"_VertexUpLoad_3.txt",FILE_WRITE|FILE_TXT);}
   if(flag){FileWrite(filehandle,"Количество элементов в буфере WPRBuffer "+IntegerToString(y)+" Low "+IntegerToString(w)+
            " High "+IntegerToString(x)+" Time "+IntegerToString(z));}
   //for(int i=ibars-1;i>0;i--)
   for(int i=1;i</*ibars*/ y-1;i++)
     {
      if(i==344)
      {
      Print("");}
      datetime d=Time[i];
      //if(x<D'2004.04.02. 12:00:00'){continue;}//участок кода для тестирования
      if(flag){FileWrite(filehandle,"======================================================================================");}
      dwpr=NormalizeDouble(WPRBuffer[i],4);
      if(dwpr>=dup&&dwpr<0.0){chflag=2;}//индикатор в верхней экстремальной зоне
      if(dwpr<=ddn&&dwpr>-100.1){chflag=1;}//индикатор в нижней ЭЗ, а остальное все тоже самое
//Самое начало пока индикатор "балтается"      
      if(dwpr>=0.0000){if(flag){FileWrite(filehandle,"Самое начало пока индикатор балтается. Бар № "+IntegerToString(i)+
                                         " dwpr "+DoubleToString(dwpr,4));}
File:
Motivazione: