Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 80

 
Artyom Trishkin:

Im Prüfgerät auf einem anderen Symbol? Oder in Demo/Echtzeit auf einem anderen Symbol? Oder im Tester auf diesem Symbol? Oder auf Demo/Echt auf dieses Symbol?

Warum müssen Sie alles aus sich herausholen?

Worauf wollen Sie hinaus? Welchen Unterschied macht es, wo Sie es probiert haben? Die Frage ist, ob Punkt = 0. Und wenn ja, wie schreibe ich den Code richtig, damit ich nicht auf einen Fehler stoße: Division durch Null?
 
LuckySith:

Tut mir leid, ich bin sehr nerdig - ich verstehe das nicht wirklich.
Vielleicht haben Sie den einfachsten Indikator mit einem Code von einigen, ich habe eine Analogie zu verstehen? Weil ich keine finden konnte.

Ich habe einen sehr einfachen Code, der Punkte in die Mitte des Balkens setzt. Wie bringe ich den Text zum Vorschein, wenn ich mit dem Mauszeiger darüber fahre, oder ein Feld, was auch immer.



#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Black
//---- input parameters
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,159);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted();
   int limit=Bars-counted_bars;
//----  
   for(int i=limit; i>=0; i--)
     {
      double       fabody0 = fabs(Close[i]-Open[i]);
      double       fabody1 = fabs(Close[i+1]-Open[i+1]);
      double       fabody2 = fabs(Close[i+2]-Open[i+2]);
      double       fabody3 = fabs(Close[i+3]-Open[i+3]);
      double       fabody4 = fabs(Close[i+4]-Open[i+4]);
      double       fabody5 = fabs(Close[i+5]-Open[i+5]);
      double       fabody6 = fabs(Close[i+6]-Open[i+6]);
      double       fabody7 = fabs(Close[i+7]-Open[i+7]);
      if((fabody0>fabody1) && (fabody0>fabody2) && (fabody0>fabody3) && (fabody0>fabody4) && (fabody0>fabody5) && (fabody0>fabody6) &&(Volume[i]>Volume[i+1]))
      {  
         if (((Close[i]>Open[i])&&(Low[i]+(High[i]-Low[i])/2>Low[i+1]+(High[i+1]-Low[i+1])*0.9))||((Close[i]<Open[i])&&(Low[i]+(High[i]-Low[i])/2<Low[i+1]+(High[i+1]-Low[i+1])*0.1)))
         ExtMapBuffer1[i]=(iHigh(Symbol(),0,i)+iLow(Symbol(),0,i))/2;
      }
     }
//----
   return(0);
  }
Versuchen Sie
Dateien:
gmxdk8j.mq4  6 kb
 
Gevorg Hakobyan:
Worauf wollen Sie hinaus? Welchen Unterschied macht es, wo Sie es probiert haben? Die Frage ist, ob Punkt = 0 ist. Und wenn ja, wie sollte ich korrekten Code schreiben, damit ich nicht auf einen Fehler stoße: Division durch Null?
Wie Sie wollen.
Prüfen Sie daher den Teiler vor der Teilung auf Null.
Ich dachte, Sie interessieren sich für die Ursache, nicht für die Wirkung, und für die geeignete Krücke.
 
Artyom Trishkin:
Wie Sie wollen.
Prüfen Sie daher den Teiler vor der Teilung auf Null.
Ich dachte, Sie interessieren sich für die Ursache, nicht für die Wirkung, und für die geeignete Krücke.
Ich habe nicht den ganzen Dialog gelesen, aber ich vermute ein Problem mit dem Druck des fünften Dezimalkommas.
 
Alexey Viktorov:
Ich habe nicht den ganzen Dialog gelesen, aber ich vermute ein Problem mit dem Druck der fünften Nachkommastelle.
Nein, es dividiert durch Point() und erhält eine Division durch Null.
Deshalb versuche ich, eine schlüssige Antwort darauf zu bekommen, wie und woher die Symboldaten kommen.

 
Artyom Trishkin:
Nein, es dividiert durch Point() und erhält eine Division durch Null.
Ich versuche, eine klare Antwort darauf zu bekommen, wie und woher die Daten für das Symbol stammen.

if(v=="NZD")
{
h=(iClose("NZDUSD",p,b)-iOpen("NZDUSD",p,b))/MarketInfo("NZDUSD",MODE_POINT)+
(iOpen("EURNZD",p,b)-iClose("EURNZD",p,b))/MarketInfo("EURNZD",MODE_POINT)+
(iOpen("GBPNZD",p,b)-iClose("GBPNZD",p,b))/MarketInfo("GBPNZD",MODE_POINT)+
(iOpen("AUDNZD",p,b)-iClose("AUDNZD",p,b))/MarketInfo("AUDNZD",MODE_POINT)+
(iClose("NZDJPY",p,b)-iOpen("NZDJPY",p,b))/MarketInfo("NZDJPY",MODE_POINT)+
(iClose("NZDCAD",p,b)-iOpen("NZDCAD",p,b))/MarketInfo("NZDCAD",MODE_POINT)+
(iClose("NZDCHF",p,b)-iOpen("NZDCHF",p,b))/MarketInfo("NZDCHF",MODE_POINT);
}
 
Alexey Viktorov:
Ich habe nicht den ganzen Dialog gelesen, aber ich vermute ein Problem mit dem Druck des fünften Dezimalkommas.
Könnte das das Problem sein?
 
Gevorg Hakobyan:
Könnte das das Problem sein?
Nein. Es geht nur um die Unsichtbarkeit der fünften Ziffer beim Drucken und in den Ausschreibungen.
 
Alekseu Fedotov:
Versuchen Sie
Im Allgemeinen ist das genau das, was Sie brauchen, aber das Problem ist, dass die Beschreibung recht umfangreich ist und diese Methode buchstäblich ein paar Wörter schreiben kann - der Rest wird einfach nicht angezeigt
 

Hallo.

Bitte um Hilfe.

Nun steigt die Menge jeder folgenden Reihenfolge in 1, 2, 3, 4, 5...

Ich möchte, dass die Menge jeder Bestellung nicht bei jeder Bestellung steigt, sondern in 3er-Schritten, also 1, 1, 1, 1, 2, 2, 2, 3, 3, 3...


extern double   LotStop        = 0.01;
extern double   Plus_LotStop   = 0.01;
extern double   Plus_N_ORD  = 3;        //каждые N ордеров
void OnTick()
  {
//---
      for (int i=1; i<=OrdersStop; i++)
   {
         if((Close[1]<Open[1]&&Close[2]>Open[2]&&NumberOfPositions(Symbol(), -1,_Magic)<1))
         {
            OPENORDER (OP_BUYSTOP,PriceBS,LOTs,_Magic,i);
            numB++;
            PriceBS = NormalizeDouble(PriceBS+Step_Stop*Point,Digits);
          
            OPENORDER (OP_SELLSTOP,PriceSS,LOTs,_Magic,i);
            numS++;
            PriceSS = NormalizeDouble(PriceSS-Step_Stop*Point,Digits);
         }
      
      LOTs=LOTs+Plus_LotStop;
      }
  }
Grund der Beschwerde: