tol64: 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:
Konstant.
Wert
Beschreibung
MODUS_LOW
1
Täglicher Mindestpreis
MODUS_HIGH
2
Maximaler Tagespreis
MODUS_ZEIT
5
Zeitpunkt des letzten Angebots
MODE_BID
9
Letzter erhaltener Gebotspreis. Für das aktuelle Instrument wird sie in der vordefinierten Variable Bid
MODE_ASK
10
Letzter erhaltener Briefkurs. Gespeichert in der vordefinierten Variablen Ask for the current symbol
MODE_POINT
11
Punktgröße in der Kurswährung. Gespeichert in der vordefinierten Variablen Punkt für das aktuelle Symbol
MODE_ZIFFERN
12
Anzahl der Stellen nach dem Dezimalpunkt im Preis des Instruments. Wird in der vordefinierten Variablen Digits für das aktuelle Symbol gespeichert
MODE_SPREAD
13
Spanne in Pips
MODE_STOPLEVEL
14
Minimal zulässiges Niveau von Stop Loss/Stake Profit in Pips
MODE_LOTSIZE
15
Kontraktgröße in der Basiswährung des Instruments
MODE_TICKVALUE
16
Minimale Änderung des Instrumentenpreises in der Einzahlungswährung
MODE_TICKSIZE
17
Mindestschritt der Preisänderung des Instruments in der Notierungswährung
MODE_SWAPLONG
18
Swap-Größe für Long-Positionen
MODE_SWAPSHORT
19
Swap-Größe für Short-Positionen
MODE_STARTING
20
Kalenderstartdatum (normalerweise für Futures verwendet)
MODUS_ABLAUF
21
Verfallsdatum (normalerweise für Futures verwendet)
MODE_TRADEALLOWED
22
Erlaubnis zum Handel mit dem angegebenen Instrument
MODE_MINLOT
23
Mindestlosgröße
MODE_LOTSTEP
24
Schritt der Losgrößenänderung
MODE_MAXLOT
25
Maximale Losgröße
MODE_SWAPTYPE
26
Berechnungsmethode für Swaps. 0 - in Punkten; 1 - in der Basiswährung des Instruments; 2 - in Prozenten; 3 - in der Randwährung.
MODUS_PROFITCALCMODE
27
Art der Gewinnberechnung. 0 - Devisen; 1 - CFD; 2 - Termingeschäfte
MODE_MARGINCALCMODE
28
Modus der Margenberechnung. 0 - Devisen; 1 - CFD; 2 - Termingeschäfte; 3 - Indizes CFD
MODE_MARGININIT
29
Erforderlicher Ersteinschuss für 1 Lot
MODE_MARGINMAINTENANCE
30
Höhe der Einschussforderung zur Deckung offener Positionen pro 1 Lot
MODE_MARGINHEDGED
31
Marge für überlappende Positionen pro 1 Lot
MODE_MARGINREQUIRED
32
Höhe der freien Mittel, die erforderlich sind, um 1 Los zum Kauf zu eröffnen
MODE_FREEZELEVEL
33
Höhe des Einfrierens von Aufträgen in Punkten. Liegt der Ausführungspreis innerhalb der durch den Freeze-Level definierten Grenzen, kann der Auftrag nicht geändert, storniert oder geschlossen werden.
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
int i,accTotal=OrdersHistoryTotal(); for(i=0;i<accTotal;i++) { //---- Auswahlergebnis prüfen if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Fehler beim Zugriff auf historische Datenbank (",GetLastError(),")); break;
} Wir müssen uns den Zeitpunkt des Auftragsschlusses merken, den Zeitpunkt des Auftragsschlusses mit dem Zeitpunkt des Abschlusses in der vorherigen Iteration vergleichen, und wenn (der Zeitpunkt des Abschlusses höher ist und die Art des Handelsvorgangs Kauf oder Verkauf ist), dann sollten wir uns den Zeitpunkt des aktuellen Auftrags und die Art des Handelsvorgangs merken // als Ergebnis wissen wir am Ende des Zyklus, welche Art von Auftrag zuletzt geschlossen wurde } Etwa so .
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 frage mich, ob es möglich ist, dies programmatisch zu überprüfen. So wie ich es verstehe, nein. Sie müssen zunächst eine Funktion zur Eröffnung von Positionen/zum Setzen von Pending Orders in das Programm 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 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.
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.
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 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.
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 soforteine 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
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
int i,accTotal=OrdersHistoryTotal(); for(i=0;i<accTotal;i++) { //---- Auswahlergebnis prüfen if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Fehler beim Zugriff auf historische Datenbank (",GetLastError(),")); break; } Wir müssen uns den Zeitpunkt des Auftragsschlusses merken, den Zeitpunkt des Auftragsschlusses mit dem Zeitpunkt des Abschlusses in der vorherigen Iteration vergleichen, und wenn (der Zeitpunkt des Abschlusses höher ist und die Art des Handelsvorgangs Kauf oder Verkauf ist), dann sollten wir uns den Zeitpunkt des aktuellen Auftrags und die Art des Handelsvorgangs merken // als Ergebnis wissen wir am Ende des Zyklus, welche Art von Auftrag zuletzt geschlossen wurde } Etwa so .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