Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 857

 

¿Dónde puedo obtener (dónde está) el historial de cotizaciones? Y, lo más importante, ¿cómo referirse a cada garrapata en mql?

 
ikatsko:

¿Dónde puedo obtener (dónde está) el historial de cotizaciones? Y, lo más importante, ¿cómo referirse a cada garrapata en mql?

Tal vez sea de ayuda. El método permite obtener el historial de cotizaciones, por ticks

http://tradelikeapro.ru/kak-poluchit-kachestvo-modelirovaniya-99/

 
Top2n:

Podría ayudar. El método permite obtener el historial de cotizaciones, por tildes

http://tradelikeapro.ru/kak-poluchit-kachestvo-modelirovaniya-99/

Buen enlace. Gracias. Pero hay una segunda cuestión: ¿cómo utilizar MQL para referirse a cada garrapata seleccionada?
 
ikatsko:
Buen enlace. Gracias. Pero hay una segunda cuestión: ¿cómo utilizar MQL para abordar cada garrapata seleccionada?

Por medio de MQL. Pruébalo, compílalo como un EA y ponlo en un gráfico, y busca el archivo "Record" en los archivos

//+------------------------------------------------------------------+
//|                                                ЗаписьBid_Ask.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
Запись();
   
  }
//+------------------------------------------------------------------+
void Запись()
{
  int handle;
  string st=TimeToStr(TimeCurrent(), TIME_DATE);
  string filename = st+" Запись.csv"; // Формируем имя файла
  handle = FileOpen(filename,FILE_CSV|FILE_READ | FILE_WRITE,';');
  if(handle < 1)
  {
    Print("Не удалось создать файл. Ошибка #", GetLastError());
    return;
    //FileClose(handle);
  }
  
  FileWrite(handle,                   
            " Время ",
            " Bid ",
            " Ask ",
            " Volume "
            ); // заголовок
  FileSeek(handle, 0, SEEK_END);
  FileWrite(handle,
            TimeToStr(TimeCurrent(),TIME_MINUTES|TIME_SECONDS),
            Bid,
            Ask,
            Volume[0]
            );
 
  FileClose(handle);
  return;
}

Buena suerte.

 
r772ra:

Por medio de MQL. Pruébalo, compílalo como un EA y ponlo en un gráfico, y busca el archivo "Record" en los archivos

Buena suerte.

Gracias y buena suerte. Entiendo que este procedimiento escribirá los ticks actuales en el archivo. ¿Sí?
 
ikatsko:
Gracias a ti también. Entiendo que este procedimiento escribirá los ticks actuales en el archivo. ¿Sí?

Sí. Oferta y demanda, y tambiénvolumen. Cuandoel Volumen == 1, hay un tiempo de llegada de 1 tick de una nueva barra.









 
r772ra:

Sí. Oferta y demanda, y tambiénvolumen. Cuandoel Volumen == 1, hay un tiempo de llegada de 1 tick de una nueva barra.










Me gustaría tener un array análogo al array de barras, para poder dirigirme, por ejemplo, consecutivamente a cada tick, obviamente, estamos hablando de la historia. Creo que tendré que formar esa matriz manualmente (por mí mismo) a partir de los valores existentes de las cotizaciones en el historial. Y después se podrá dirigir a los elementos de esa matriz

 

Hola, estoy desmontando el indicador SMA. No puedo entenderlo:

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[])
  {
//--- check for bars count
   if(rates_total<InpMAPeriod-1 || InpMAPeriod<2)
      return(0);
//--- counting from 0 to rates_total
   ArraySetAsSeries(ExtLineBuffer,false); //  если не объявлять то по умолчанию разве не стоит тоже самое?
   ArraySetAsSeries(close,false);
//--- first calculation or number of bars was changed

//+------------------------------------------------------------------+
//|   simple moving average                                          |
//+------------------------------------------------------------------+
void CalculateSimpleMA(int rates_total,int prev_calculated,const double &price[])
  {
   int i,limit;
//--- first calculation or number of bars was changed
   if(prev_calculated==0)
   
     {
      limit=InpMAPeriod;
      //--- calculate first visible value
      double firstValue=0;
      for(i=0; i<limit; i++)
         firstValue+=price[i];
      firstValue/=InpMAPeriod;
      ExtLineBuffer[limit-1]=firstValue;          Не чего не пойму, записываем в массив где limit =периоду(например 15-1),
     }
   else
      limit=prev_calculated-1;                       После первого запуска пусть будет равен Limit = 256 - 1;
//--- main loop
   for(i=limit; i<rates_total && !IsStopped(); i++)
      ExtLineBuffer[i]=ExtLineBuffer[i-1]+(price[i]-price[i-InpMAPeriod])/InpMAPeriod;  Тогда ExtLineBuffer[i-1]=0 т.к. ExtLineBuffer[256-1]=0 так получается, объясните пожалуйста эту строчку.
                                                                                                       Заранее благодарю
//---
  }
Если надо вставить (High[i+j]+Low[i+j])*0.5; то есть применить Median Price (HL/2)  Куда лучше подставить?
 

Al optimizar en el probador, a menudo aparece el siguiente mensaje en el registro

"2015.03.05 11:04:55.924 Gestor de memoria: no puede asignar 343699140 bytes de memoria"

Por favor, indique qué memoria no puede ser detectada por el terminal. ¿Cómo se puede arreglar?

 

Hola! Por favor, mira el código de abajo, la creación de un objeto "Flecha" en la señal, en el probador de las flechas no se dibujan, aunque el registro pasa, y también en la revista cuando se ejecuta en el probador escribe un error TestGenerator: error de datos no coincidentes (límite de volumen 412 en 2014.10.13 17:10),

Y durante las pruebas da un error "Checking USDJPYm,M5 arrow: Error en la creación del objeto: código #4200" - pero supongo que esto es normal, porque al principio el programa encuentra que el objeto fue creado, y después de borrarlo, lo crea de nuevo. En general, le agradecería sus comentarios a las preguntas.

No juzgue estrictamente como está escrito.

//+------------------------------------------------------------------+
//| SignalOpenOrderBuy SendMail                                      |
//+------------------------------------------------------------------+
if (PLO0>S0 && PLO1<=S1 && PLO2<S2 && Time[0] > SignalTime)
{
SignalTime = TimeCurrent();
bool SignalBuy = ObjectCreate(0,"ArrowBay",OBJ_ARROW_BUY,0,0,Bid,SignalTime);
Print("Стрелка Buy установлена");
ObjectSetInteger(0,"ArrowBay",OBJPROP_COLOR,clrGreen);
if(!SignalBuy)
Print("Ошибка создания объекта: code #",GetLastError());
ResetLastError();
ObjectDelete(0,"ArrowBay");
RefreshRates();
SignalBuy = ObjectCreate(0,"ArrowBay",OBJ_ARROW_BUY,0,0,Bid,SignalTime);
ObjectSetInteger(0,"ArrowBay",OBJPROP_COLOR,clrGreen);
if(!SignalBuy)
Print("Ошибка создания объекта: code #",GetLastError());
else
Print("Стрелка Buy установлена");
}