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

 
LSM:
Ich habe meine Frage bearbeitet und den Code hinzugefügt. Es findet eine Schleife statt. Es ist nicht klar, was ich bekommen werde, wenn es in der Schleife passiert.
Dort ist alles klar,
Im Zyklus hat der Indikator zum Beispiel 15 gezählt. 5-Minuten-Kerze
und nahm den Wert aus der 15+1. Die 16. 15-Minuten-Kerze.


 
LSM:

Ich beantworte meine eigene Frage, falls jemand sie braucht.)

Das ist richtig.
 

Guten Tag.

Bitte beraten Sie mich, ich habe eine Idee, aber von welcher Seite ich mich nähern soll, "verstehe" ich noch nicht.

Ich habe einen Indikator, auf den ich für eine bestimmte Liste von Kontonummern aus einer CSV-Datei auf dem Server Zugriff habe.

Ist es technisch möglich, eine Nachricht für ein bestimmtes Konto aus der Liste zu schreiben und sie auf dem Diagramm für diesen bestimmten Benutzer anzuzeigen.

Ich gebe zum Beispiel die Kontonummer in CSV an und schreibe einen Text wie "Hallo...", und der Benutzer sieht ihn im Diagramm? Wenn es überhaupt möglich ist, in welche Richtung "zu graben"? Ich danke Ihnen...

 

Guten Tag, könnten Sie mir helfen, einige mql4-Syntax zu verstehen? Ich habe die Idee , einen trendfolgenden EA zu schreiben, der z.B. eine Long-Position mit einem Stop von 150 Pips von der offenen Order und einem Take-Profit von 50 eingeben würde, und dann, wenn der Preis tp erreicht, würde ein neuer Kauf mit Stop 150 und Take-Profit 50 eröffnet werden, und wenn er am Stop-Loss scheitert, würde ein Verkauf mit dem gleichen Risiko/Gewinn-Verhältnis wie für Long-Positionen durchgeführt werden. Ich habe versucht, einen Code mit einer solchen Logik zu schreiben, aber es ist fehlgeschlagen, weil der Expert Advisor während des Tests keine Trades macht.

double b, difference;
int ticket;

int OnInit()
{
   b=Bid;
   return(b);
}

void OnTick()
{
   difference = Bid-b;
   if(OrdersTotal()==0)
   {
      if(difference==150*Point)
      {
         ticket=OrderSend(Symbol(),OP_BUY,1,Ask,0,Ask-150*Point,Ask+50*Point,0);
         if(difference==0){b=Bid+150*Point;}
            if(ticket<0)
            {
               Print("lose");
            }
      }
      if(difference==200*Point){b=Bid-150*Point;}

      if(difference==-150*Point)
      {
         ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,Bid+150*Point,Ask-50*Point,0);
         if(difference==0){b=Bid-150*Point;}
            if(ticket<0)
            {
               Print("lose");
            }
      }
      if(difference==-200*Point){b=Bid+150*Point;}
   }
}
Как самому создать советника или индикатор - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
Как самому создать советника или индикатор - Алгоритмический трейдинг, торговые роботы - Справка по MetaTrader 5
  • www.metatrader5.com
Для разработки торговых систем в платформу встроен собственный язык программирования MetaQuotes Language 5 ( MQL5 ), среда разработки MetaEditor и...
 
MosheDayan:

Guten Tag.

Bitte beraten Sie mich, ich habe eine Idee, aber von welcher Seite ich mich nähern soll, "verstehe" ich noch nicht.

Ich habe einen Indikator, auf den ich für eine bestimmte Liste von Kontonummern aus einer CSV-Datei auf dem Server Zugriff habe.

Ist es technisch möglich, eine Nachricht für ein bestimmtes Konto aus der Liste zu schreiben und sie auf dem Diagramm für diesen bestimmten Benutzer anzuzeigen.

Geben Sie zum Beispiel die Kontonummer im CSV-Format an und schreiben Sie einen Text wie "Hallo...", und der Benutzer wird ihn im Diagramm sehen? Wenn es überhaupt möglich ist, in welche Richtung "zu graben"? Ich danke Ihnen...

Senden Sie eine Post-Request mit der Kontonummer an den Server

IntegerToString(AccountInfoInteger(ACCOUNT_LOGIN)

Auf dem Server wird die eingehende Nummer mit allen Zeilen in der CSV-Datei abgeglichen, und wenn es eine Übereinstimmung gibt, dann wird von dieser Zeile in der Datei eine Antwort an das Terminal gesendet. Es bleibt nur noch, die Antwort des Servers im Terminal zu lesen und auf dem Diagramm anzuzeigen.

Im Allgemeinen sind solche Dinge in MySQL einfacher zu implementieren als in einer Datei.

 
Maxim235v34:
Und ja, wenn es nicht schwierig ist, schlagen Sie eine Möglichkeit vor, die Zeilenabstände in diesem Forum zu verringern.

Schreiben Sie zuerst in eine Textdatei (Notepad) - dann kopieren Sie über die Zwischenablage. Sie erhalten es so

double b, difference;
int ticket;

int OnInit()
{
   b=Bid;
   return(b);
}

void OnTick()
{
   difference = Bid-b;
   if(OrdersTotal()==0)
   {
      if(difference==150*Point)
      {
         ticket=OrderSend(Symbol(),OP_BUY,1,Ask,0,Ask-150*Point,Ask+50*Point,0);
         if(difference==0){b=Bid+150*Point;}
            if(ticket<0)
            {
               Print("lose");
            }
      }
      if(difference==200*Point){b=Bid-150*Point;}

      if(difference==-150*Point)
      {
         ticket=OrderSend(Symbol(),OP_SELL,1,Bid,0,Bid+150*Point,Ask-50*Point,0);
         if(difference==0){b=Bid-150*Point;}
            if(ticket<0)
            {
               Print("lose");
            }
      }
      if(difference==-200*Point){b=Bid+150*Point;}
   }
}
Lesen Sie über die Funktion OnInit() - setzen Sie den Cursor darauf und drücken Sie F1. Das Wort int ist vorangestellt - die Funktion gibt also einen Integer-Wert zurück. Sie versuchen, einen Wert vom Typ double zurückzugeben. Das Ergebnis der Funktion OnInit() wird vom Laufzeit-Subsystem des Terminals analysiert und es benötigt diesen Wert kaum.
 
LRA:

Schreiben Sie zuerst in eine Textdatei (in Notepad) - dann kopieren Sie über die Zwischenablage. Sie lautet wie folgt

Ich danke Ihnen. Gut zu wissen.

Lesen Sie über die Funktion OnInit() - setzen Sie den Cursor darauf und drücken Sie F1. Das Wort int ist vorangestellt - diese Funktion gibt also einen Integer-Wert zurück. Sie versuchen, einen Wert vom Typ double zurückzugeben. Das Ergebnis von OnInit() wird vom Laufzeit-Subsystem des Terminals ausgewertet und es benötigt diesen Wert kaum.
Welcher Ereignishandler welchen Typs sollte dann verwendet werden, um dies zu implementieren - um
den Preiswert zu Beginn der Programmausführung festzulegen, in Bezug auf den die zukünftigen Berechnungen durchgeführt werden sollen?
Ich habe versucht, alles, was in int OnInit stand, zu entfernen und den folgenden Code in die void OnTick ganz am Anfang einzufügen, indem ich die Variable varStart hinzufügte
if(varStart==0)
{
b=Gebot;
varStart=1;
}
Das Ergebnis ist unverändert.
 

Es gibt eine Funktion mit einem Zeiger:


  TickReturn *returntick(int period, int timeposition)
   {
      TickReturn *returntick = new TickReturn();
      MqlRates rates[];
      MqlTick last_tick;
      
      if(SymbolInfoTick(symbol,last_tick)){}
      else Print("SymbolInfoTick() failed, error = ",GetLastError());
      
      //int timeposition=0;
      ArraySetAsSeries(rates,true);
      ArrayResize(rates,1);
      int copied=CopyRates(symbol,period,timeposition,1,rates);
      
      returntick.curtime = rates[0].time;
      returntick.open = rates[0].open;
      returntick.close = rates[0].close;
      returntick.high = rates[0].high;
      returntick.low = rates[0].low;
      returntick.priceask = last_tick.ask;
      returntick.pricebid = last_tick.bid;
      
      return(returntick);

   } 

Ich rufe sie trotzdem in einer anderen Funktion auf:


string timeis = returntick(period, 1).curtime;

Wie kann ich die Erinnerung daran löschen?

Bei delete(TickReturn); erhalte ich einen Fehler operand excepted.

 
hamsteruser:

Es gibt eine Funktion mit einem Zeiger:


Ich rufe sie trotzdem in einer anderen Funktion auf:


Wie kann ich die Erinnerung daran löschen?

Bei delete(TickReturn); erhalte ich einen Fehler operand excepted.


Wenn ich Ihren Code richtig lese, ist TickReturn eine Klasse. Sie haben einen Zeiger auf eine Variable vom Typ dieser Klasse erstellt. die Klasse selbst? Sie müssen den Zeiger zerstören und sicherstellen, dass er existiert und dynamisch ist.

 
Алексей Барбашин:

Wenn ich Ihren Code richtig lese, ist TickReturn eine Klasse. Sie haben einen Zeiger auf eine Variable vom Typ dieser Klasse erstellt, aber Sie zerstören... ...die Klasse selbst? Sie müssen den Zeiger zerstören und sicherstellen, dass er existiert und dynamisch ist.


Der *Returntick ist auch nicht zerstörbar. Ich bin nur verwirrt durch die Ausgabe des Handelsterminals. Es sagt mir, dass es den Speicher nicht löscht.

Grund der Beschwerde: