错误、漏洞、问题 - 页 1189

 

元引号,你让我完全糊涂了(

bool  ObjectCreate(
   long         chart_id,      // идентификатор графика
   string       name,          // имя объекта
   ENUM_OBJECT  type,          // тип объекта
   int          sub_window,    // индекс окна
   datetime     time1,         // время первой точки привязки
   double       price1,        // цена первой точки привязки
   ...
   datetime     timeN=0,       // время N-ой точки привязки
   double       priceN=0,      // цена N-ой точки привязки
   ...
   datetime     time30=0,      // время 30-й точки привязки
   double       price30=0      // цена 30-точки привязки
   );
 

30岁以后的N个第一?

最多30个?

 
sanyooooook:

methaquotas,你让我完全糊涂了(

30岁以后的N个第一?

最多30个?

该帮助规定。

在图形的指定子窗口中创建一个具有指定名称、类型和初始坐标的对象。创建时,你最多可以指定30个坐标。

也就是说,30是最大的。因此,首先是一个未知数(N)的参数和索引为30的最后一个参数。

 
barabashkakvn:

该帮助规定。

在图形的指定子窗口中创建一个具有指定名称、类型和初始坐标的对象。在创建过程中,最多可以指定30个坐标。

也就是说,30是最大的。因此,首先是一个未知数(N)的参数和索引为30的最后一个参数。

通常他们写的是N,之后他们指定最大的数字N,其中N<=30

SZZ:他们是混淆的大师:在复制一个数组 时,仅改变索引就不需要任何费用 )

或者这样。

           ObjectSetInteger(0,iObjectName,OBJPROP_TIME,0,X1Time);

事实证明,趋势线的第一个坐标不是第一个。而是零,而且没有任何地方说明,至少在你能快速找到这个信息的地方。

 
sanyooooook:
你通常写N,然后在N<=30的地方指定最大的N

在这种情况下不行。这不是对条件的描述,而是一个变量名称。而变量的名称应该反映出最大的可允许的索引。这就是为什么最后的变量与指数30一起走。

   datetime     time30=0,      // время 30-й точки привязки
   double       price30=0      // цена 30-точки привязки
 
paladin800:
有没有什么办法使文件操作不是写/读到磁盘,而是写到RAM,以使工作更快,没有漏洞?
你可以制作一个RAM磁盘,你可以在内存中创建一个文件。
 
barabashkakvn:

在这种情况下不行。这不是对条件的描述,而是一个变量名称。而变量的名称应该反映出最大的可允许的索引。这就是为什么最后的变量与指数30一起走。

在所有的数学教科书中,他们都像我上面提到的那样写,他们指定N,然后给这个N一个不超过30的值。
 

他们在四合院的参考资料中得到了它。

bool  ObjectCreate(
   long          chart_id,      // идентификатор графика
   string        object_name,   // имя объекта
   ENUM_OBJECT   object_type,   // тип объекта
   int           sub_window,    // индекс окна
   datetime      time1,         // время первой точки привязки
   double        price1,        // цена первой точки привязки
   ...
   datetime      timeN=0,       // время N-точки привязки
   double        priceN=0       // цена N-точки привязки
   );
 

 
TheXpert:
你可以制作一个RAM磁盘,你可以在内存中创建一个文件。
我明白了。问题是,终端沙盒在C盘,即使我创建一个RAM盘(如E盘),也不可能将沙盒重定向到那里。
 
paladin800:
我明白了。问题是,终端的沙盒位于C盘,即使我创建了一个RAM盘(如E盘),我也无法将沙盒重定向到那里。

首先,有可能重新定向。

而如果你使用WinAPI,你也不需要重定向。第二,在内存中创建文件与RAM-磁盘无关,尽管也需要WinAPI。

 

我使用了Metaeditor的帮助,以一个例子来说明如何与传播的工作。我在GBPCHF、CADCHF上运行,其点差不是1-2个点。你能告诉我为什么数组中充满了零吗?它是这样设计的吗?

#property indicator_separate_window
#property indicator_buffers 1
//---- plot Spread
#property  indicator_label1  "Spread"
#property  indicator_type1   DRAW_HISTOGRAM
#property  indicator_color1  clrRed
#property  indicator_style1  STYLE_SOLID
#property  indicator_width1  1
//--- input parameters
input int      bars=3000;
//--- indicator buffers
double         SpreadBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,SpreadBuffer,INDICATOR_DATA);
   IndicatorSetInteger(INDICATOR_DIGITS,0);
//---
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
   if(prev_calculated==0)
     {
      int spread_int[];
      ArraySetAsSeries(spread_int,true);
      int spreads=CopySpread(Symbol(),0,0,bars,spread_int);
      Print("Получено исторических значений спреда: ",spreads);
      for (int i=0;i<spreads;i++) 
      {
      SpreadBuffer[rates_total-1-i]=spread_int[i];
      if(i<=30) Print("spread["+i+"] =",spread_int[i]);
      }
     }
   else
     {
      double Ask,Bid;
      Ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
      Bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
      Comment("Ask = ",Ask,"  Bid = ",Bid);
      SpreadBuffer[rates_total-1]=(Ask-Bid)/Point();
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }