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

 
eugggy:
bar ist die Verschiebung des aktuellen Taktes im Verhältnis zu der in den externen Einstellungen (Start_Point) festgelegten Zeit.

bar = ?? zum Zeitpunkt des Löschens was?
 
ask: Müssen Sie unhöflich sein?

Jetzt werden Sie unverschämt: Es gibt immer noch keine Problemstellung, und was Sie gekritzelt haben, ist nichts, nicht einmal Pseudocode.

Und Sie glauben, ich hätte Sie fälschlicherweise zu den Telepathen geschickt?

 
sergeev:

bar = ?? im Moment des Löschens was?
Hoffentlich auf den vorherigen Wert. D.h. wenn ich das Dokument nach Ablauf der Frist nicht mehr benötige, muss ich es löschen.
 
eugggy:
Ich hoffe, dass sein früherer Wert

Nun, ich hoffe, es klappt.

 
sergeev:

Nun, man kann nur hoffen, dass es funktioniert.



:-) Können Sie nicht einfach auf den Fehler hinweisen?
 
eugggy:
:-) Können Sie nicht einfach auf den Fehler hinweisen?

:) aber um die Frage zu beantworten, was bar=??, können Sie das nicht tun?
 
sergeev:

:) aber Sie können die Frage, was bar=?? nicht beantworten, können Sie das tun?
Nun, das Thema ist für Neulinge, und wenn ich sicher wäre, was der Balken im Moment des Löschens ist, dann würde der EA vielleicht funktionieren. Ich denke schon: Wenn das Dokument geschlossen wird, d.h. ein neuer Balken erscheint, erhöht die Variable bar ihren Wert um 1. In die Löschfunktion gebe ich bar-1 ein, d.h. die Nummer des bereits geschlossenen Dokuments, und wenn der vorherige Balken nicht den angegebenen Kriterien entspricht, wird das Dokument gelöscht, dessen Wert die Nummer = der aktuelle Wert der Variablen bar minus 1 ist. Könnte der Fehler darauf zurückzuführen sein, dass ich ein bereits gelöschtes Dokument lösche?
 

Niemand hat den Fehler bemerkt, also noch einmal.

Können Sie mir den Fehler im Code nennen? Danke.

//+------------------------------------------------------------------+
//| line.mq4 |
//| |
||
//+------------------------------------------------------------------+
//--- Eingabeparameter
extern bool sell = 1; // Erlaubnis zum Verkauf
extern bool buy = 1;
extern double lots = 0.1;
extern int sl = 50;
extern int tp = 150;

extern int order = 10; //

extern double bez = 15;
extern double tral_step = 15;
extern double tral_start = 10;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
return(0);
}
//+------------------------------------------------------------------+
//| Experten-Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
string sell_stop ="ss"; //benennen Sie die Linie manuell
string buy_stop ="bs";

//buy------------------------------------------------------------------------------------------------

// finden Sie die Linie und geben Sie eine Order auf, wenn der Preis
berührt if (ObjectFind (buy_stop) > 0 ) // wenn es eine Linie gibt buy_stop
if ( ObjectGet (buy_stop, OBJPROP_PRICE1=Ask )// touch the line
{
OrderSend (Symbol(),OP_BUYSTOP, lots, Ask+Point*order,3, Bid-sl*Point, Bid+tp*Point );// send order
ObjectDelete (buy_stop); // line is removed
}


return(0);
}
//+-------------------------

 
TESKATLIPOKA:

Keiner hat den Fehler bemerkt, also noch einmal.

Können Sie mir den Fehler im Code nennen? Danke.


Hier sind sie (es gibt viel mehr Fehler in Ihrem Code, aber diese werden es nicht einmal durch den Compiler schaffen):

.
if ( ObjectGet (buy_stop, OBJPROP_PRICE1=Ask )// касание линии
Und selbst wenn Sie den Code in etwas ändern, das aus der Sicht des Compilers vernünftiger ist:

if ( ObjectGet (buy_stop, OBJPROP_PRICE1) == Ask )// касание линии

Wenn Sie den Fehler nicht kennen, ist er ohne vorherige Normalisierung der realen Werte vor dem Vergleich theoretisch immer noch falsch. Schlimmer noch, die Normalisierung kann fehlschlagen, wenn sich der Preis innerhalb eines Ticks um mehr als einen Pip ändert und Ihre Bedingung durchrutscht.

Richtiger ist es, die Kreuzungsbedingung auf folgende Weise zu ermitteln:

if (ObjectGet (buy_stop, OBJPROP_PRICE1) <= High[0]) && (ObjectGet (buy_stop, OBJPROP_PRICE1) >= Low[0]))//  на текущей свече касание линии уже имело место


P.S. Im MetaTrader ist es recht einfach, die Fehlerstelle nach der Kompilierung zu finden:

1. Geben Sie auf der Registerkarte "Werkzeugkasten" im Feld "Datei" die Zeilennummer und die Nummer des Symbols an, in dem der Compiler einen Fehler entdeckt hat, getrennt durch Kommata.

2. Wenn Sie auf die Fehlermeldung in der Spalte "Beschreibung" auf derselben Registerkarte doppelklicken, springt der Cursor im Editor an die Stelle, an der der Compiler den Fehler entdeckt hat.

 
eugggy:
Nun, das Thema ist für Neulinge, und wenn ich sicher wäre, was der Balken zum Zeitpunkt der Löschung war, würde der EA vielleicht funktionieren.
Fragen Sie mich also, wie Sie herausfinden können, wie hoch die Messlatte ist.