[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 10
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Können Sie uns mitteilen, ob es möglich ist, die Möglichkeit des Setzens eines Stop-Loss/Stake-Profits sofort bei der Eröffnung einer Position/eines schwebenden Auftrags oder danach programmatisch zu bestimmen?
Überprüfen Sie die Stopp- und Gewinnniveaus im Voraus.
Die in der Funktion MarketInfo() verwendeten Antragskennungen. Kann einer der folgenden Werte sein:
Ich bin gerade lernen, wie man einen EA zu schreiben, wie viele meiner ersten EAs auf Standard-Indikatoren, habe ich gerade einen neuen geschrieben, aber jetzt habe ich meine Aufgabe kompliziert. Im Allgemeinen, wie zu machen, dass in der Entstehung der Bedingungen eröffnet eine Position und bei ihrer Schließung, sagen wir, für die gleichen Bedingungen zu nehmen, eine neue nicht geöffnet, und öffnete nur, wenn die entgegengesetzten Bedingungen, usw. Danke!!!
In der Hilfe gibt es ein vorgefertigtes Beispiel
Prüfen Sie vorab die Höhe der Stopp- und Gewinnsätze.
Für bestimmte Kontotypen gibt es in dieser Liste kein Häkchen. Hier ist ein Absatz aus den Vorschriften für Handelsgeschäfte für NDD-Konten:
3.3 Wenn eine Position über das Kundenterminal unter Verwendung eines Expert Advisors eröffnet wird, kann der Kunde keine Stop-Loss- und/oder Take-Profit-Aufträge erteilen. Wenn der Kunde diese Aufträge erteilen möchte, kann er dies durch Änderung einer bestehenden Position gemäß den Ziffern 5.16 - 5.22 und 9.13 - 9.16 tun.
Ich bin daran interessiert, ob dies programmatisch überprüft werden kann. So wie ich es verstehe, nein. Ursprünglich müssen Sie in ein Programm eine Funktion zum Eröffnen von Positionen / Setzen von Pending Orders schreiben, die die vom Broker festgelegten Bedingungen berücksichtigt.Für bestimmte Kontotypen gibt es in dieser Liste kein Häkchen. Hier ist ein Absatz aus den Vorschriften für Handelsgeschäfte für NDD-Konten:
Ich verstehe die Regeln für die Einstellung von Aufträgen nicht wirklich, versuchen Sie, mit der Demo zu spielen und zu sehen, was Sie tun können und was nicht. Soweit ich weiß, hindert Sie nichts daran, einen Auftrag programmgesteuert festzulegen und ihn dann zu ändern. Richtig, es ist seltsam, es sei denn, Sie unterbrechen die Verbindung, nachdem Sie eine Position eröffnet haben, und lassen keinen Stopp stehen.
Ich bin daran interessiert, ob dies programmatisch überprüft werden kann. Soweit ich weiß, nein. Sie müssen zunächst eine Funktion in das Programm schreiben, um Positionen zu eröffnen/ausstehende Aufträge zu setzen, wobei die vom Broker festgelegten Bedingungen berücksichtigt werden.Für bestimmte Kontotypen gibt es in dieser Liste kein Häkchen. Hier ist ein Absatz aus den Vorschriften für Handelsgeschäfte für NDD-Konten:
Es gibt überhaupt kein Problem. Selbst (wenn nicht für den persönlichen Gebrauch, weil Sie wissen, auf welchen Konten (Handelsbedingungen und mit wem), um es zu benutzen), aber wenn Sie den EA, um zu senden und der Kunde hat noch nicht entschieden, auf welche Konten und wo es verwendet werden, auch auf Konto-Typen mit der Möglichkeit, ein Take und Stop sofort, dann standardmäßig produzieren die EA mit Null-Werte dieser Ebenen bei der Einstellung aller Arten von Aufträgen, dann mit ihrer Änderung (wird dort und dort zu arbeiten), während, natürlich, niemand hat die Kontrolle Anforderungen und Einschränkungen bei p abgebrochen .
Ich verstehe nicht ganz die Regeln für die Einstellung von Aufträgen, versuchen Sie, mit der Demo zu spielen, was Sie können und was nicht. Soweit ich weiß, hindert Sie nichts daran, einen Auftrag programmgesteuert festzulegen und ihn dann zu ändern. Richtig, es ist seltsam, es sei denn, Sie unterbrechen die Verbindung, nachdem Sie eine Position eröffnet haben, und lassen keinen Stopp stehen.
))) Nein. Sie missverstehen mich völlig. Ich habe nicht von "programmatisch festlegen" geschrieben, sondern von "programmatisch definieren". Bei einigen Kontotypen kann man nicht sofort eine Position eröffnen und Stops setzen, was für mich wünschenswert/ sicher wäre. Bei mql5 scheint es, wenn ich mich nicht irre, möglich zu sein, dies zu bestimmen. Ich möchte dies bestimmen können und je nach Definition wählen, welche Funktion ich verwenden möchte.
Es gibt überhaupt kein Problem. Selbst (wenn nicht für den persönlichen Gebrauch, weil Sie wissen, auf welchen Konten (Handelsbedingungen und mit wem), um es zu benutzen), aber wenn Sie einen EA, um und der Kunde hat noch nicht entschieden, auf welche Konten und wo er es verwenden, auch auf Konto-Typen mit der Möglichkeit, ein Take-und Stop sofort, dann machen Sie immer noch ein EA mit Null-Werte dieser Ebenen standardmäßig bei der Einstellung aller Arten von Aufträgen, dann mit ihrer Änderung (wird dort arbeiten und dort), während, natürlich, niemand storniert die Kontrolle Anforderungen und Einschränkungen bei p
Ja, es gibt kein Problem, wenn es eine Lösung gibt. Man muss nur nutzen, was man hat, und es richtig einsetzen).
Roman. und ivandurak vielen Dank für Ihre Antworten, aber für mich ist es immer noch schwer herauszufinden. Ich fand einen Vorschlag auf einem anderen Forum, wie dies zu tun, aber bisher kann ich es nicht auf meine üblichen Code anwenden
int BuyTrue, SellTrue;// Definieren Sie Variablen, die als diese Flaggen dienen werden
....
//--- Bedingung für den Kauf
if (BuyTrue==0 && ... plus Ihre anderen Bedingungen) //Position öffnen Bedingung
{
....
OrderSend(....); //Funktion zur Eröffnung einer Bestellung
BuyTrue=1; // Wenn BuyTrue=1, wird die Bedingung für die Positionseröffnung nicht vollständig erfüllt
// folglich wird bei einem wiederholten Kaufsignal kein Handel eröffnet
SellTrue=0; // Bei SellTrue=0 wird die Bedingung der Positionseröffnung vollständig erfüllt
// daher wird der nächste Handel nur Verkaufen sein
....
}
//--- Bedingung für den Verkauf
if (SellTrue==0 && ... plus Ihre anderen Bedingungen) //Position öffnen Bedingung
{
....
OrderSend(....); //Funktion zur Eröffnung einer Bestellung
SellTrue=1; // Wenn SellTrue=1 ist, wird die Bedingung für die Auftragseröffnung nicht vollständig erfüllt
// daher wird bei einem zweiten Verkaufssignal keine Position eröffnet
BuyTrue=0; // Bei BuyTrue=0 ist die Bedingung der Positionseröffnung vollständig erfüllt
// Folglich wird der nächste Handel nur Kaufen sein
....
}
Mein Code für die Eröffnung einer Position
total=AuftragsSumme();
if(gesamt<1)
{
// keine offenen Aufträge identifiziert
if(KontoFreieMarge()<(1000*Lose))
{
Print("Wir haben kein Geld. Freie Marge = ", AccountFreeMargin();
zurück(0);
}
// Prüfung auf Long-Position (BUY)
if(MACD1<0 && MACD2<MACD1 && MACD2>MACD3 && MathAbs(MACD1)>(MACDOpenLevel*Point))
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "macd sample",16384,0,Green);
if(Ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Fehler beim Öffnen der BUY-Bestellung: ",GetLastError());
zurück(0);
}
// Prüfung auf Short-Position (SELL)
if(MACD1>0 && MACD2>MACD1 && MACD1>(MACDOpenLevel*Point))
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "macd sample",16384,0,Red);
if(Ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice())
}
else Print("Fehler bei der Eröffnung einer SELL-Order: ",GetLastError());
zurück(0);
}
zurück(0);
}
Roman. und ivandurak vielen Dank für Ihre Antworten, aber dies ist immer noch schwer für mich herauszufinden. Ich fand einen Vorschlag auf einem anderen Forum, wie dies zu tun, aber bisher kann ich es nicht auf meine üblichen Code anwenden
int BuyTrue, SellTrue;// Definieren Sie Variablen, die als oben beschriebene Flaggen dienen
....
//--- Bedingung für den Kauf
if (BuyTrue==0 && ... plus Ihre anderen Bedingungen) //Position öffnen Bedingung
{
....
OrderSend(....); //Funktion zur Eröffnung einer Bestellung
BuyTrue=1; // Wenn BuyTrue=1, wird die Bedingung für die Positionseröffnung nicht vollständig erfüllt
// folglich wird bei einem wiederholten Kaufsignal kein Handel eröffnet
SellTrue=0; // Bei SellTrue=0 wird die Bedingung der Positionseröffnung vollständig erfüllt
// daher wird der nächste Handel nur Verkaufen sein
....
}
//--- Bedingung für den Verkauf
if (SellTrue==0 && ... plus Ihre anderen Bedingungen) //Position öffnen Bedingung
{
....
OrderSend(....); //Funktion zur Eröffnung einer Bestellung
SellTrue=1; // Wenn SellTrue=1 ist, wird die Bedingung für die Auftragseröffnung nicht vollständig erfüllt
// daher wird bei einem zweiten Verkaufssignal keine Position eröffnet
BuyTrue=0; // Bei BuyTrue=0 ist die Bedingung der Positionseröffnung vollständig erfüllt
// Folglich wird der nächste Handel nur Kaufen sein
....
}
Mein Code für die Eröffnung eines Geschäfts.
total=AuftragsSumme();
if(gesamt<1)
{
// keine offenen Aufträge identifiziert
if(KontoFreieMarge()<(1000*Lose))
{
Print("Wir haben kein Geld. Freie Marge = ", AccountFreeMargin();
zurück(0);
}
// Prüfung auf Long-Position (BUY)
if(MACD1<0 && MACD2<MACD1 && MACD2>MACD3 && MathAbs(MACD1)>(MACDOpenLevel*Point))
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "macd sample",16384,0,Green);
if(Ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Fehler beim Öffnen der BUY-Bestellung: ",GetLastError());
zurück(0);
}
// Prüfung auf Short-Position (SELL)
if(MACD1>0 && MACD2>MACD1 && MACD1>(MACDOpenLevel*Point))
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "macd sample",16384,0,Red);
if(Ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice())
}
else Print("Fehler bei der Eröffnung einer SELL-Order: ",GetLastError());
zurück(0);
}
zurück(0);
}
Erstens, fügen Sie Ihren Code in den Editor über Strg+Alt+M (oder drücken Sie SRC am oberen Rand des Menüs), sonst ist es schlecht, was klar ist - alles verschmilzt unter einem...:-))
Zweitens, lesen Sie das Tutorial, insbesondere die Informationen auf den Link, den ich empfohlen, unter dem Code ist seine Beschreibung und ganz am Ende der Beschreibung ist genau beschrieben - wie man einmal Bericht einen Preis über / unter dem MA (Sie haben eine Analogie mit einem einzigen Eintrag bei einer bestimmten Handelsbedingungen - die Verwendung von Flaggen und alle), bevor Sie WORK Ihre Wizard ... :-)))
P.S. oder Google-Suche: Wie man den Code richtig einfügt site:mql4.com