Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 77

 
Sepulca:

Trolling Sie)))) Sie haben eine charismatische Persönlichkeit))))
Danke für das Kompliment, ich würde gerne wissen, woher das alles kommt.
 
bistreevseh:
Ich denke, dies ist der Teil des Codes, der das Problem verursachen kann, vielen Dank im Voraus.


Nur aus dem Stegreif

Wenn Work=FALSE ist, funktioniert der EA nicht.

Der EA funktioniert nicht, wenn es mindestens eine ausstehende Order gibt, es gibt keine Überprüfung bei MAGIC.

Bekommen Sie Antworten?

 
MisterD:

Es funktioniert nicht, weil die Variablen, die Sie auf globaler Ebene, d.h. vor der Start-Funktion , festlegen wollen... Zum Beispiel diese und so weiter.... " FiksiruemUp = True; // fix " und "iksiruemUp = False; // reset"
Wenn Sie nicht zwischen den Zeitrahmenwechseln , sollte es funktionieren...


Das habe ich mit den Variablen getan, ich habe sie auf die globale Ebene gesetzt.

wenn Sie den folgenden Punkt berücksichtigen:

Wenn der Kurs über der oberen Linie liegt, wird FiksiruemUp der Wert Wahr zugewiesen. Wenn der Kurs unter die obere Linie fällt und immer noch über der mittleren Linie liegt, was wird FiksiruemUp zugewiesen: Wahr oder Falsch?

Mir scheint, dass in dieser Situation automatisch False zugewiesen wird, da False in den globalen Variablen zugewiesen wurde, während True nur zugewiesen wird, wenn der Preis über der oberen Linie liegt.

 
Globale Variablen sind vom Typ double und nur von double. Dies sollten Sie bedenken, wenn Sie ein bool in globale Variablen einfügen.
 
Sepulca:


Auf Anhieb

Wenn Work=FALSE, wird der EA nicht funktionieren.

Der EA funktioniert nicht, wenn es mindestens eine ausstehende Order gibt, es gibt keine Prüfung für MAGIC.

Gibt sie Ihnen irgendwelche Signale?


Der Advisor funktioniert, d.h. er öffnet Aufträge, gibt Warnungen über die Eröffnung und das Auslösen von tp oder sl, er setzt auch keine Pendants
 
Sepulca:
Globale Variablen sind vom Typ double und nur von double. Dies sollten Sie bedenken, wenn Sie ein bool in globale Variablen einfügen.

und doch, wie sollte es sein?
 
Sepulca:
Globale Variablen sind vom Typ double und nur von double. Dies sollten Sie bedenken, wenn Sie ein bool in globale Variablen einfügen.

wir sprechen hier nicht von GlobalVariables, sondern von Variablen auf globaler Ebene.... Lesen Sie diesen Punkt noch einmal, es gibt einen Unterschied....
 
belck:


Das habe ich mit den Variablen getan, ich habe sie auf die globale Ebene gesetzt.

wenn Sie den folgenden Punkt berücksichtigen:

Wenn der Kurs über der oberen Linie liegt, wird FiksiruemUp der Wert True zugewiesen. Wenn der Kurs unter die obere Linie fällt und immer noch über der mittleren Linie liegt, was wird FiksiruemUp zugewiesen: True oder False?

Mir scheint, dass in dieser Situation automatisch False zugewiesen wird, weil in den globalen Variablen False zugewiesen wurde, während True nur zugewiesen wird, wenn der Preis über der oberen Linie liegt.


Wenn auf globaler Ebene nichts angegeben ist, lautet der Wert zunächst False..... Nachdem die Variable auf Wahr gesetzt wurde , hat sie diesen Wert bis zur folgenden Bedingung if (Ask < LineS) FiksiruemUp = False; // reset.... Wenn die Bedingung erfüllt ist, wird der Variable der neue Wert False zugewiesen und bleibt so bis zu dem Moment - "wenn der Preis über der oberen Linie liegt, wird FiksiruemUp True zugewiesen" und so weiter... Ich hoffe, ich habe es deutlich erklärt... :)
 
MisterD:

Wenn auf globaler Ebene nichts angegeben ist, lautet der Wert zunächst False..... Nachdem die Variable auf Wahr gesetzt wurde , hat sie diesen Wert bis zur folgenden Bedingung if (Ask < LineS) FiksiruemUp = False; // reset.... Wenn die Bedingung erfüllt ist, wird der Variable der neue Wert False zugewiesen und bleibt so bis zu dem Moment - "wenn der Preis über der oberen Linie liegt, wird FiksiruemUp True zugewiesen" und so weiter... Ich hoffe, ich habe es deutlich erklärt... :)

Ich verstehe jetzt. Vielen Dank.
 

Freunde, helft mir. Ich muss alle Aufträge für ein ausgewähltes Währungspaar schließen. Hier ist, was ich geschrieben habe (Teil des EA-Codes):

int Zakrit_vse()

{

Gesamt=BestellungenSumme();

int Vsego;

for(int i=1; i<=OrdersTotal(); i++) // Schleife durch Aufträge, alle abschließen

{

if (OrderSelect(i-1,SELECT_BY_POS)==true)

{

wenn (OrderSymbol()!=Symb)weiter;

Ticket=OrderTicket();

Lot=OrderLots();

Preis=OrderOpenPrice();

Vsego++;

Tip=OrderType();

Warnung (Tipp);

if(Spitze>1)

{

OrderDelete(Ticket);

Prov_oshibok();

weiter;

}

if(Tip==0)

{

OrderClose( Ticket,Lot, Bid,100);

Prov_oshibok();

weiter;

}

if(Tipp==1)

{

OrderClose( Ticket,Lot, Ask,100);

Prov_oshibok();

weiter;

} //

}

}

Alert(Total," ",Vsego);

int ret=MessageBox("Operation erfolgreich abgeschlossen",

",MB_OK|MB_ICONQUESTION|MB_TOPMOST);

if(ret==IDOK) // wenn die Antwort "ja" ist

{

Print("Alle Aufträge in Höhe von ",Vsego," erfolgreich abgeschlossen;)

}

}

Aber aus irgendeinem Grund wird nur jede zweite Bestellung abgeschlossen. Bei 6 Aufträgen werden 3 geschlossen, bei 8-4 usw.

Was kann das sein? Wo liegt der Fehler, bitte um Rat?