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

 
smartemiy:

Leute!

Wie kann ich jede 40. Bestellung zu einer größeren Partie machen? :: Markt und anhängige Verfahren

Wie wäre es damit?

Nicht genau, Sie sollten die Anzahl der Aufträge in der Historie zählen a = (OrdersHistoryTotal()+ 1) % 40

Nun, dies berücksichtigt nicht, wie viele Aufträge gleichzeitig offen sein können; andernfalls müssten wir die OrdersTotal addieren (wahrscheinlich abzüglich der ausstehenden Aufträge).

 
splxgf:

Nicht genau, wir müssen die Anzahl der Aufträge in der Historie zählen a = (OrdersHistoryTotal()+ 1) % 40

Nun, dies berücksichtigt nicht, wie viele Aufträge gleichzeitig offen sein können; andernfalls müssten wir die OrdersTotal addieren (wahrscheinlich abzüglich der ausstehenden Aufträge).


Und was wäre, wenn es offene Positionen in anderen Symbolen oder anderen Expert Advisors gäbe? Denken Sie darüber nach, was Sie schreiben
 
Figar0:

Zunächst einmal wird Ihre Losberechnungsfunktion innerhalb der Startfunktion deklariert. Nehmen Sie es heraus. Dann wird es einige Fehler mit nicht deklarierten Variablen geben, aber ich denke, Sie können sie selbst behandeln.
Noch eine Frage: In welcher Funktion soll die Losberechnung deklariert werden? init, deinit?
 
skyjet:
Eine weitere Frage, in welcher Funktion sollte ich deklarieren Los Berechnung? init, deinit?

Besser ist es, eine separate Funktion zu erstellen und sie bei Bedarf zu verwenden (bevor eine neue Position eröffnet wird).
 
Kann der Computer durch die Fülle an (nicht optimiertem) Code im EA verlangsamt werden? D.h. wird die Eröffnung von Geschäften und der Prozess der Entscheidungsfindung durch den EA selbst verlangsamt, wenn er einen großen Code hat?
 
Vinin:

Besser ist es, eine separate Funktion zu erstellen und sie bei Bedarf zu verwenden (bevor eine neue Position eröffnet wird).
Victor, auf Ihren Rat hin habe ich die Funktion hinzugefügt. Jetzt lässt es sich nicht mehr kompilieren.
void CheckForOpen()
double Lots()
  {
   double lot;
   lot=(AccountFreeMargin()*AccountLeverage()*Risk)/(MarketInfo(Symbol(), MODE_LOTSIZE));
   lot=NormalizeDouble(lot,1);
   return(lot);
  }
 

Die Geschichte von Teakholz bewahren



Avatar
1
Gangrr 22.09.2011 17:32

Hallo zusammen!

Die Frage ist - gibt es ein Skript zum Speichern der Tick-Historie

...

FileSeek(ExtHandle,0,SEEK_END);

FileWrite(ExtHandle, TimeToStr(TimeCurrent(), TIME_DATE | TIME_SECONDS), Bid, Ask, iVolume(Symbol(), NULL, 0));

...

schreibt es sich so:

...

2011.08.15 08:38:49;76.936;76.946;1389

2011.08.15 08:38:51;76.934;76.953;1390
2011.08.15 08:38:56;76.929;76.958;1391
2011.08.15 08:38:56;76.935;76.945;1392

...

Das heißt, es stellt sich heraus, dass die kleinste Einheit der Zeit eine Sekunde ist. Meine Frage ist also, gibt es eine Möglichkeit, Ticks in Millisekunden zu schreiben?

Ich danke Ihnen im Voraus.

 
1
Gangrr 22.09.2011 17:32

Es stellt sich heraus, dass die kleinste Zeiteinheit eine Sekunde ist. Also Frage - gibt es eine Möglichkeit, Ticks in Millisekunden zu schreiben?


Sehen Sie sich GetTickCount an... oder verweisen Sie auf die Windows-Funktion
 
skyjet:
Victor, auf Ihren Rat hin habe ich die Funktion hinzugefügt. Jetzt lässt es sich nicht mehr kompilieren.

void CheckForOpen()
  {



  }

double Lots()
  {
   double lot;
   lot=(AccountFreeMargin()*AccountLeverage()*Risk)/(MarketInfo(Symbol(), MODE_LOTSIZE));
   lot=NormalizeDouble(lot,1);
   return(lot);
  }
Verschachtelte Funktionen sind nicht erlaubt
 
Vinin:

Verschachtelte Funktionen sind nicht erlaubt
Dies ist keine verschachtelte Funktion, sondern Teil des grundlegenden MACD Sample EA. Ich versuche, eine berechnete Menge hinzuzufügen. Die wichtigste und einzige Funktion start()
Grund der Beschwerde: