Fehler, Irrtümer, Fragen - Seite 1189

 

meta-quotes, Sie haben mich völlig verwirrt (

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-точки привязки
   );
 

N nach 30 zuerst ?

Maximal 30?

 
sanyooooook:

meta-quotes, Sie haben mich völlig verwirrt (

N nach 30 zuerst ?

Maximal 30?

Die Hilfe gibt an:

Erzeugt ein Objekt mit dem angegebenen Namen, Typ und den Anfangskoordinaten im angegebenen Unterfenster des Diagramms. Sie können bei der Erstellung bis zu 30 Koordinaten angeben.

D.h. 30 ist das Maximum. So kommt zunächst eine unbekannte Anzahl (N) von Parametern und der allerletzte Parameter mit dem Index 30.

 
barabashkakvn:

Die Hilfe gibt an:

Erzeugt ein Objekt mit dem angegebenen Namen, Typ und den Anfangskoordinaten im angegebenen Unterfenster des Diagramms. Bei der Erstellung können bis zu 30 Koordinaten angegeben werden.

D.h. 30 ist das Maximum. So kommt zunächst eine unbekannte Anzahl (N) von Parametern und der allerletzte Parameter mit dem Index 30.

Normalerweise wird N geschrieben, und danach wird die maximale Anzahl N angegeben, wobei N<=30 ist.

SZZ: Sie sind Meister der Verwirrung: allein eine Änderung der Indexierung beim Kopieren eines Arrays kostet nichts )

oder dies:

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

Es stellt sich heraus, dass die erste Koordinate der Trendlinie nicht die erste ist, sondern die Null, und das steht nirgendwo, zumindest nicht dort, wo man diese Information schnell finden kann.

 
sanyooooook:
Sie schreiben normalerweise N, und danach geben Sie das maximale N an, wenn N<=30

Nicht in diesem Zusammenhang. Dabei handelt es sich nicht um eine Beschreibung der Bedingungen, sondern um einen Variablennamen. Und der Variablenname sollte den maximal zulässigen Index widerspiegeln. Aus diesem Grund werden die letzten Variablen mit dem Index 30 versehen:

   datetime     time30=0,      // время 30-й точки привязки
   double       price30=0      // цена 30-точки привязки
 
paladin800:
Gibt es eine Möglichkeit, Dateien nicht auf die Festplatte, sondern in den RAM zu schreiben/lesen, um schneller und ohne Löcher zu arbeiten?
Sie können eine RAM-Disk erstellen, Sie können eine Datei im Speicher erstellen.
 
barabashkakvn:

Nicht in diesem Zusammenhang. Dabei handelt es sich nicht um eine Beschreibung der Bedingungen, sondern um einen Variablennamen. Und der Variablenname sollte den maximal zulässigen Index widerspiegeln. Aus diesem Grund werden die letzten Variablen mit dem Index 30 versehen:

In allen Mathematiklehrbüchern wird es so geschrieben, wie ich es oben erwähnt habe, sie geben N an und geben diesem N dann einen Wert, der 30 nicht überschreitet.
 

Sie haben es direkt in der Referenz auf dem Platz:

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:
Sie können eine RAM-Disk erstellen, Sie können eine Datei im Speicher erstellen.
Ich verstehe. Das Problem ist, dass sich die Terminal-Sandbox auf dem Laufwerk C befindet, und selbst wenn ich ein RAM-Laufwerk (z. B. Laufwerk E) erstelle, ist es nicht möglich, die Sandbox dorthin umzuleiten.
 
paladin800:
Ich verstehe. Das Problem ist, dass sich die Sandbox der Terminals auf Laufwerk C befindet und selbst wenn ich ein RAM-Laufwerk (z.B. Laufwerk E) anlege, kann ich die Sandbox nicht dorthin umleiten.

Zunächst einmal ist es möglich, sie umzuleiten.

Und wenn Sie WinAPI verwenden, brauchen Sie auch nicht umzuleiten. Zweitens hat die Erstellung von Dateien im Speicher nichts mit RAM-Disks zu tun, auch wenn WinAPI ebenfalls benötigt wird.

 

Ich habe die Metaeditor-Hilfe benutzt, um ein Beispiel für die Arbeit mit der Verteilung zu nehmen. Ich habe es auf GBPCHF, CADCHF ausgeführt, wo der Spread nicht 1-2 Pips beträgt. Können Sie mir sagen, warum das Feld mit Nullen gefüllt ist? Ist das so geplant?

#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);
  }