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

 
nemo811:
Ich danke Ihnen. Ist das der richtige Weg?

Ja, ich glaube schon.
 
Nein. Summe=0 muss vor der For-Anweisung stehen.
 
6166961669:

Ich bin nicht sicher, wie viel es kosten würde, einen EA zu bestellen, aber ich bin sicher, dass ich ihn in beiden Charts zum Laufen bringen kann.

Ah, und im Allgemeinen ist es möglich, es einmal für 2 verschiedene Währungen funktionieren (gleichzeitig auf zwei Charts) und auf jedem der verschiedenen Trades geöffnet.

Ich habe zum Beispiel am ersten Tag gekauft und am zweiten Tag verkauft?

Und beim Abschluss einer der Transaktionen wird das Gegenteil der bereits geöffneten Transaktion geöffnet....

Und vielleicht weiß jemand, vielleicht gibt es einen solchen Expert Advisor, nur eine gute Idee kam in den Sinn.....


Alles ist machbar. Bitte schreiben Sie mir persönlich. Wir werden einen Deal machen.
 
FOReignEXchange:
Oh nein. Summe=0 sollte vor dem Operator For stehen.

Es funktioniert alles. Ich danke Ihnen. Ich habe dabei einen weiteren Fehler gefunden.

Ich werde noch ein wenig weiterarbeiten, um zu sehen, ob noch etwas anderes auftaucht, und ich werde das Ergebnis in der allgemeinen Datenbank veröffentlichen.

Nochmals vielen Dank für Ihre Hilfe.

 
nemo811:

Es funktioniert alles. Ich danke Ihnen. Ich habe dabei einen weiteren Fehler gefunden.

Ich werde noch ein wenig weiterarbeiten, um zu sehen, ob noch etwas anderes auftaucht, und ich werde das Ergebnis in der allgemeinen Datenbank veröffentlichen.

Nochmals vielen Dank für Ihre Hilfe.


Bitte sehr. Bitte sehr.
 

An: FOReignEXchange

Wenn ich an dieser Stelle in der Ausführung des Programms

extern bool Buy = true;

extern double PriceBuy = 0;

int start()
{
if (Buy)
{OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-50*Point,Ask+50*Point);
PriceBuy = ??????????????????;}

return;
}

Ich werde die Zuordnung" PriceBuy = ??????????????????;" - "PriceBuy = Ask;" angeben.

Kann ich sicher sein, dass beim Fortschreiten des Programms (d.h. beim Öffnen eines neuen Auftrags mit den angegebenen Bedingungen)

"PriceBuy wird den gleichen Wert haben?

 
OTPOK:

An: FOReignEXchange

Wenn ich an dieser Stelle in der Ausführung des Programms

extern bool Buy = true;

extern double PriceBuy = 0;

int start()
{
if (Buy)
{OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-50*Point,Ask+50*Point);
PriceBuy = ??????????????????;}

return;
}

Ich werde die Zuordnung" PriceBuy = ??????????????????;" - "PriceBuy = Ask;" angeben.

Kann ich sicher sein, dass beim Fortschreiten des Programms (d.h. beim Öffnen eines neuen Auftrags mit den angegebenen Bedingungen)

"PriceBuy wird den gleichen Wert haben?


Wie kann extern double PriceBuy = 0 ? In den globalen Variablen werden nur die Konstanten angegeben. Wenn sie dort ganz entfernt wird, lautet die Antwort wie folgt:

Wenn der Variablen PriceBuy keine anderen Werte zugewiesen werden, gilt der Wert PriceBuy = Ask; solange, bis die Berechnungen wieder die neue Auftragseröffnung erreichen. Dort angekommen, wird der Variable der neue Wert PriceBuy = Ask zugewiesen; er entspricht dem Ask-Preis zum Zeitpunkt der Eröffnung der neuen Order.

Was ist das Problem? Das ist klar.

 
FOReignEXchange:


Wie ist es extern double PriceBuy = 0 ? In globalen Variablen werden nur konstante Zahlen angegeben.

Bitte verwirren Sie unsere Anfänger nicht.

Erstens: Die Variable PriceBuy ist in diesem Fall eine externe Variable. Und eine externe Variable ist per Definition global!

Zweitens: Sie können einer externen Variablen im Code des EA einen beliebigen Wert zuweisen, aber dann verliert sie ihre Bedeutung (eine externe Variable zu sein). Und die globalen Variablen werden genau dazu verwendet, ihre Werte innerhalb des gesamten Codes (des Geltungsbereichs - des gesamten Programms) zu speichern und zu ändern. Lesen Sie mehr.

Drittens: Wenn in der OrderSend-Handelsfunktion ein Slippage vorliegt und wir einen Kaufauftrag eröffnen wollen, wird der Auftrag nicht unbedingt zum Briefkurs eröffnet, da die Ausführung eines von der OrderSend-Funktion erteilten Handelsauftrags einige Zeit in Anspruch nimmt und sich der Kurs von diesem Wert entfernen kann.

Der auf der vorherigen Seite gezeigte Code ist korrekter:

abolk:
extern bool Buy = true;
extern double PriceBuy = 0; 
int start() 
{
   if(Buy) 
   {
     int ticket=OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Bid-50*Point,Ask+50*Point);
     if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
        PriceBuy=OrderOpenPrice();
   }
   return(0); 
}
 
MaxZ:

Daher ist der korrektere Code der bereits auf der vorherigen Seite zitierte, ich zitiere:


"Es ist so, wie du es magst. Die Handschrift ist bei jedem Menschen anders. Vielleicht ist Ihre Handschrift korrekt, aber für mich sieht sie unordentlich aus.

So würde ich es nicht machen.

Zunächst einmal bin ich mir nicht ganz sicher, warum ich dort eine Variable deklarieren sollte, und was der Sinn davon ist, verstehe ich auch nicht.

Zweitens befindet sich die Zeile PriceBuy = Ask; direkt nach der Funktion OrderSend. Und soweit ich das verstanden habe, werden die Berechnungen sofort an die nächste Zeile weitergegeben, sobald diese Funktion ihre Ausführung beendet hat. Ich glaube nicht, dass sich der Ask-Preis ändern kann. Ich versuche, alles so einfach wie möglich zu schreiben und die Anzahl der Zeichen zu reduzieren, wenn es den normalen Programmablauf nicht beeinträchtigt. Ich kann einen Wert auf dieselbe Weise zuweisen wie Sie, ich sehe hier kein Problem. Ich schrieb das Erste und Einfachste, was mir einfiel.

 
Richtig, richtig. Ich habe die Variable falsch benannt. Das muss ich Ihnen lassen. Ihre Theorie ist gut. Aber Ihre Logik ist es nicht.
Grund der Beschwerde: