[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 78

 
goldtrader >> :

Die Bedingung unter der 1. bedingten if-Anweisung gilt nur für die nächste Anweisung danach (die nächste Zeile).

Die anderen werden ausgeführt, WENN nicht. Das heißt, auch wenn es keinen Befehl zum Schließen eines Auftrags gibt, funktioniert einer der Spieltöne.

Der richtige Weg ist der folgende:

Die Sache ist die, dass beide Playsounds funktionieren - PlaySound("timeout.wav") funktioniert, danach PlaySound("money.wav"), das Geschäft schließt normal, aber vor dem Schließen gibt es einen Playsound-Fehler und diese Sache funktioniert nur für kurze Geschäfte, für lange Geschäfte ist alles normal - PlaySound("money.wav"), wenn geschlossen und PlaySound("timeout.wav"), wenn Fehler, gleiches Design für Long- und Short-Trades. Ich werde versuchen, die Klammern so zu setzen, wie Sie es beschrieben haben, ich weiß nicht, ob es in ihnen steht))


 
Dimoncheg >> :

... >> Ich werde Klammern ausprobieren, wie du es beschrieben hast, ich weiß nicht, ob es das ist).

Es ist schwer, mit diesem Ansatz ein positives Ergebnis zu erzielen.

 
goldtrader >> :

Mit einem solchen Ansatz ist es schwierig, ein positives Ergebnis zu erzielen.

Ich bin zutiefst davon überzeugt, dass das Ergebnis nicht von der Art und Weise abhängt, wie der Text im Forum präsentiert wird)) Zumindest zähle ich mich nicht zur Intelligenz, aber das ist Quatsch, ganz abgesehen vom Thema)).

Ich habe Klammern für das Senden von Aufträgen gemacht, das Gleiche, erst ein Fehlersound, dann ein Schließsound. Bei langen Strecken ist alles wie vorher. Also alles funktioniert natürlich, nur vor kurzem eine Funktion eingefügt, um zu sehen, welche Art von Fehlern, das ist, warum dieser Ton erschien vor dem Schließen Ton, und vor, dass ich nicht bemerkt, natürlich - alles funktioniert

 

OK, nur als Hinweis. Der Befehl PlaySound() wartet nicht darauf, dass der vorherige Sound beendet wird, sondern unterbricht einfach und startet seinen eigenen Sound. In einer schnellen Schleife können Zwischengeräusche absorbiert werden.

 
Roger >> :

OK, nur als Hinweis. Der Befehl PlaySound() wartet nicht darauf, dass der vorherige Sound beendet wird, sondern unterbricht einfach und startet seinen eigenen Sound. In einer schnellen Schleife können Zwischengeräusche absorbiert werden.

Wenn es nur in den Ton, der Fehler "Kein Fehler" poppt in das Protokoll für jede Schließung von kurzen Trades, 3 Trades geschlossen sind - 3 Fehler, etc., aber nach, dass alle geschlossen ist und das Protokoll ist vorgeschrieben Schließung, für lange Trades, alles ist normal und die Töne funktionieren wie beabsichtigt, und der Fehler ist nicht vorgeschrieben, habe ich einen Schlupf für 3 Sekunden und 5 Sekunden, alle die gleichen, nur mit der entsprechenden Verzögerung

 
Können Sie mir einen Tipp geben? Es gibt eine Variable, die für jeden Balken einzeln berechnet werden sollte, z. B. [i+1]=0.9, [i+2]=0.8, [i+3]=1,5........, aber bei mir wird für alle Balken in der Historie der zuletzt berechnete Wert verwendet........., wenn die letzte 1, dann [i+1]=1, [i+2]=1, [i+3]=1 und wenn die letzte 2, dann [i+1]=2, [i+2]=2, [i+3]=2.....
 
Dimoncheg писал(а) >>

Wenn nur in der Ton war die Angelegenheit, der Fehler "Kein Fehler" erscheint in der Log bei jeder schließen kurze Trades, 3 Trades geschlossen sind - 3 Fehler, usw., aber nach, dass alle geschlossen ist und das Protokoll vorgeschrieben Schließung, für lange Trades sind in Ordnung, und der Ton funktioniert wie beabsichtigt, und der Fehler ist nicht vorgeschrieben, fügte einen Schlupf für 3 Sekunden und 5 Sekunden, alles das gleiche, aber mit der entsprechenden Verzögerung

Wissen Sie, ich hatte ein ähnliches Problem, ich habe mich abgemüht, ich habe es hinausgezögert, keine Fortschritte. Dann habe ich überprüft, ob die Bestellung durch

if(OrderCloseTime()!=0)

Alle meine Probleme verschwanden auf einmal. Versuchen Sie es.

 
RocketTrend писал(а) >>
Können Sie mir bitte einen Tipp geben. Es gibt eine Variable, die für jeden Balken einzeln berechnet werden sollte, z.B. [i+1]=0.9, [i+2]=0.8, [i+3]=1,5........, aber was ich habe, ist, dass der zuletzt berechnete Wert auf alle Balken in der Historie angewandt wird........., wenn der letzte Wert 1 ist, dann [i+1]=1, [i+2]=1, [i+3]=1 und wenn der letzte Wert 2 ist, dann [i+1]=2, [i+2]=2, [i+3]=2.....

Es ist so schwer zu sagen, poste das Stück Code vollständig.

 
Reshetov >> :

Wenn Sie debuggen müssen, verwenden Sie Print()

Aber in den meisten Fällen brauchen Sie das nicht.


Nun, ich bin da anderer Meinung. Ich schreibe gerade einen Expert Advisor, und ohne einen richtigen Debugger habe ich eine Menge Probleme. Vor allem bei Datenarrays.

Um sicher zu sein, dass der Algorithmus richtig funktioniert, muss ich die Daten analysieren, die ich bei der Berechnung der Indikatoren erhalte. Und es gibt nicht nur eine Reihe.

Gibt es neben Print(), Comment() und Alert() kein anderes Werkzeug?

 
Reshetov >> :


Was zum Teufel ist das? Wofür ist OrderSelect()?


Ansonsten ist es schwer zu verstehen, weil der Code ohne Einrückung steht und man den Klammern nicht folgen kann - ich will mir ja nicht das Augenlicht ruinieren.

Okay, lassen wir den Quatsch und verderben wir uns nicht das Augenlicht.

/---- Eingabeparameter
extern int PerRSI=8;
extern int MagicNamber=77771;
extern double Lots=1.0;
//+------------------------------------------------------------------+
int start()
{
int
Typ, // Auftragsart
cnt, // Bestellindex
ticket, // Identifikationsnummer der Bestellung
total; // Anzahl der bereits offenen Aufträge
doppelt
rsi_0, // Wert. rsi_0 aktuell
rsi_1; // Wert. rsi_1 1. Balken

rsi_0=iRSI (NULL, 0, PerRSI, 0, 0); // Aktueller Balken
rsi_1=iRSI (NULL, 0, und PerRSI,0, 1); // Aktueller Balken plus 1

if(rsi_0 < rsi_1 && rsi_1 < 30) // wenn Linie 30 überschritten hat

ticket=OrderSend (Symbol(), OP_BUY,Lots, Ask, 3, 0, 0, "My RSI", MagicNamber, 0, Green);

OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES);


if(rsi_0 > rsi_1 && rsi_1 > 60) // wenn die Linie 70 überschritten hat

OrderClose(ticket, OrderLots(), Bid, 3, Violet ); // Position schließen

return(0); // exit

}

warum die Schaufel kauft und nicht schließt, keine Fehler beim Übertragen