Wie programmiert man? - Seite 123

 
InTrance:
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

 
:: verwenden sie ihren proxy in metatrader...

IN10TION

ssvl:
Ich bin bei der Arbeit... und der Metatrader-Port ist hier blockiert
 
:: Vergleichen Sie Ihr Sar-Ergebnis mit einem aktuellen Close[0]
ssvl:
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
 

Hey 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

 
luxinterior:
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

 
:: machen Sie eine [switch]- Variable, wenn es bereits 1 Verkaufsauftrag gemacht, es stoppt tun andere Verkäufe (switch-Wert ist -1) & wird nur neu anpassen, wenn es ein Kaufsignal & Kaufauftrag gemacht (switch-Wert ist 1)... etwas extra (surplus) können Sie darüber nachdenken, ist ein Timer-Reset, für den Fall, wenn es einen großen Trend nach oben oder unten, Sie können 2 oder 3 Verkäufe mit einer Art von Intervall zwischen gleichen Aufträgen (Timing) haben.

IN10TION

matrixebiz:
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.

Danke
 

Gemeinsame 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?