Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 857

 

Bonjour ! Où puis-je obtenir (où se trouve) l'historique des cotes ? Et, surtout, comment faire référence à chaque tick dans mql ?

 
ikatsko:

Bonjour ! Où puis-je obtenir (où se trouve) l'historique des cotes ? Et, surtout, comment faire référence à chaque tick dans mql ?

Peut-être que ça aidera. La méthode permet d'obtenir l'historique des cotations, par ticks.

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

 
Top2n:

Cela pourrait aider. La méthode vous permet d'obtenir l'historique des devis, par coche.

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

Bon lien. Merci ! Mais il y a une deuxième question : comment utiliser MQL pour faire référence à chaque tick sélectionné ?
 
ikatsko:
Bon lien. Merci ! Mais il y a une deuxième question : comment utiliser MQL pour traiter chaque coche sélectionnée ?

Au moyen de MQL. Essayez-le, compilez-le en tant qu'EA et mettez-le sur un graphique, et recherchez le fichier "Record" dans les fichiers

//+------------------------------------------------------------------+
//|                                                Запись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;
}

Bonne chance.

 
r772ra:

Au moyen de MQL. Essayez-le, compilez-le en tant qu'EA et mettez-le sur un graphique, et recherchez le fichier "Record" dans les fichiers

Bonne chance.

Merci et bonne chance ! Je comprends que cette procédure va écrire les ticks actuels dans le fichier. Oui ?
 
ikatsko:
Merci à vous aussi ! Je comprends que cette procédure va écrire les ticks actuels dans le fichier. Oui ?

Oui. Bid b Ask, et aussiVolume. LorsqueVolume == 1, il y a un temps d'arrivée de 1 tick d' une nouvelle barre.









 
r772ra:

Oui. Bid b Ask, et aussiVolume. LorsqueVolume == 1, il y a un temps d'arrivée de 1 tick d'une nouvelle barre.










J'aimerais disposer d'un tableau analogue à celui des barres, afin de pouvoir m'adresser, par exemple, consécutivement à chaque tick, évidemment, nous parlons d'histoire. J'ai l'impression que je vais devoir former un tel tableau manuellement (par moi-même) à partir des valeurs existantes des citations dans l'historique. Et après cela, on pourra s'attaquer aux éléments de ce tableau.

 

Bonjour, je suis en train de démonter l'indicateur SMA. Je n'arrive pas à comprendre :

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)  Куда лучше подставить?
 

Lors de l'optimisation dans le testeur, le message suivant apparaît souvent dans le journal de bord

"2015.03.05 11:04:55.924 Gestionnaire de mémoire : ne peut allouer 343699140 octets de mémoire"

Veuillez indiquer quelle mémoire ne peut pas être détectée par le terminal ? Comment peut-on y remédier ?

 

Bonjour, Regardez le code ci-dessous, création de l'objet "Flèche" sur le signal, les flèches ne sont pas dessinées dans le testeur, bien que le journal passe, et aussi dans le journal au démarrage dans le testeur écrit une erreur TestGenerator : unmatched data error (volume limit 412 at 2014.10.13 17:10 exceeded),

Et pendant le test, il émet une erreur "Checking USDJPYm,M5 arrow : Error in object creation : code #4200" - mais je suppose que c'est normal, car au début le programme constate que l'objet a été créé, et après l'avoir supprimé, le crée à nouveau. D'une manière générale, je vous serais reconnaissant de bien vouloir répondre à ces questions.

Ne jugez pas strictement ce qui est écrit.

//+------------------------------------------------------------------+
//| 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 установлена");
}