任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 857

 

你好!我在哪里可以得到(哪里是)报价的勾股历史?而且,最重要的是,如何在mql中指代每个tick

 
ikatsko:

你好!我在哪里可以得到(哪里是)报价的勾股历史?而且,最重要的是,如何在mql中指代每个tick?

也许会有帮助。该方法允许获得历史报价,按刻度计算

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

 
Top2n:

这可能会有帮助。该方法允许你获得历史上的报价,通过勾选

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

好的链接。谢谢你!但还有第二个问题:如何使用MQL来指代每个选定的勾?
 
ikatsko:
不错的链接。谢谢你!但还有第二个问题:如何使用MQL来解决每个选定的勾选?

通过MQL的方式。试试吧,把它编译成EA并放在图表上,然后在文件中寻找 "记录 "文件。

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

好运。

 
r772ra:

通过MQL的方式。试试吧,把它编译成EA并放在图表上,然后在文件中寻找 "记录 "文件。

好运。

谢谢你,祝你好运!我理解这个程序将把当前的刻度线写到文件中。是吗?
 
ikatsko:
也谢谢你!我知道这个程序将把当前的刻度线写到文件中。是吗?

是的,买入和卖出,还有成交量成交量==1,有一个新的条形图到达时间为1 tick









 
r772ra:

是的,买入和卖出,还有成交量成交量==1,有一个新的条形图的到达时间为1 tick










我想有一个类似于条形阵列的数组,所以我可以解决,例如,连续到每个刻度,显然,我们正在谈论历史。我觉得我必须从历史上现有的报价值中手动形成这样一个数组(由我自己)。此后,人们将能够处理该数组的元素

 

你好!我正在拆开SMA指标。我搞不清楚。

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

在测试器中进行优化时,日志中经常弹出以下信息

"2015.03.05 11:04:55.924 内存处理器:无法分配343699140字节的内存"

请告知哪些内存不能被终端检测到?如何才能解决这个问题?

 

你好!请看下面的代码,在信号上创建"Arrow "对象,在测试器中没有画出箭头,虽然日志通过了,而且在测试器的启动日志中也写了一个错误 TestGenerator: unmatched data error (volume limit 412 at 2014.10.13 17:10 exceeded) 。

而在测试过程中,它给出了一个错误 "检查USDJPYm,M5箭头:对象创建错误:代码#4200" - 但我猜这是正常的,因为一开始程序发现对象被创建了,在删除它后,又重新创建了它。总的来说,我希望你能对这些问题提出意见。

不要严格按照文字判断。

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