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

 
neisseria:
Versucht, einen EA zu erstellen, der auf einer Münze basiert, Kopf kaufen, Schwanz verkaufen. Aber es funktioniert nicht. Beim Testen in einem Fenster gibt es eine Aufschrift: Beim Öffnen der Bestellung Fehler 131, in der Anwendung sah - es ist nicht das richtige Volumen. Ich habe genau hingesehen, ich kann keinen Fehler finden. Überall steht ein Punkt, um den ganzzahligen Teil zu trennen, nicht ein Komma. Bitte um Hilfe. Der Code befindet sich in der Datei.
Erlaubt das Konto 0,01 Lot? Vielleicht eine Mindestmenge von 0,1?
 
neisseria:
Versucht, einen EA zu erstellen, basierend auf Münze, Adler kaufen, Schwänze verkaufen. Aber es hat nicht funktioniert. Beim Testen bekam ich folgende Meldung im Fenster: Fehler 131 beim Öffnen der Bestellung, ich habe in der Anwendung nachgeschaut, es ist nicht das richtige Volumen. Ich habe genau hingesehen, ich kann keinen Fehler finden. Überall steht ein Punkt, um den ganzzahligen Teil zu trennen, nicht ein Komma. Bitte um Hilfe. Der Code befindet sich in der Datei.


verwenden:

MinLot= MarketInfo( symbol(),MODE_MINLOT )// Kleinstmögliche Losgröße

StepLot= MarketInfo( symbol(),MODE_STEPLOT )// Minimaler Schritt der Losänderung

Lot sollte >= MinLot sein und mit Lot=NormalizeDouble(Lot,Dig) normalisiert werden;

wobei Dig = Anzahl der Stellen nach dem Komma StepLota, d.h. StepLot=0.01 - Dig=2 ... StepLot=0.1 - Dig=1 .....

Zum Beispiel mit MinLot=0,1 und StepLot=0,01:

Die Menge kann 0,1, 0,11, 0,12 usw. betragen. Aber es kann nicht 0,99, 0,98 und schon gar nicht 0,998, 0,999, 0,111, 0,101 sein.

 
Sepulca:


verwenden:

MinLot= MarketInfo( symbol(),MODE_MINLOT )// Kleinstmögliche Losgröße

StepLot= MarketInfo( symbol(),MODE_STEPLOT )// Minimaler Schritt der Losänderung

Lot sollte >= MinLot sein und mit Lot=NormalizeDouble(Lot,Dig) normalisiert werden;

wobei Dig=Anzahl der_Ziffern_nach_Post StepLota, d.h. StepLot=0,01 - Dig=2 ... StepLot=0.1 - Dig=1 .....

Zum Beispiel mit MinLot=0,1 und StepLot=0,01:

Die Menge kann 0,1, 0,11, 0,12 usw. betragen. Aber es kann nicht 0,99, 0,98 und schon gar nicht 0,998, 0,999, 0,111, 0,101 sein.


Zum Beispiel mit MinLot=0,1 und StepLot=0,01:

Die Menge kann 0,1, 0,11, 0,12 usw. betragen. Aber es kann nicht 0,99 oder 0,98 sein.

Das gibt's doch nicht... wirklich?

88 oder 89 Mal die Partie um den Mindestschritt erhöhen. Zum Beispiel muss die Menge jeder weiteren geöffneten Position um den Mindestschritt erhöht werden. D.h., man addiert einfach den minimalen Losänderungsschritt zu dem Los der vorherigen Position. Die 98. zu eröffnende Position hat das Los 0,98, bzw. das Los der 99. Position wird um einen minimalen Schritt erhöht 0,98+0,01=0,99...

GlaubenSie, dass die DT sich mit einem solchen Los nicht abspeisen lässt?

 
artmedia70:

Zum Beispiel mit MinLot=0,1 und StepLot=0,01:

Die Menge kann 0,1, 0,11, 0,12 usw. betragen. Aber es kann nicht 0,99 sein, 0,98

Das gibt's doch nicht... wirklich?

88 oder 89 Mal die Partie um den Mindestschritt erhöhen. Zum Beispiel muss die Menge jeder weiteren geöffneten Position um den Mindestschritt erhöht werden. D.h., man addiert einfach den minimalen Losänderungsschritt zu dem Los der vorherigen Position. Die 98. zu eröffnende Position hat das Los 0,98, bzw. das Los der 99. Position wird um einen minimalen Schritt erhöht 0,98+0,01=0,99...

Glauben Sie, dass Maklerunternehmen die Eröffnung einer solchen Partie nicht zulassen werden?


Verdammt, .... Natürlich falsch. Es kann nicht 0,09 sein, sondern 0,08.

Und dumm oder nicht dumm - das muss der EA-Autor entscheiden.

 
kellin:
Nein, natürlich muss ich bei der Eröffnung des nächsten oder eines der folgenden Balken einen Kauf- oder Verkaufsauftrag erteilen. Und ich habe auch vor, nach einem Auftrag zu schließen, indem ich ihn nach der Anzahl der Punkte von der Eröffnung an zuordne.

Später (am Wochenende) werde ich hier den Code für die Eröffnung einer Marktorder posten - entweder Kauf oder Verkauf (nach Ihrer Wahl), bei Eröffnung einer neuen Kerze.
 
Sepulca:


verwenden:

MinLot= MarketInfo( symbol(),MODE_MINLOT )// Kleinstmögliches Losvolumen

StepLot= MarketInfo( symbol(),MODE_STEPLOT )// Minimaler Schritt der Losänderung

Lot sollte >= MinLot sein und mit Lot=NormalizeDouble(Lot,Dig) normalisiert werden;

wobei Dig = Anzahl der Stellen nach dem Komma StepLota, d.h. StepLot=0.01 - Dig=2 ... StepLot=0.1 - Dig=1 .....

Zum Beispiel mit MinLot=0,1 und StepLot=0,01:

Die Menge kann 0,1, 0,11, 0,12 usw. betragen. Aber es kann nicht 0,99, 0,98 und schon gar nicht 0,998, 0,999, 0,111, 0,101 sein.

Diese Informationen sind mir bereits bekannt. In meinem Broker ist min lot 0.01, step 0.01. Ich änderte es auf 0.1 und 1 lot für Gewissen Willen, nichts kommt heraus, der Fehler ist in etwas anderes.
 

Übrigens habe ich nicht vor, diesen Expert Advisor zu benutzen, ich lerne gerade die Programmiersprache. Ich habe sogar aus Spaß beschlossen, zu sehen, wie es auf dem Testgerät funktioniert. Ich habe gerade gelesen, dass der Zufallszahlengenerator keine solchen Zufallszahlen ausgibt, da er sich selbst wiederholt. Das Problem scheint nicht in der falschen Schreibweise der Zahl zu liegen, sondern im Algorithmus, wo genau liegt das Problem?

 
T-G:
Hilfe bei einem Problem.
Die Frage ist folgende: Ich habe eine Eulenschwalbe, die nach einer bestimmten Anzahl von Punkten in die Knie geht, aber mit einem neuen Majik. Es stellt sich heraus, dass das Signal öffnet ein oder drei Aufträge mit Majic = 1, dann minus das nächste Knie auf ein Signal2 öffnen ein oder drei Aufträge mit einem Majic 2 und so weiter.
So geht jedes Knie auf 1-3 Bestellungen mit seiner eigenen Majic.

Die Frage ist nun, wie man in einer Schleife die Reihenfolge der einzelnen Majics berechnen kann, ich habe es zum Beispiel so versucht

Wie wäre es damit:

int Count() {
   int i, Сounts[100];
   
   for (i=0; i<OrdersTotal(); i++) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderMagicNumber()>Magic+100)   continue;
         if (OrderType()>1)                  continue;
         Сounts[OrderMagicNumber()]++;
         }
      }//for 
   Comment(10, Сounts[0] +"="+ Сounts[1] +"="+ Сounts[2]);
}

Ich habe es nicht überprüft, ich habe es auf mein Knie gelegt...

 
artmedia70:

Wie wäre es damit:

Ich habe es nicht überprüft, nur auf meinen Knien skizziert...

Es hat nicht funktioniert, aber Sie haben mir die richtige Antwort gegeben, ich bin bereit, danke.
 
Falls jemand etwas weiß, bitte ich um Rat: Ich benötige ein Skript in einer Schleife, das die Schaltfläche "Aktualisieren" einmal alle 0,5 Sekunden "drückt". "Ich habe versucht, mit WindowRedraw() ein Skript mit Schleife zu erstellen. Ich habe versucht, mit WindowRedraw() und Sleep(500) ein Skript mit Schleifen zu erstellen, aber die Indikatoren werden nicht reinitialisiert.