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

 
MosheDayan:

Freunde, wie kann man sich aus dieser Situation richtig befreien... Der Indikator zeichnet zwei horizontale Linien aus CSV (Rot - vom Tagesanfang bis zum Tagesende) Blau - Balken aus den vergangenen Tagen, auf verschiedenen Preisniveaus. Aber es gibt Tage, an denen diese Stufen den gleichen Wert/Preis haben. Was ist der richtige Weg aus dieser Situation, so dass, wenn die Linien übereinstimmen, die Ray (Blue) angezeigt wird, und die rote Linie ist nicht sichtbar auf dem Diagramm, aber physisch vorhanden ... dh, es ist transparent.

Jetzt - Draw_Level("Red", red, DRAW_NONE, STYLE_SOLID,0); es hört auf, die Linie zu zeichnen, aber der Strahl ist auch nicht von unten sichtbar. Danke.

Achten Sie auf die Reihenfolge der Objekterstellung. Und was ist Draw_Level() Warum eine benutzerdefinierte Funktion erwähnen, wenn niemand damit vertraut ist?

 
Artyom Trishkin:

Guten Tag. Was genau haben Sie versucht, selbst zu tun? Ich sehe nur die beiden beigefügten Codes. Wenn Sie jemanden brauchen, der alles für Sie erledigt, ist die Freiberuflichkeit genau das Richtige für Sie.

Und wenn Sie es selbst versuchen, dann zeigen Sie mir genau, was Sie tun und wo Sie nicht verstehen.

Guten Tag, Artem! Richtige Bemerkung. Ja, ich füge eine Wordovan-Datei mit dem Code bei. Was ich zu meinem Code aus dem geliehenen Algorithmus hinzugefügt habe, ist rot markiert. Ich kann nicht mit Sicherheit sagen, wo ich es noch nicht verstanden habe, weil ich den Mechanismus der Arbeit des Codes nicht ganz verstehe. Aber vielleicht können Sie mich mit Ihrem Rat in die richtige Richtung lenken. Ich wäre Ihnen sehr dankbar.

 

Guten Tag!
Ich eröffne eine Order auf einem anderen Symbol als dem Diagramm, an das der Expert Advisor angehängt ist. Die Frage ist, ob ich die Korrektheit von Bid vorab prüfen muss und wie ich das tue.

double Bid0= MarketInfo(OtherSymbol0,MODE_BID);
OrderSend(OtherSymbol0,OP_SELL,1,Bid0,3,stoploss,takeprofit,"My order",16384,0,clrGreen); 
 

Guten Tag.

Können Sie mir sagen, wie man die folgende Zeit in den Code schreibt: 23:59 des ersten Freitags des Monats nach dem ersten Mittwoch dieses Monats? d.h. wenn der Monat am Donnerstag begonnen hat, dann brauchen Sie die Zeit 23:59 des zweiten Freitags...

Ich danke Ihnen.

 
MosheDayan:

Guten Tag.

Können Sie mir sagen, wie man die folgende Zeit in den Code schreibt: 23:59 des ersten Freitags des Monats nach dem ersten Mittwoch dieses Monats? d.h. wenn der Monat am Donnerstag begonnen hat, dann brauchen Sie die Zeit 23:59 des zweiten Freitags...

Ich danke Ihnen.

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   int countWedn=0;
   int countFrid=0;
   if(TimeDayOfWeek(TimeCurrent())==5 && Hour()==23 && Minute()==59)
     {
      countWedn=0;
      countFrid=0;
      for(int i=0; i<=Day(); i++)
        {
         if(TimeMonth(iTime(Symbol(),PERIOD_D1,i))==TimeMonth(TimeCurrent()))
           {
            if(TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,i))==3)countWedn++;
            if(TimeDayOfWeek(iTime(Symbol(),PERIOD_D1,i))==5)countFrid++;
           }
        }
     }
   if(countWedn==1 && countFrid==1)Print(" 23:59 первой пятницы месяца после первой среды этого месяца ");
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:

Sie können. Und die Richtung der Überlegungen ist richtig. Können Sie mir zeigen, wie Sie versucht haben, die Parameter zu ermitteln?


Ich habe es herausgefunden. Es ist notwendig, das grafische Objekt an die entsprechende Klasse zu "binden".

#include <ChartObjects\ChartObject.mqh>.

void OnStart()

{

CChartObject-Objekt;

string objName = "";

double price = 0;

datetime tt;

int NumTriangles = ObjectsTotal(ChartID(),0,OBJ_TRIANGLE);

for (int j=0;j<NumTriangles;j++){

objName = ObjectName(ChartID(),j);

object.Attach(ChartID(),objName,0,3);

for (int i=0;i<Objekt.NumPoints();i++){

Preis = object.Price(i);

dt = object.Time(i);

Print("Pivot Punkt - ",IntegerToString(i)," Zeit = ",TimeToString(dt)," Preis = ",DoubleToStr(price,4))

}

object.Detach();

}

 

Guten Tag zusammen!

Ich habe eine solche Frage, es gibt eine solche Blockade:

opf_all=0;
  for(int is=OrdersHistoryTotal(); is>=0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY) && OrderSymbol()==Symbol() && OrderMagicNumber()==MN)
     {
      opf_all=opf_all+OrderProfit()+OrderCommission()+OrderSwap();
     }
   }

Die Variable opf_all soll den Gesamtgewinn für den gesamten Zeitraum ausgeben. Wenn Sie jedoch in der Registerkarte "Kontohistorie" des Terminals den Parameter "aktueller Tag" auswählen, zeigt dieses Modul das folgende Ergebnis an

nur für den aktuellen Tag, und wenn wir den gesamten Zeitraum auswählen, wird dieses Modul für den gesamten Zeitraum angezeigt. Dies sollte nicht der Fall sein. Unabhängig vom Intervall in der Kontohistorie

sollte das Modul weiterhin den Gesamtgewinn für den gesamten Zeitraum anzeigen. Vielleicht verstehe ich etwas nicht?

Ist dieses Problem irgendwie gelöst?

 
Valerius:

Guten Tag zusammen!

Ich habe eine solche Frage, es gibt eine solche Blockade:

opf_all=0;
  for(int is=OrdersHistoryTotal(); is>=0; is--)
   {
    if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY) && OrderSymbol()==Symbol() && OrderMagicNumber()==MN)
     {
      opf_all=opf_all+OrderProfit()+OrderCommission()+OrderSwap();
     }
   }

Die Variable opf_all soll den Gesamtgewinn für den gesamten Zeitraum ausgeben. Wenn Sie jedoch in der Registerkarte "Kontohistorie" des Terminals den Parameter "aktueller Tag" auswählen, zeigt dieses Modul das folgende Ergebnis an

nur für den aktuellen Tag, und wenn wir den gesamten Zeitraum auswählen, wird dieses Modul für den gesamten Zeitraum angezeigt. Dies sollte nicht der Fall sein. Unabhängig vom Intervall in der Kontohistorie

sollte das Modul weiterhin den Gesamtgewinn für den gesamten Zeitraum anzeigen. Vielleicht verstehe ich etwas nicht?

Ist dieses Problem irgendwie gelöst?

Nein, das Problem kann nur dadurch gelöst werden, dass die Größe des berechneten Verlaufs auf der Registerkarte "Kontoverlauf" ausgewählt wird.

Und bitte fügen Sie den Code über die Schaltfläche SRC ein - sie befindet sich direkt über dem Texteingabefeld im Menü zur Nachrichtenformatierung. Ich habe Ihre unleserliche "Verderbnis" korrekt eingefügt.

 
Artyom Trishkin:

Nein, keine andere Lösung als die Auswahl der Größe des berechneten Verlaufs auf der Registerkarte Kontoverlauf

Und bitte fügen Sie den Code über die SRC-Schaltfläche ein - sie befindet sich direkt über dem Texteingabefeld im Menü zur Beitragsformatierung. Ich habe Ihre unleserliche "Verderbnis" korrekt eingefügt.

Danke und Entschuldigung...

 

Hallo. Es gibt eine Schaltfläche auf dem Diagramm https://www.mql5.com/ru/code/19049 und es öffnet die Website. ich muss in der Lage sein, das Skript durch diese Schaltfläche zu aktivieren. kann es neu gemacht werden?

Link
Link
  • Stimmen: 11
  • 2017.09.01
  • Iurii Tokman
  • www.mql5.com
Индикатор создает графическую кнопку, при нажатии на которую открывается окно браузера с сайтом, заданным в настройках индикатора.
Grund der Beschwerde: