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
iCCI Frage
Ich bin neu bei MQL4 und versuche, den vorherigen CCI-Wert zu ermitteln. Ich habe versucht, die iCCI-Funktion mit einem Shift-Wert von 1 zu verwenden, aber sie liefert mir nicht den vorherigen Wert. Wie könnte ich das tun, ohne den aktuellen Wert in einer Variablen zu speichern? Ich versuche, die Richtung zu bestimmen, in die sich der CCI bewegt.
Ich danke Ihnen für Ihre Hilfe.
Der Code ist tickbasiert, d.h. wenn es zu diesem Zeitpunkt keinen Tick gibt, dann verpasst der Code die Zeitprüfung. Ich glaube nicht, dass man es auf die Sekunde genau hinbekommen kann, ohne eine Art Schleife, die ständig läuft.
Hilfe bei der EA-Bearbeitung
Ich versuche, dies herauszufinden... können Sie bitte helfen?
MB Trading - Aktien Optionen Futures Forex Online Discount Trading
Ich habe dies geändert:
OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slippage,sl,tp, "MyMEFx EA "+MagicNumber,MagicNumber,0,Arrow sColor);
return(0);
To:
int ticket = OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slippage,0,0, "MyMEFx EA "+MagicNumber,MagicNumber,0,Arrow sColor);
Sleep(1500);
OrderModify(ticket,OrderOpenPrice() ,sl,tp,0,ArrowsColor);
=================================== ======
Ich erhalte diese Fehler:
2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: ungültiges Ticket für OrderModify-Funktion
2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderSend Fehler 131
2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderModify Fehler 4051
=====================
Ich versuche, das herauszufinden... können Sie mir bitte helfen?
MB Trading - Aktien Optionen Futures Forex Online Discount Trading
Ich habe dies geändert:
OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slippage,sl,tp, "MyMEFx EA "+MagicNumber,MagicNumber,0,Arrow sColor);
return(0);
To:
int ticket = OrderSend(Symbol(),OP_SELL,mylotsi, SellPrice,slippage,0,0, "MyMEFx EA "+MagicNumber,MagicNumber,0,Arrow sColor);
Sleep(1500);
OrderModify(ticket,OrderOpenPrice() ,sl,tp,0,ArrowsColor);
=================================== ======
Ich erhalte diese Fehler:
2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: ungültiges Ticket für OrderModify-Funktion
2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderSend Fehler 131
2009.02.28 17:32:59 2009.01.01 20:42 EATest AUDJPY,H1: OrderModify Fehler 4051
=====================Ihr Problem liegt in der Losgröße (Volumen) in Ihrem OrderSend-Statement, das aufgrund des Fehlers eine -1 zurückgibt. Die Ticket-Variable enthält keine Ticketnummer, sondern das Fehlerflag -1, das die anderen Fehler mit der OrderModify-Funktion ausgelöst hat. Sie müssen die Variable für die Losgröße mylotsi so korrigieren, dass sie einen akzeptablen Wert enthält. Außerdem sollten Sie den Rückgabewert in der Ticket-Variablen überprüfen, um sicherzustellen, dass sie kein Fehlerflag enthält, bevor Sie die ordermodify-Routine aufrufen.
keit
EA Max Position
Kann jemand maximale Positionen für diesen EA hinzufügen
oder kann er nur eine Position ausführen?
Danke im Voraus
Verwenden Sie besser
MathAbs(NormalizeDouble(Bid,4)-NormalizeDouble(pivot,4))<Delta*Point,
wobei Delta=2...5
Könnte mir jemand den Code für Stop Loss und TP nennen. Ich brauche, um es zu diesem EA hinzufügen.
dieser versteckte SL und TP
int TakeProfit=20; // 20 pips take profit
int StopLoss =40; // 40 pips stoploss
int Slippage = 3;
int MagicNumber=1;
int i;
int start(){
//----- exit @ TP
if((ScanTrades()>=1)&& (ProfitInPips()>=TakeProfit)){
//----- This part will close all open orders and delete pending trades
for(i = OrdersTotal()-1; i >=0; i--)
{ OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol()&& OrderMagicNumber()==MagicNumber )
{
if (OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Plum);
if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Plum);
if (OrderType() == OP_SELLLIMIT) OrderDelete(OrderTicket());
if (OrderType() == OP_BUYLIMIT) OrderDelete(OrderTicket());
if (OrderType() == OP_BUYSTOP) OrderDelete(OrderTicket());
if (OrderType() == OP_SELLSTOP) OrderDelete(OrderTicket());
}
}
}
//------exit @ SL
if((ScanTrades()>=1)&& (ProfitInPips()<= -StopLoss)){
//----- This part will close all open orders and delete pending trades
for(i = OrdersTotal()-1; i >=0; i--)
{ OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol()&& OrderMagicNumber()==MagicNumber )
{
if (OrderType()==OP_BUY)OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Plum);
if (OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Plum);
if (OrderType() == OP_SELLLIMIT) OrderDelete(OrderTicket());
if (OrderType() == OP_BUYLIMIT) OrderDelete(OrderTicket());
if (OrderType() == OP_BUYSTOP) OrderDelete(OrderTicket());
if (OrderType() == OP_SELLSTOP) OrderDelete(OrderTicket());
}
}
}
return (0);
}
//----------- Call functions
int ScanTrades()
{
int Tot = OrdersTotal();
int Numb = 0;
for(int cnt=0; cnt<=Tot-1; cnt++)
{
OrderSelect(cnt, SELECT_BY_POS);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) Numb++;
}
return(Numb);
}
double ProfitInPips()
{
RefreshRates();
double Prof=0;
int i;
int totalOrders=OrdersTotal();
for(i=0;i<totalOrders;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()==MagicNumber)
{
if(OrderType()==0)
{
Prof+=(MarketInfo(OrderSymbol(),MODE_BID)-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT);
}
if(OrderType()==1)
{
Prof+=(OrderOpenPrice()-MarketInfo(OrderSymbol(),MODE_ASK))/MarketInfo(OrderSymbol(),MODE_POINT);
}
}
}
return(Prof);
}
Sagen wir, ich habe einige Kauf- und Verkaufsaufträge.
Was ich tun möchte ist:
- Alle Trades "Basket" bei 5 Pips mehr als dem Break-Even-Preis der offenen Trades beenden
Was ich in der ersten for-Schleife zu tun versuche, ist, den Wert der offenen Geschäfte + Swap zu finden und ihn in Pips umzuwandeln.
Ich habe einige Ideen ausprobiert, aber ich bin in einer Sackgasse gelandet. Ich weiß, dass das Problem in der ersten for-Anweisung liegt, aber ich kann es nicht lösen, jede Hilfe ist sehr willkommen
SymbolPL = 0;
OrdLots = 0;
Equity = 0;
MinPro = 5;
for(i = 0; i < OrdersTotal(); i++)
{OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{if(OrderType() == OP_BUY) OrdLots += OrderLots();
if(OrderType() == OP_SELL) OrdLots -= OrderLots();
Equity += OrderProfit() + OrderSwap();
}
}
MinPro= MathRound (MathAbs(Equity /OrdLots)+MinPro);
//--- Count the open trades
int i;
int count=0;
for(i=0;i<OrdersTotal();i++)
{ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()==MagicNumber && OrderType()<2)
{ count++;
}
}
//--- find the profit in pips of the open trades
RefreshRates();
double profits=0,openPrice=0,points=0;
string sym="";
int i;
int totalOrders=OrdersTotal();
for(i=0;i<totalOrders;i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()==MagicNumber)
{
sym=OrderSymbol();
openPrice=OrderOpenPrice();
if(OrderType()==0)
{
profits+=(MarketInfo(sym,MODE_BID)-openPrice)/MarketInfo(sym,MODE_POINT);
}
if(OrderType()==1)
{
profits+=(OrderOpenPrice()-MarketInfo(sym,MODE_ASK))/MarketInfo(sym,MODE_POINT);
}
}
}
//--- Close when the open trades are 5 pips more than the breakeven price
if (count>1 && profits>MinPro )
{
for(i = OrdersTotal()-1; i >=0; i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderSymbol() == Symbol()&& OrderMagicNumber()==MagicNumber )
{
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),Slippage,Plum);
}
}
}
Ich denke, Sie können eine Konstante "equity_per_lotpoint" verwenden, die wie folgt berechnet wird:
[/PHP]
and then you'd have what you need after the first loop, with:
[PHP]if ( Equity > 5 * equity_per_lotpoint * MathAbs( OrdLots ) ) { ...
Danke Ralph, aber dann würde der Swap fehlen, und ich möchte den Gewinn/Verlust des Swaps in die Entscheidung über den Abschluss der Aufträge einbeziehen.