[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 917

 
_SS_:
Wie erstelle ich eine Funktion und rufe sie auf?
Lesen Sie ein Lehrbuch... :)
 

artemida70, habe meinen ersten EA mit Hilfe des Tutorials von S. Kovalev zusammengestellt. Es stellte sich heraus, dass seine Kriteriumsfunktion mit Verlusten arbeitete. Ich habe meine Kriterium-Funktion geschrieben. Ich habe sie auf Fehler geprüft und dann den Expert Advisor kompiliert. Das Ergebnis dieser Arbeit war, dass ich:

- bei der Kriterienfunktion: O - Fehler, 1 Warnung;

-für die Kompilierung von Expert Advisor: О - Fehler, О - Warnungen.

Aber die Arbeit in der Strategy Tester nicht gehen, setzen Test ALERTS in Funktionen int init, int start, int deinit. Ich sehe in den Antworten, dass die Kontrolle von Terminal an die Funktion int init übergeben wird und die Kontrolle nicht an die Funktion int start - keine Antwort ALERT. Wenn der EA entladen wird, gibt es eine Antwort von der Funktion int deinit.

Ich bitte um Ihren Rat in dieser Situation. Ich brauche dringend Rat von einem erfahrenen Fachmann.

DANKESCHÖN

artmedia70:
Lesen Sie ein Tutorial... :)
 
artmedia70:
Hier haben Sie eine seltsame Struktur. Sie führen die standardmäßige Auftragsschleife des Terminals aus. Von Null bis OrdersTotal() -1. Und dann überprüfen Sie in der Schleife, ob es keine Aufträge im Terminal gibt. Warum überprüfen Sie nicht das Ticket für Bestellungen? Oder eine Magie? Und Ihre Flagge ist aus irgendeinem Grund 0. Und warum nicht falsch? Aber Sie sind der Chef. Ihre Logik, Sie müssen sie verstehen... :)

Danke für den Tipp))) Genau zu diesem Zeitpunkt:. Von Null bis OrdersTotal() -1... Das ist der Grund, warum der Tester keine weiteren Bestellungen mehr aufgegeben hat))))

Ich verwende dieses Schema, weil ich es im Unterricht von jemand anderem gelernt habe. Wenn Sie eine rationellere Methode beschreiben könnten, wäre ich Ihnen sehr dankbar))))

 

Ich bin am Arsch, ich bin seit fast einem Monat nicht mehr aus mql4 herausgekommen, ich glaube ich werde verrückt oder was?

Ich habe keine Ahnung, was ich damit anfangen soll.

Ich sag's ja nur, gib mir wenigstens einen Hinweis, was los ist... Gurus, helft den Dummköpfen!

Ich sehe keine Fehler im Protokoll.
 
extern double StopLoss=50.0;
extern double TakeProfit=50.0;
extern double Lots=1;
extern int total;

int start()
{
double Price_1, Price_2, min, max;
RefreshRates();
Price_1=Bid;
Price_2=Ask;

min=iLow(NULL,0,2);
max=iHigh(NULL,0,2);
total=OrdersTotal();
if(total<1)
{

if(Price_1>max)
OrderSend(Symbol(),OP_BUY,Lots,Ask,5,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Meine Order#",16384,0,Green);

if(Price_2<min)
OrderSend(Symbol(),OP_SELL,Lots,Bid,5,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Meine Order#",16384,0,Green);
}
}
return(0);
 
boris.45:

artemida70, habe meinen ersten EA mit Hilfe des Tutorials von S. Kovalev zusammengestellt. Es stellte sich heraus, dass seine Kriteriumsfunktion mit Verlusten arbeitete. Ich habe meine Kriterium-Funktion geschrieben. Ich habe es auf Fehler geprüft und dann den Expert Advisor kompiliert. Das Ergebnis dieser Arbeit war, dass ich:

- bei der Kriterienfunktion: O - Fehler, 1 Warnung;

-für die Kompilierung von Expert Advisor: О - Fehler, О - Warnungen.

Aber die Arbeit in der Strategy Tester nicht gehen, setzen Test ALERTS in Funktionen int init, int start, int deinit. Ich sehe in den Antworten, dass die Kontrolle von Terminal an die Funktion int init übergeben wird und die Kontrolle nicht an die Funktion int start - keine Antwort ALERT. Wenn der EA entladen wird, gibt es eine Antwort von der Funktion int deinit.

Bitte geben Sie mir Ihren Rat zu dieser Situation. Ich brauche dringend Rat von einem erfahrenen Fachmann.

DANKESCHÖN


Ich würde gerne sehen, was Sie dort gemacht haben... :)
Ich verstehe nicht, was das bedeutet - die IC-Kriterienfunktion arbeitet mit Verlusten. Schließlich kann jede Funktion, wenn sie die Eröffnungskriterien verfolgt, entweder richtig oder falsch funktionieren und daher Fehler aufweisen. Aber die Strategie selbst - sie kann verlustreich oder gewinnbringend sein... Die Kriterienfunktion verfolgt nur die von der Strategie festgelegten Kriterien und sendet Signale an die Handelsfunktion.
 
ViktorF:

Danke für den Tipp))) Genau zu diesem Zeitpunkt:. Von Null bis OrdersTotal() -1... Das ist der Grund, warum der Tester keine weiteren Bestellungen mehr aufgegeben hat))))

Ich verwende dieses Schema, weil ich es im Unterricht von jemand anderem gelernt habe. Wenn Sie eine rationalere Methode beschreiben könnten, wäre ich Ihnen sehr dankbar)))).

Es gibt viele Möglichkeiten. Alles hängt davon ab, was Sie finden wollen.

In jedem Fall können Sie mit dem Durchlaufen der Aufträge beginnen

for (int i =0; i<OrdersTotal(); i++)

dann prüfen Sie genau, was Sie in der Schleife finden wollen.

if (OrderSelect(i, SELECT_BY_POS) // Wenn die Bestellung ausgewählt ist (hier habe ich den Funktionsparameter MODE_TRADES weggelassen, da er standardmäßig ausgewählt ist)

und dann - Sie überprüfen bereits die Parameter der Reihenfolge, die Sie benötigen, zum Beispiel, Magie

if (OrderMagicNumber()==Magic) // wenn die Bestellung die angegebene magische Zahl hat, dann... dann ist dies die Reihenfolge, die wir brauchen...

Na ja... Oder seine Art...

if (OrderType()==OP_BUY || OrderType()==OP_SELL) // wenn die Auftragsart Kaufen oder Verkaufen ist...

usw..

Obwohl, wir können es auch ganz anders machen... Das hängt von Ihren Gewohnheiten und von den Anforderungen des Codes ab...

 
gheka:

Sollte funktionieren. Lächelt das Smiley-Gesicht?
 

Hallo zusammen! Ich habe den folgenden Code in meinem Expert Advisor (siehe unten). So wie ich es verstehe, wird das Signal zur Eröffnung einer Position von den Indikatoren zweier Indizes abgeleitet. Wie können wir die Aufträge auf der Grundlage nur eines Indikators, z. B. des CCI, öffnen lassen? Ich danke Ihnen vielmals.

int getSignal() {
   int Momentum = checkMomentum();
   int CCI = checkCCI();
   if (Momentum != CCI) return (0);
   return (Momentum);
}
int checkCCI() {
   double CCI = iCCI(NULL, 0, 60, PRICE_TYPICAL, 1);
   Print("CCI: ", CCI);
   if (CCI > 0.0) return (1);
   if (CCI < 0.0) return (-1);
   return (0);
}

int checkMomentum() {
   double Momentum = iMomentum(NULL, 0, 60, PRICE_TYPICAL, 1);
   Print("Momentum ", Momentum);
   if (Momentum > 100 && Momentum < 101) return (1);
   if (Momentum < 100 && Momentum > 99) return (-1);
   return (0);
}
 

Hilfe, EA schließt nicht alle Aufträge bei Erreichen eines Gewinns

void CloseAllOrders()
{
  for (int i = 0; i < OrdersTotal(); i++)
  {
    if (OrderSelect(i, SELECT_BY_POS))
    {
      if (OrdersTotal() > 1 && OrderSymbol() == Symbol() && AccountProfit() >= AccountBalance()*AllProfit/100)
      {
        if((OrderType()==OP_BUY || OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT)) OrderClose(OrderTicket(), OrderLots(),Bid,0);
        if((OrderType()==OP_SELL || OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT)) OrderClose(OrderTicket(), OrderLots(),Ask,0);
        if(UseSound == true)
        {
        PlaySound(SuccesSound);
        }        
      }
    }
  }
}