Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 857

 

Hallo! Wo kann ich die Tick-Historie von Kursen abrufen (wo ist sie)? Und vor allem, wie kann man sich in mql auf jeden Tick beziehen?

 
ikatsko:

Hallo! Wo kann ich die Tick-Historie von Kursen abrufen (wo ist sie)? Und vor allem, wie kann man sich in mql auf jeden Tick beziehen?

Vielleicht hilft es ja. Die Methode ermöglicht es, die Historie der Notierungen nach Ticks abzurufen

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

 
Top2n:

Das könnte helfen. Mit dieser Methode können Sie die Historie der Zitate abrufen, und zwar nach Häkchen

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

Guter Link. Ich danke Ihnen! Aber es gibt noch eine zweite Frage: Wie kann man MQL verwenden, um auf jedes ausgewählte Häkchen zu verweisen?
 
ikatsko:
Guter Link. Ich danke Ihnen! Aber es gibt noch eine zweite Frage: Wie kann man MQL verwenden, um jedes ausgewählte Häkchen anzusprechen?

Mit Hilfe von MQL. Probieren Sie es aus, kompilieren Sie es als EA und setzen Sie es auf einen Chart, und suchen Sie die Datei "Record" in den Dateien

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

Viel Glück!

 
r772ra:

Mit Hilfe von MQL. Probieren Sie es aus, kompilieren Sie es als EA und setzen Sie es auf einen Chart, und suchen Sie die Datei "Record" in den Dateien

Viel Glück!

Vielen Dank und viel Glück! Ich verstehe, dass dieses Verfahren die aktuellen Ticks in die Datei schreibt. Ja?
 
ikatsko:
Vielen Dank auch an Sie! Ich verstehe, dass dieses Verfahren die aktuellen Ticks in die Datei schreibt. Ja?

Ja. Bid b Ask, und auchVolumen. WennVolumen == 1 ist, gibt es eine Ankunftszeit von 1 Tick eines neuen Balkens.









 
r772ra:

Ja. Bid b Ask, und auchVolumen. WennVolumen == 1 ist, gibt es eine Ankunftszeit von 1 Tick eines neuen Balkens.










Ich würde gerne ein Array analog zum Array der Balken haben, so dass ich z.B. fortlaufend jeden Tick adressieren könnte, offensichtlich reden wir über die Geschichte. Ich habe das Gefühl, dass ich ein solches Array manuell (von mir selbst) aus den vorhandenen Werten der Anführungszeichen in der Historie bilden muss. Und danach kann man die Elemente dieses Arrays ansprechen

 

Hallo! Ich nehme den SMA-Indikator auseinander. Ich kann es nicht herausfinden:

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

Bei der Optimierung im Tester wird oft folgende Meldung im Protokoll eingeblendet

"2015.03.05 11:04:55.924 Memory handler: cannot allocate 343699140 bytes of memory"

Welcher Speicher kann vom Terminal nicht erkannt werden? Wie kann das behoben werden?

 

Hallo! Bitte schauen Sie sich den Code unten, die Erstellung von "Arrow" -Objekt auf das Signal, Pfeile sind nicht in den Tester gezeichnet, obwohl das Protokoll geht, und auch in der Log beim Start in den Tester schreibt einen Fehler TestGenerator: unmatched Datenfehler (Volumengrenze 412 bei 2014.10.13 17:10 überschritten),

Und während des Testens erzeugt es einen Fehler "Checking USDJPYm,M5 arrow: Error in object creation: code #4200" - aber ich denke, das ist normal, weil das Programm zunächst feststellt, dass das Objekt erstellt wurde, und es nach dem Löschen erneut erstellt. Generell wäre ich Ihnen für Ihre Kommentare zu den Fragen dankbar.

Urteilen Sie nicht streng nach dem Wortlaut.

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