Hilfe bei der Codierung - Seite 469

 

Hallo Trader.

Kann mir jemand helfen und weiß, welche Indikatoren in diesen beiden .ex4-Dateien enthalten sind?!

Mit freundlichen Grüßen, oink!

Dateien:
 
oink!:
Hallo Trader.

Kann mir jemand helfen und weiß, welche Indikatoren die in diesen beiden .ex4-Dateien sind?!

Mit freundlichen Grüßen, oink!

Alarmsignale ist ein einfaches Zickzack gemacht, um Pfeile zu zeigen:

Dateien:
zz.gif  76 kb
 

Dankemladen, ich kenne deinen Namen aus rund 10000 Indikatoren! ;-)

Dann google ich nach dem Zickzack+Pfeile Indikator.

Der andere ist undefiniert?

Beste Grüße, oink!

 
oink!:
Danke, ich kenne deinen Namen aus rund 10000 Indikatoren ;-)

Dann google ich nach dem Indikator Zickzack+Pfeile.

Der andere ist undefiniert?

Beste Grüße, oink!

Ehrlich gesagt, konnte ich den anderen nicht erkennen. Entschuldigung

 

Hallo,

Ich verstehe nicht, warum diese ea nicht funktionieren, compllation OK, nichts in Journal noch Experte Registerkarte, aber nicht jeder Handel .

Vielen Dank im Voraus.

Jo

extern int magicNum=200;

extern double TakeProfit = 50;

extern double Lots = 0.01;

extern double TrailingStop = 30;

//extern double MACDOopenLevel=3;

//extern double MACDCloseLevel=2;

extern double MATrendPeriod=5;

int start()

{

double MaCurrent,MaPrevious,MavPrevious;

double close=iClose(Symbol(),0,0);

double vclose=iClose(Symbol(),0,1);

double vvclose=iClose(Symbol(),0,2);

// double MacdCurrent, MacdPrevious, SignalCurrent;

// double SignalPrevious, MaCurrent, MaPrevious;

// double RSIj,RSIv;

int cnt, ticket, total;

// Überprüfung der Ausgangsdaten

// Es ist wichtig, sicherzustellen, dass der Experte mit einem normalen

// Chart arbeitet und der Benutzer keine Fehler beim Setzen externer

// Variablen (Lots, StopLoss, TakeProfit,

// TrailingStop), in unserem Fall prüfen wir TakeProfit

// bei einem Chart mit weniger als 100 Bars

if(Bars<100)

{

Print("Balken weniger als 100");

return(0);

}

if(TakeProfit<10)

{

Print("TakeProfit kleiner als 10");

return(0); // TakeProfit prüfen

}

// zur Vereinfachung der Codierung und zur Beschleunigung des Zugriffs

// Daten werden in internen Variablen abgelegt

// MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);

// MacdPrevious=iMACD(NULL,0,12,26,9,PREIS_SCHLIESSEN,MODE_MAIN,1);

// SignalCurrent=iMACD(NULL,0,12,26,9,PREIS_SCHLIESSEN,MODE_SIGNAL,0);

// SignalVorher=iMACD(NULL,0,12,26,9,PREIS_SCHLIESSEN,MODE_SIGNAL,1);

MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,0);

MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,1);

MavPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,2);

double PlusHaut =High;

double PlusBas =Low;

double TiersHaut =PlusBas +((PlusHaut-PlusBas)*0.66);

double TiersBas =PlusBas +((PlusHaut-PlusBas)*0,33);

// RSIj= iRSI(NULL,0,9,PRICE_CLOSE,0);

// RSIv= iRSI(NULL,0,9,PRICE_CLOSE,1);

total=OrdersTotal();

if(gesamt<1)

{ // keine offenen Aufträge identifiziert

if(AccountFreeMargin()<(1000*Lots))

{

Print("Wir haben kein Geld. Freie Marge = ", KontoFreieMarge());

return(0);

}

// Prüfung auf die Möglichkeit einer Long-Position (BUY)

wenn

// (RSIv30)

( MaCurrent >MaPrevious)

// && (MaPreviousvclose || vclose>vvclose))

// (MacdCurrentSignalCurrent && MacdPrevious<SignalPrevious &&

// MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "MA",magicNum,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-Order : ",GetLastError());

return(0);

}

// Prüfung auf Short-Position (SELL) möglich

// wenn (RSIv>70 && RSIj<70)

if ( MaCurrent <MaPrevious)

// && (MaPrevious>MavPrevious) && (close<vclose || vclose<vvclose))

// (MacdCurrent>0 && MacdCurrentSignalPrevious &&

// MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "MA",magicNum,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Fehler beim Öffnen der SELL-Order : ",GetLastError());

return(0);

}

return(0);

}

// Es ist wichtig, den Markt richtig zu betreten,

// aber es ist noch wichtiger, ihn richtig zu verlassen...

for(cnt=0;cnt<gesamtzahl;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && // Prüfung auf offene Position

OrderSymbol()==Symbol()) // Prüfung auf Symbol

{

if(OrderType()==OP_BUY) // Long-Position ist eröffnet

{

// sollte sie geschlossen werden?

// if(MacdCurrent>0 && MacdCurrentSignalPrevious &&

// MacdCurrent>(MACDCloseLevel*Point))

// wenn (RSIv>70 && RSIj<70)

if ( MaCurrent <MaPrevious)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // Position schließen

return(0); // Ausstieg

}

// Prüfung auf Trailing-Stop

if(NachlaufenderStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

}

}

else // auf Short-Position gehen

{

// soll sie geschlossen werden?

// if(MacdCurrentSignalCurrent &&

// MacdPrevious(MACDCloseLevel*Point))

wenn

// (RSIv30)

( MaCurrent >MaPrevious)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // Position schließen

return(0); // Ausstieg

}

// Prüfung auf Trailing-Stop

if(NachlaufenderStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

return(0);

}

}

}

}

}

}

return(0);

}

// das Ende.

 
Jovager:
Hallo,

Ich verstehe nicht, warum diese ea nicht funktionieren, compllation OK, nichts in Journal noch Experte Registerkarte, aber nicht jeder Handel .

Vielen Dank im Voraus.

Jo

extern int magicNum=200;

extern double TakeProfit = 50;

extern double Lots = 0.01;

extern double TrailingStop = 30;

//extern double MACDOopenLevel=3;

//extern double MACDCloseLevel=2;

extern double MATrendPeriod=5;

int start()

{

double MaCurrent,MaPrevious,MavPrevious;

double close=iClose(Symbol(),0,0);

double vclose=iClose(Symbol(),0,1);

double vvclose=iClose(Symbol(),0,2);

// double MacdCurrent, MacdPrevious, SignalCurrent;

// double SignalPrevious, MaCurrent, MaPrevious;

// double RSIj,RSIv;

int cnt, ticket, total;

// Überprüfung der Ausgangsdaten

// Es ist wichtig, sicherzustellen, dass der Experte mit einem normalen

// Chart arbeitet und der Benutzer keine Fehler beim Setzen externer

// Variablen (Lots, StopLoss, TakeProfit,

// TrailingStop), in unserem Fall prüfen wir TakeProfit

// bei einem Chart mit weniger als 100 Bars

if(Bars<100)

{

Print("Balken weniger als 100");

return(0);

}

if(TakeProfit<10)

{

Print("TakeProfit kleiner als 10");

return(0); // TakeProfit prüfen

}

// zur Vereinfachung der Codierung und zur Beschleunigung des Zugriffs

// Daten werden in internen Variablen abgelegt

// MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);

// MacdPrevious=iMACD(NULL,0,12,26,9,PREIS_SCHLIESSEN,MODE_MAIN,1);

// SignalCurrent=iMACD(NULL,0,12,26,9,PREIS_SCHLIESSEN,MODE_SIGNAL,0);

// SignalVorher=iMACD(NULL,0,12,26,9,PREIS_SCHLIESSEN,MODE_SIGNAL,1);

MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,0);

MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,1);

MavPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_SMA,PRICE_CLOSE,2);

double PlusHaut =High;

double PlusBas =Low;

double TiersHaut =PlusBas +((PlusHaut-PlusBas)*0.66);

double TiersBas =PlusBas +((PlusHaut-PlusBas)*0,33);

// RSIj= iRSI(NULL,0,9,PRICE_CLOSE,0);

// RSIv= iRSI(NULL,0,9,PRICE_CLOSE,1);

total=OrdersTotal();

if(gesamt<1)

{ // keine offenen Aufträge identifiziert

if(AccountFreeMargin()<(1000*Lots))

{

Print("Wir haben kein Geld. Freie Marge = ", KontoFreieMarge());

return(0);

}

// Prüfung auf die Möglichkeit einer Long-Position (BUY)

wenn

// (RSIv30)

( MaCurrent >MaPrevious)

// && (MaPreviousvclose || vclose>vvclose))

// (MacdCurrentSignalCurrent && MacdPrevious<SignalPrevious &&

// MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "MA",magicNum,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-Order : ",GetLastError());

return(0);

}

// Prüfung auf Short-Position (SELL) möglich

// wenn (RSIv>70 && RSIj<70)

if ( MaCurrent <MaPrevious)

// && (MaPrevious>MavPrevious) && (close<vclose || vclose<vvclose))

// (MacdCurrent>0 && MacdCurrentSignalPrevious &&

// MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "MA",magicNum,0,Red);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Fehler beim Öffnen der SELL-Order : ",GetLastError());

return(0);

}

return(0);

}

// Es ist wichtig, den Markt richtig zu betreten,

// aber es ist noch wichtiger, ihn richtig zu verlassen...

for(cnt=0;cnt<gesamtzahl;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && // Prüfung auf offene Position

OrderSymbol()==Symbol()) // Prüfung auf Symbol

{

if(OrderType()==OP_BUY) // Long-Position ist eröffnet

{

// soll sie geschlossen werden?

// if(MacdCurrent>0 && MacdCurrentSignalPrevious &&

// MacdCurrent>(MACDCloseLevel*Point))

// wenn (RSIv>70 && RSIj<70)

if ( MaCurrent <MaPrevious)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // Position schließen

return(0); // Ausstieg

}

// Prüfung auf Trailing-Stop

if(NachlaufenderStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

}

}

else // auf Short-Position gehen

{

// soll sie geschlossen werden?

// if(MacdCurrentSignalCurrent &&

// MacdPrevious(MACDCloseLevel*Point))

wenn

// (RSIv30)

( MaCurrent >MaPrevious)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // Position schließen

return(0); // Ausstieg

}

// Prüfung auf Trailing-Stop

if(NachlaufenderStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

return(0);

}

}

}

}

}

}

return(0);

}

// das Ende.

In meinen Backtests funktioniert es:

Dateien:
jo.gif  90 kb
 

Hallo mladen,

ich möchte einen Teilverkauf meiner profitOrder mit dem gleichen Wert wie meine Variable "LossValue" durchführen.

Ich habe versucht, die Losgröße in folgenden Schritten zu berechnen:

-Lesen Sie den aktuellen Gewinn aus der profitOrder aus

-Berechnen Sie den ProfitPerLotstep

-Berechne den LossValue/ProfitPerLotstep und runde das Lot-Ergebnis auf

-aber wenn ich diese Lotsize verkaufe ist der Profit Value zu klein (ich denke wegen des Spreads)

Was ist die richtige Berechnungsmethode?

 

Ich habe eine zusätzliche Frage.

Wenn ich eine partielle Schließung vornehme, dann wird der Rest der Position automatisch vom Broker geöffnet. Vorher habe ich die Position mit einem Kommentar versehen, um diese Position zu unterscheiden. Wie kann ich das jetzt erkennen?

 
sunshineh:
Eine zusätzliche Frage: Wenn ich eine partielle Schließung vornehme, wird der Rest der Position automatisch vom Broker geöffnet. Vorher habe ich die Position mit einem Kommentar versehen, um diese Position zu unterscheiden. Wie kann ich das jetzt erkennen?

sunshineh

Sie können nichts tun

Nur Broker können das Kommentarfeld einer Bestellung ändern. Vielleicht ändert ein Broker den Kommentar so, dass er etwas wie "from nnnn" sagt, wobei nnnn die vorherige Ticketnummer ist, aber in den meisten Fällen tun sie das nicht, so dass es keine Lösung gibt, mit der man die vorherige Order in solchen Fällen eindeutig identifizieren kann.

 

Danke mladen! Hast Du eine Lösung zu meinem Posting vorhin mit der Berechnung aus der Losgröße nach einem definierten Wert wie 100 EUR?