[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 96

 

Ich muss etwas übersehen haben:

extern double LotsStep = 0.1;
       double Lots;
...

int start()
{
   ...
   
   if (NewOrder)
   { 
      if (OrdersTotal() == 0)
         Lots = LotsStep;
      else
         Lots += LotsStep;
      
      Lots = TrueLots(Lots);
      if (Lots < 0)
      {
         Alert("Не хватает денег на ", DoubleToStr(-Lots, 2), " лотов!");
         Lots = 0;
         Buy  = False;
         Sell = False;
      }
      
      NewOrder = False;
   }
      
   //Блок открытия на бай
   
   ...
}

double TrueLots(double Lots)
{
   double Free    = AccountFreeMargin();
   double One_Lot = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
   
   if (Lots > Max_Lot)
   {
      Alert("...");
      Lots = Max_Lot;
   }

   if (Lots*One_Lot > Free)
      return(-Lots);
   
   return(Lots);
}

 

Ein weiteres Problem, ich hatte einen Fehler '(' Funktionsdefinition unerwartet, ich setzte diese Funktion " double LotSize()
".
Ich möchte jedes nachfolgende Lot zuerhöhen, geöffnet werden, aber ich möchte es nur mit einer Reihe von Signalen für den Kauf geöffnet werden, und wenn entgegengesetzte Signale kommen, Zähler auf Null gesetzt und neue Pyramide begann gebaut werden, wenn es möglich ist, das ist, warum ich dieses Code-Fragment nahm, weil ich dachte, es war verantwortlich für diesen Schritt, aber es hat sich nicht so...

 
MaxZ:

Ich muss etwas übersehen haben:


Danke, ich werde es gleich ausprobieren.
 
SeALALex:
Das war's.


Sehen Sie sich den Trailer an - korrigieren Sie ihn selbst.

Dateien:
b-lots.mqh  3 kb
 
SeALALex:

Danke, ich werde es jetzt versuchen.

Ich habe auch eine Prüfung hinzugefügt, um sicherzustellen, dass eine bestimmte Anzahl von Losen geöffnet werden kann. Improvisiere und du wirst Glück haben! :))


Die Logik ist wie folgt:

Wenn es keine Aufträge auf dem Markt gibt (hier schließe ich ausstehende Aufträge aus), dann weisen wir der Variablen Lots (in diesem Fall der Schritt) den Anfangswert zu.

Wenn es bereits Aufträge auf dem Markt gibt, wird der Parameter Lots bei jeder Eröffnung um den Wert von LotsStep erhöht.

Ich weiß nicht, was Ihre spezielle Aufgabe ist, deshalb habe ich "improvisieren" geschrieben.


Roman.:


Sehen Sie sich den Trailer an - korrigieren Sie ihn selbst.

Am besten, du meisterst alles mit deinen eigenen Händen und lernst dabei auch noch, wie man programmiert! :D

 
MaxZ:

Ich muss etwas übersehen haben:


Maxim, wenn Sie Zeit haben, schauen Sie sich dieses Thema an... :-)))

Ich kann nicht mit einem "gemeinsamen Nenner" für alle EAs auf einmal aufwarten (eine universelle Option)... :-(((

In meinen Codes von EAs - es sagt über "dabble" Überlauf...

Ich werde eine detaillierte Frage mit Screenshots in diesem Thread stellen ...

P.S. Bei einigen Versionen von Eulen funktioniert es gut, bei anderen nicht... Jetzt wird alles nach dem Buch gemacht, einschließlich der Multiplikation... Auch sein Produkt muss für einen universellen Ansatz in Multiplikatoren aufgeschlüsselt werden. Ich habe ein Array, wie Sie für TWR-Variable empfohlen, aber bisher ist es nicht für alle EAs arbeiten, für einige EAs ist es immer noch überfüllt mit "double" Datentyp auf Trades bis zu 1000 Einheiten auf Geschichte... bei der Berechnung der optimalen f insgesamt.

 
MaxZ:

Ich muss etwas übersehen haben:


Es tut mir leid, dass ich es nicht immer mitbekomme.


NewOrder-Fehler -'NewOrder' - Variable nicht definiert, wo muss ich sie zuerst benennen?

 
Roman.:


Maxim, wenn Sie Zeit haben, schauen Sie sich dieses Thema an... :-)))

Was soll ich im ProCapital-Forumsthread sehen? :))


Roman.:


Ich kann nicht auf einen "gemeinsamen Nenner" für alle EAs auf einmal kommen (eine universelle Option)... :-(((

In meinen Codes von EAs - es sagt über "dabble" Überlauf...

Ich werde eines Tages eine detaillierte Frage mit Screenshots in diesem Thread stellen...

P.S. Bei einigen Versionen von Eulen funktioniert es gut, bei anderen nicht... Jetzt wird alles nach dem Buch gemacht, einschließlich der Multiplikation... Das Produkt muss auch für den universellen Ansatz in Multiplikatoren zerlegt werden. Ich habe ein Array, wie Sie für TWR-Variable empfohlen, aber bisher ist es nicht für alle EAs arbeiten, für einige EAs der Datentyp "double" noch überläuft mit Trades bis zu 1000 Stück auf Geschichte...bei der Berechnung der endgültigen optimalen f.

In der ProCapital-Filiale? Warum dort? Stellen Sie es ein, ich werde mir die Screenshots ansehen und darüber nachdenken.
 
MaxZ:

Was soll ich im ProCapital-Forumsthread sehen? :))


In der Filiale von ProCapital? Warum dort? Stellen Sie es ein, ich werde mir die Screenshots ansehen und darüber nachdenken.


Sorry, da war ein falscher Link im Puffer - ein alter... :-)))

Hier.

Jetzt bin ich bei der Arbeit - detaillierte Frage mit Screenshots - werde heute Abend oder morgen im selben Thread posten. :-)))

 
SeALALex:

Es tut mir leid, ich bekomme es nicht immer auf Anhieb mit.


NewOrder Fehler -'NewOrder' - Variable nicht definiert, wo rufe ich sie zuerst auf?

Mit der Erfahrung kommt die Erfahrung! ;)


NewOrder ist eine Variable vom Typ bool. Sie muss z.B. am Anfang der Funktion Start() deklariert werden. Alles hängt von der Struktur Ihres Codes ab.

Wir setzen die Variable NewOrder auf True, wenn wir einen Auftrag eröffnen wollen.

Zum Beispiel wird unser EA mit offenen Preisen und dem Indikator Gleitender Durchschnitt arbeiten:

if ((Close[2] <= MA2 && Close[1] > MA1) || (Close[2] < MA2 && Close[1] >= MA1))
{
   NewOrder = True;
   Buy = True;
}
Grund der Beschwerde: