Wünsche für MT5 - Seite 58

 
Urain:

Nicht mehr relevant, außer aus Gründen der Bequemlichkeit.

int scale =(int)ChartGetInteger(chart_id,CHART_SCALE);
int pointer_per_bar=pow(2,scale);// количество пикселей на бар
// остальное можно высчитать из первого видимого бара, и ширины графика в пикселях.

О! Danke, Nikolai, kannst du es zu Ende bringen? Ich meine die Implementierung von 4 spezifischen Funktionen:

int  ChartGetX(datetime T);

int  ChartGetY(double P);

datetime ChartGetTime(int X);

double ChartGetPrice(int Y);

Es sieht so aus, als hätten Sie das Rätsel schon gelöst, und ich werde noch lange daran herumtüfteln müssen. Ich wäre Ihnen sehr dankbar, wenn Sie das tun könnten.

 

Renat:

Der Handel mit mehreren Expert Advisors für ein Symbol ist unsinnig.

Das ist genauso illusorisch wie die Möglichkeit, mehrere Indikatoren in einem Diagramm zu platzieren.

Allein die Tatsache, dass es in MT4 die Möglichkeit gibt, mit einem Klick aus den Expert Advisors beliebige komplexe Strukturen zu erstellen und daraus beliebige Portfolios zu bilden, ist grandios.

Um diese Funktion in five zu haben, erstellen Sie eine Handelsklasse mit Unterstützung für die virtuelle Aufteilung des Handelskontos in Unterkonten

Oder schaffen Sie im Terminal eine Möglichkeit, Ihr eigenes virtuelles Symbol auf der Basis der vorhandenen hinzuzufügen.

 

Vielleicht bin ich hinter der neuen Funktionen von MT5, aber ich möchte in der Lage sein, Charts von X-und Y-Koordinaten anzuzeigen, und nicht von Bars und Preis, wenn eine solche Möglichkeit bereits existiert, beraten Sie bitte, wenn nicht, ich denke, es ist einfach zu implementieren mit OBJ_CHART grafisches Objekt mit einem bestimmten Symbol/Tool XY_Symbol

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
MetaDriver:

О! Danke, Nikolai! Kannst du bis zum Ende lesen? Ich meine die Implementierung von 4 spezifischen Funktionen:

Es sieht so aus, als hätten Sie das Rätsel schon gelöst, und ich werde noch lange daran herumtüfteln müssen. Ich wäre Ihnen sehr dankbar, wenn Sie das tun könnten.

Ungefähr so. Wenn Sie einen anderen Winkel benötigen, kann dieser anhand der Pixelmaße des Fensters neu berechnet werden.

//+------------------------------------------------------------------+
//| Преобразование координат. Верхний левый угол привязки            |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| time to X                                                        |
//+------------------------------------------------------------------+
int WindowGetX(long chart_id,datetime T)
  {
   datetime temp[]; int bar=(int)ChartGetInteger(chart_id,CHART_FIRST_VISIBLE_BAR);
   CopyTime(ChartSymbol(chart_id),ChartPeriod(chart_id),bar,1,temp);
   return((int)NormalizeDouble(
          ((T-temp[0])/(double)PeriodSeconds(ChartPeriod(chart_id)))*
          pow(2,ChartGetInteger(chart_id,CHART_SCALE)),0));
  };
//+------------------------------------------------------------------+
//| price to Y                                                       |
//+------------------------------------------------------------------+
int WindowGetY(long chart_id,double P)
  {
   return((int)((ChartGetDouble(chart_id,CHART_PRICE_MAX)-P)*
          (ChartGetInteger(chart_id,CHART_HEIGHT_IN_PIXELS)/
          (ChartGetDouble(chart_id,CHART_PRICE_MAX)-ChartGetDouble(chart_id,CHART_PRICE_MIN)))));
  };
//+------------------------------------------------------------------+
//| X to time                                                        |
//+------------------------------------------------------------------+
datetime WindowGetTime(long chart_id,int X)
  {
   datetime temp[]; int bar=(int)ChartGetInteger(chart_id,CHART_FIRST_VISIBLE_BAR);
   CopyTime(ChartSymbol(chart_id),ChartPeriod(chart_id),bar,1,temp);
   return((datetime)(temp[0]+
          (X/(double)pow(2,ChartGetInteger(chart_id,CHART_SCALE)))*
          PeriodSeconds(ChartPeriod(chart_id))));
  };
//+------------------------------------------------------------------+
//| Y to price                                                       |
//+------------------------------------------------------------------+
double WindowGetPrice(long chart_id,int Y)
  {
   return(ChartGetDouble(chart_id,CHART_PRICE_MAX)-Y/
          (ChartGetInteger(chart_id,CHART_HEIGHT_IN_PIXELS)/
          ChartGetDouble(chart_id,CHART_PRICE_MAX)-ChartGetDouble(chart_id,CHART_PRICE_MIN)));
  };

Beispielanruf.

void OnStart()
  {
   datetime T=StringToTime("2011.02.25 18:12");
   double P=1.37831;
   Object(ChartID(),T,P);
  }
//+------------------------------------------------------------------+
void Object(long chart_id,datetime T,double P)
  {
   int x=WindowGetX(chart_id,T);
   int y=WindowGetY(chart_id,P);
   string name="Button";
   if(ObjectCreate(chart_id,name,OBJ_BUTTON,0,0,0,0,0))
     {//---
      ObjectSetInteger(chart_id,name,OBJPROP_BACK,1);
      ObjectSetInteger(chart_id,name,OBJPROP_SELECTABLE,false);
      ObjectSetInteger(chart_id,name,OBJPROP_STATE,false);
      //--- привяжем кнопку к правому верхнему углу графика
      ObjectSetInteger(chart_id,name,OBJPROP_CORNER,CORNER_LEFT_UPPER);
      //--- теперь настроим свойства объекта      
      ObjectSetInteger(chart_id,name,OBJPROP_XSIZE,40);
      ObjectSetInteger(chart_id,name,OBJPROP_YSIZE,40);
      ObjectSetInteger(chart_id,name,OBJPROP_BGCOLOR,Silver);
      ObjectSetInteger(chart_id,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(chart_id,name,OBJPROP_YDISTANCE,y);
     }
  }
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Угол привязки
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Угол привязки
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Угол привязки - Документация по MQL5
 
Aber auch hier wäre es besser, wenn diese Funktionen standardmäßig vorhanden wären. Dann wüssten alle Sprachbenutzer davon, nicht nur diejenigen, die diesen Thread lesen.
 
Korrigiert den Code Beitrag, beschrieben als separate Funktionen (ohne Klasse) und verändert die Bindung Winkel.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Угол привязки
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Угол привязки
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Угол привязки - Документация по MQL5
 
Urain:
Aber auch hier wäre es besser, wenn diese Funktionen standardmäßig vorhanden wären. Dann wüssten alle Sprachbenutzer davon, nicht nur diejenigen, die diesen Thread lesen.

Ich danke Ihnen!
 
MetaDriver:
Ich danke Ihnen!
Setzen Sie die Prüfungen ein, denn manchmal gibt es keine Daten und Sie erhalten eine Division durch Null.
 

Ich würde gerne eine Standardimplementierung der Funktion sehen, die zu einem bestimmten Zeitpunkt nach einer Taktnummer sucht.

Im Moment implementiere ich es mit CArrayLong. Aber in diesem Fall muss ich eine Menge Daten laden, die bereits im Diagramm selbst vorhanden sind. Das bedeutet, dass er den Speicher im Wesentlichen dupliziert. Ich denke, dass es in einer Standardform viel schneller gehen würde.

 
Urain:
Setzen Sie die Prüfungen ein, denn manchmal gibt es keine Daten und Sie erhalten eine Division durch Null.
GUT.