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
Versuchen Sie es nicht, tun Sie es
ich bin auf der Arbeit... und der Metatrader-Port ist hier blockiert
Hey, ich bin immer noch neu in der Programmierung, und ich habe Probleme beim Hinzufügen der folgenden Funktionen zu diesem einfachen EA:
1. Gewinn mitnehmen
2. Stop Loss
3. Nachlaufender Stopp
4. Anzahl der Pips zur Aktivierung des Trailing Stops
//---- input parameters
extern double Lots=0.1;
extern int Slippage=5;
int MagicNum = 98760;
bool longPosOpened, shortPosOpened;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double crossup = iCustom(NULL , 0, "18_28Cross", 1,18,1,28,1,0, 1);
double crossdown = iCustom(NULL , 0, "18_28Cross", 1,18,1,28,1,1,1);
if (crossup != EMPTY_VALUE)
{
if (!PosOpened(OP_BUY))
{
CloseAllOpenAndPendingTrades();
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,Symbol(),MagicNum,0);
}
}
else if(crossdown != EMPTY_VALUE)
{
if (!PosOpened(OP_SELL))
{
CloseAllOpenAndPendingTrades();
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,Symbol(),MagicNum,0);
}
}
return(0);
}
//+------------------------------------------------------------------+
bool PosOpened(int orderType)
{
int total=OrdersTotal();
for(int cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderType() == orderType)
{
return(true);
}
}
return(false);
}
void CloseAllOpenAndPendingTrades()
{
int total = OrdersTotal();
for(int i=total-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS);
if(Symbol() != OrderSymbol()) continue; // important! only close positions of current currency pair
int type = OrderType();
bool result = false;
switch(type)
{
//Close opened long positions
case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 200);
break;
//Close opened short positions
case OP_SELL : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 200);
break;
//Close pending orders
case OP_BUYLIMIT :
case OP_BUYSTOP :
case OP_SELLLIMIT :
case OP_SELLSTOP : result = OrderDelete( OrderTicket() );
}
}
return(0);
}
Wie erkennt man einen Sprung von einem parabolischen sar?
Ich verwende derzeit diesen Code zur Erkennung eines Sprungs:
if(iSAR(NULL,0,0.02,0.2,0)-iSAR(NULL,0,0.02,0.2,1)>1.0){ // wenn es einen Sprung nach oben gibt
Aber das scheint nicht richtig zu funktionieren.
Wie kann ich erkennen, ob der Psar über oder unter meinen Balken liegt?
TIA
Ich bin bei der Arbeit... und der Metatrader-Port ist hier blockiert
Ich verwende derzeit diesen Code zur Erkennung eines Sprungs:
if(iSAR(NULL,0,0.02,0.2,0)-iSAR(NULL,0,0.02,0.2,1)>1.0){ // wenn es einen Sprung nach oben gibt
Aber das scheint nicht richtig zu funktionieren.
Wie kann ich erkennen, ob der Psar über oder unter meinen Balken liegt?
TIAHey IN10TION, kennen Sie einen guten Weg, um zu überprüfen, ob ein Handel gerade geschlossen, so dass der EA nicht einen anderen Handel (re-entry) platzieren, bis das nächste Signal kommt? Mein EA prüft die Handelsbedingungen bis zu, sagen wir, 10 Balken, aber wenn eine Verkaufs-Handelsbedingung bereits in den ersten paar Balken erfüllt und geschlossen wurde, möchte ich, dass der EA die Prüfung bis zum 10-Balken-Offset stoppt und bis zum nächsten tatsächlichen Signal wartet?
Danke
Verwenden Sie die Funktion OrderHistory().
Lux
Verwenden Sie die Funktion OrderHistory(). Lux
Danke, aber ich bin mir nicht sicher, wie das funktioniert. Ich möchte nicht wirklich wissen, ob eine Order gerade geschlossen wurde, sondern eher, ob eine Order innerhalb so vieler Balken gerade geöffnet und geschlossen wurde. Dann platzieren Sie nur einen weiteren Handel beim nächsten Hauptsignaleintrag. Ich versuche immer noch, den schnellen Wiedereintritt in den Handel zu verhindern, wenn eine Order gerade erst geöffnet und geschlossen wurde, die Handelsbedingungen aber immer noch erfüllt sind. Ich möchte, dass es irgendwie nur einen Handel pro Hauptsignal macht, so dass, obwohl die Handelsbedingungen noch gültig sind, nicht noch einmal gehandelt wird, wenn bereits mit diesem Signal gehandelt wurde (einschließlich Offset).
Lassen Sie mich sehen, wenn ich mit einem Beispiel erklären kann. Es könnte etwas sein, das man nicht ändern kann.
EG: Angenommen, ich verwende QQE und VQI als Einstiegspunkt für ein Handelssignal (QQE kreuzt und VQI wechselt von Kaufen zu Verkaufen oder umgekehrt).
Jetzt füge ich eine SignalOffset-Option von, sagen wir, 6 Balken hinzu, weil das QQE-Cross- und VQI-Signal möglicherweise nicht genau auf demselben Balken stattfindet.
Nun sagen wir, es gibt einen gültigen Handel innerhalb von 2 Bars von einander, wenn QQE und VQI übereinstimmen, so dass jetzt ein Handel platziert wird, aber ich habe ein TP von 10 Pips und die Bar bewegt sich 15 Pips mein TP getroffen wird und der Handel geschlossen ist. Die Handelsbedingungen sind aufgrund meines 6-Balken-Offsets immer noch erfüllt, jetzt wird ein weiterer Handel platziert (Re-Entry). Schlecht wenn sich ein oder zwei Balken um 100 Pips bewegen und mein TP bei 10 liegt, hatte ich gerade 10 Trades, schlecht Ich möchte nur einen Handel pro Signal (einschließlich Offset).
Macht das Sinn? Ich würde immer noch wollen, dass es innerhalb der 6 Bars handeln, wenn und entgegengesetzte Signal passiert und der andere Handel wurde noch geschlossen.
Danke
Danke, aber ich bin mir nicht sicher, wie das funktioniert. Ich möchte nicht wirklich wissen, ob eine Order gerade geschlossen wurde, sondern eher, ob eine Order innerhalb so vieler Bars geöffnet und geschlossen wurde. Dann wird ein weiterer Handel erst bei der nächsten Eingabe des Hauptsignals platziert. Ich versuche immer noch, den schnellen Wiedereintritt in den Handel zu verhindern, wenn eine Order gerade erst geöffnet und geschlossen wurde, die Handelsbedingungen aber immer noch erfüllt sind. Ich möchte, dass es irgendwie nur einen Handel pro Hauptsignal macht, so dass, obwohl die Handelsbedingungen noch gültig sind, nicht noch einmal gehandelt wird, wenn bereits mit diesem Signal gehandelt wurde (einschließlich Offset).
Lassen Sie mich versuchen, es anhand eines Beispiels zu erklären. Es könnte etwas sein, das man nicht ändern kann.
EG: Angenommen, ich verwende QQE und VQI als Signal für den Einstieg in den Handel (QQE kreuzt und VQI wechselt von Kauf zu Verkauf oder umgekehrt).
Jetzt füge ich eine SignalOffset-Option von, sagen wir, 6 Takten hinzu, weil das QQE-Cross- und VQI-Signal möglicherweise nicht genau auf demselben Balken stattfindet.
Nun sagen wir, es ist ein gültiger Handel innerhalb von 2 Bars von einander, wenn QQE und VQI übereinstimmen, so dass jetzt ein Handel platziert wird, aber ich habe ein TP von 10 Pips und die Bar bewegt sich 15 Pips mein TP getroffen wird und der Handel geschlossen ist. Die Handelsbedingungen sind aufgrund meines 6-Balken-Offsets immer noch erfüllt, jetzt wird ein weiterer Handel platziert (Re-Entry). Schlecht wenn sich ein oder zwei Balken um 100 Pips bewegen und mein TP 10 ist, hatte ich gerade 10 Trades, schlecht Ich möchte nur einen Handel pro Signal (einschließlich Offset).
Macht das Sinn? Ich würde immer noch wollen, dass innerhalb der 6 Bars gehandelt wird, wenn ein entgegengesetztes Signal auftritt und der andere Handel noch geschlossen wurde.
DankeGemeinsame Nutzung von Daten zwischen 2 Metatrader-Anwendungen
Ich versuche, Daten von einem Metatrader in eine Datei zu schreiben, um sie von einem zweiten Metatrader zu lesen.
Das Problem ist, dass ich die Fehlermeldung erhalte, dass der absolute Dateipfad "C:\EURUSD.txt" nicht zulässig ist, wenn ich versuche, in c:\ zu schreiben.
Hat jemand eine Idee oder eine andere Möglichkeit, Daten zwischen zwei Metatrader-Anwendungen auszutauschen?