[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 234

 
sergeev:

Ich habe es versucht. Es ist nicht eingefroren.


gab Fehler 129 bei OrderClose.

Stellen Sie RefreshRates davor.

Ohne Fehler geschlossen


Ja, ich habe das Gleiche getan, aber manchmal funktioniert es einfach nicht mehr (und nicht das Terminal selbst, sondern der EA)

 
doon:
Können Sie bitte erklären, warum dieser Code manchmal an einer Stelle einfriert und man das Terminal neu starten muss, um ihn fortzusetzen?


Sie wurden ganz direkt gefragt: Bei welcher Linie friert es ein?

Ihr Code öffnet und schließt sofort dieselbe Bestellung und ist sehr gut dokumentiert, so dass es in Alerts sofort sichtbar sein sollte, welche Zeile der Code erreicht hat. Oder ist es nur ein Teil des Codes?

 
Roger:


Sie wurden ganz direkt gefragt: Auf welcher Linie friert es ein?

Ihr Code öffnet und schließt sofort denselben Auftrag und ist sehr gut dokumentiert, so dass Sie in der Lage sein sollten, im Alert sofort zu sehen, welche Zeile der Code erreicht hat. Oder ist es nur ein Teil des Codes?


Nein, das ist alles Code. Und er hält an den Zeilen der Auftragseröffnung und -schließung an (aber nicht immer).

 
Ersetzen Sie Ask und Bid im Code durch MarketInfo(Symbol(),MODE_ASK) und MarketInfo(Symbol(),MODE_BID), das sollte funktionieren
 

Hiervon:

OrderSend(Symbol (), OP_BUY, 1, Ask, 10,0,0, "dsgdsf", 0, 0, CLR_NONE);

Zu diesem Thema:

OrderSend(Symbol (), OP_BUY, 1, MarketInfo(Symbol(),MODE_ASK), 10,0,0, "dsgdsf", 0, 0, CLR_NONE);
?
 

Nein, es wird immer noch aufgehängt.

Nach 4 Minuten des Hängens stellte sich heraus, dass es sich um den Fehler 128(Transaktionswartezeit ist abgelaufen) handelte.

Vielleicht hilft das?

 

Liebe Kollegen, ich bin noch ein kompletter "Dummy"in der MQL-Programmierung, ich habe erst vor kurzem angefangen, mich mit diesem Thema zu beschäftigen. Aber ich habe bereits begonnen, meinen ersten EA zu schreiben, oder ich habe es zumindest versucht.

Auf der 182. Seite dieses Themas habe ich die Handelskriterien dargelegt, nach denen dieser EA handeln sollte. Bitte lesen Sie, was dort steht (letzter Beitrag auf dieser Seite). Ich habe mich drei Wochen lang abgemüht und kann hier immer noch nicht den Teil des Codes schreiben, der für die Handelskriterien zuständig ist. Ich habedas Kapitel des Tutorials zu diesem Thema gelesen, aber es hat mir in diesem speziellen Fall nicht geholfen.

Ich habe während meiner Programmierkämpfe Dutzende von Varianten dieses Teils des Codes geschrieben, aber keine davon funktioniert richtig. Offensichtlich habe ich nicht genug Wissen, ichkannMQL nichtso schnell beherrschen. Wie auch immer, hier ist eine der Codevarianten, die zumindest annähernd so funktioniert, wie ich es möchte.

//+-------------------------------------------------------------------------------------+
//| Расчет значений технических индикаторов с формированием сигналов для позиций        |
//+-------------------------------------------------------------------------------------+
void GetSignal()
{
 Signal = 0;
// - 1 - == Получение значений индикаторов ==============================================
 double SAR = iSAR(Symbol(), 0, SARStep, SARMaximum, 0);
 double EnvUp = iEnvelopes(Symbol(), 0, EnvPeriod, EnvMethod, EnvShift, EnvPrice,
 EnvDeviation, MODE_UPPER, 1);
 double EnvDn = iEnvelopes(Symbol(), 0, EnvPeriod, EnvMethod, EnvShift, EnvPrice,
 EnvDeviation, MODE_LOWER, 1);
 double StochM = iStochastic(Symbol(), 0, StochK, StochD, StochSlowing, StochMethod,
 StochPrice, MODE_MAIN, 1);
 double StochS = iStochastic(Symbol(), 0, StochK, StochD, StochSlowing, StochMethod,
 StochPrice, MODE_SIGNAL, 1);
// - 1 - == Окончание блока =============================================================

// - 2 - == Генерация сигнала ===========================================================
 if (SAR < Low[1])
   {
    Signal = 3;                                                          // Закрытие SELL
    if (StochM > StochS && StochM >= 80 && StochS >= 80 && High[1] >= EnvUp && SAR < Open[1])
      Signal = 1;                                                         // Открытие BUY
   }   
 
 if (SAR > High[1])
   {
    Signal = 4;                                                           // Закрытие BUY
    if (StochM < StochS && StochM <= 20 && StochS <= 20 && Low[1] <= EnvDn && SAR > Open[1])
      Signal = 2;                                                        // Открытие SELL
   }   
// - 2 - == Окончание блока =============================================================
}


Ich weiß, dass der Code krumm und schief ist, und im Allgemeinen sinddie Buchtenpositionen und sell durcheinander. Dies ist jedoch die einzige Variante des Codes, bei der Stochastic und Envelope zusammen handeln, ohne sich gegenseitig zu ignorieren. Gleichzeitig werden parabolische Signale aus irgendeinem Grund beim Handel nicht beachtet. Wie auch immer, bitte schimpfen Sie nicht zu sehr über diesen "Arschtritt", ich bin mir durchaus bewusst, dass der Code nicht korrekt ist.

Bitte helfen Sie mir, bitte korrigieren Sie den Code meines Expert Advisors. Es fällt mir schwer, damit umzugehen. Ich habe einfachere Strategien implementiert (Mooving + Momentum; Mooving +RSI), aber ich kann es nicht mit dieser tun. Bitte um Hilfe. Bitte schreiben Sie alle falschen Zeilen um, damit mein EA nach diesen Regeln handelt, die ichauf Seite 182 beschrieben habe. Ich brauche es wirklich.

P.S.: Ich kann nicht den gesamten Code schreiben, weil ich vorgefertigte MQL-Vorlagen verwendet habe .

 
doon:

Nein, es wird immer noch aufgehängt.

Nach 4 Minuten des Hängens stellte sich heraus, dass es sich um den Fehler 128(Transaktionswartezeit ist abgelaufen) handelte.

Vielleicht hilft das?


Verdammt, ändern Sie das Handelszentrum schon - es ist klar, ohne irgendwelche Hinweise, dass, wenn Handelsaufträge auf dem gleichen Code dann normal passieren und dann hängt, bedeutet es, dass der Server stirbt. Die Bestellung ging raus und kam erst nach 4 Minuten zurück. Werden Sie wirklich echte Geschäfte auf diesem Server abwickeln? Trauen Sie sich und wechseln Sie ein paar Mal die Maklerfirma. Hat dir jemand beigebracht, wie man einen Computer benutzt? Es ist keine Schreibmaschine oder eine Spielkonsole - es erfordert Wissen. Es handelt sich um eine Studie und eine sorgfältige Arbeit. Wenn Sie ein grundlegendes Verständnis der Befehlszeile, des Öffnens von Dateien und zumindest ein grundlegendes Verständnis der Funktionsweise eines Computernetzwerks hätten, würden Sie andere Fragen stellen und wären froh, wenn Sie Hilfe bekämen. Jetzt brauchen Sie nur noch den Server Ihres Maklerunternehmens anzupingen und die Antwortzeit mit der Antwortzeit anderer Maklerunternehmen zu vergleichen. Wenn Sie sich etwa 30 Minuten Zeit nehmen würden, würden Sie verstehen, was was ist. Wenn Sie versucht hätten, die Interaktion zwischen dem Expert Advisor und dem Server zu skizzieren, könnten wir mit MQL4 sogar abschätzen, wie schnell der Server Ihres Maklerunternehmens Handelsaufträge ausführt.

Es gibt keine Worte. Wie können Sie so achtlos mit dem Prozess Ihrer eigenen Arbeit umgehen?

 

daytrader19:

Bitte schreiben Sie die falschen Zeilen so um, dass der EA nach den Regeln handelt, die ichauf Seite 182 beschrieben habe.

Anmerkung.

1) Die Bedingung "Linie1[1]>Linie2[1]" reicht für das Signal "zwei Linien kreuzen sich" nicht aus. Надо "линия1[1]>линия2[1]&&линия1[2]<линия2[2]"

2) Die Parabel sollte nicht mit Open, sondern mit High und Low verglichen werden, und beachten Sie, dass Sie sie auf dem Null-Bar berechnen und Open[1] vom ersten Bar nehmen.

 
doon:

Nein, es wird immer noch aufgehängt.

Nach 4 Minuten des Hängens stellte sich heraus, dass es sich um den Fehler 128(Transaktionswartezeit ist abgelaufen) handelte.

Vielleicht hilft das?


Das kann auch bei schlechtem Internet passieren, z. B. wenn man einen Torrent zu viel herunterlädt. Aber das können Sie erst am Montag überprüfen.
Grund der Beschwerde: