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
Zeitspanne des Diagramms
Wie lautet der Code, um herauszufinden, in welchem Zeitraum das Diagramm läuft? So kann ich die Variableneinstellungen für jede Zeitperiode ändern.
if(?????) . . .
Dave
Wie lautet der Code, um herauszufinden, in welchem Zeitraum das Diagramm läuft? So kann ich die Variableneinstellungen für jede Zeitperiode ändern.
if(?????) . . .
Dave[/PHP]
or:
switch(Period())
{
case PERIOD_M1:
...
break;
case PERIOD_M5:
...
break;
...
}
[/PHP]
Sometime it maybe easier to work with indices:[PHP]
int tfIndex = ArrayBsearch({PERIOD_M1, PERIOD_M5, PERIOD_M15, ...}, Period());
Example : how to display the period by the string you want:[PHP]
int Periods[] = {PERIOD_M1, PERIOD_M5, PERIOD_M15, ...};
string sPeriods[] = {" M1", " M5", " M15", " M30", " Hourly", " 4 hours", " Daily", " Weekly"...};
int tfIndex = ArrayBsearch(Periods, Period());
comment(Symbol() + sPeriods[tfIndex]);
Danke, Michel!
Ich hoffe, dass dieser EA, den ich kreiere, der Richtige sein wird! Ich schätze Ihre Hilfe sehr!
Dave
Hallo zusammen!
kann mir jemand hier helfen, diese Funktion hinzuzufügen. Machen Sie es, um den Handel zu schließen, wenn der Balken abgeschlossen ist oder in einem anderen Wort, um es den Handel zu schließen, wenn der nächste Balken erscheint (egal, der Handel ist Gewinn oder Verlust)
extern int SystemMagicNumber=197;
extern double TakeProfit = 100;
extern double StopLoss = 500;
extern double Lots=0.1;
extern double TrailingStop = 0;
extern int MaxBuyTrades=5;
extern int MaxSellTrades=5;
int start()
{
if( HavePosThisBar(SystemMagicNumber)==false
&&iMA(NULL,0,5,0,MODE_SMA, PRICE_CLOSE,1)<iMA(NULL,0,15,0,MODE_EMA, PRICE_CLOSE,1)
&& iMA(NULL,0,5,0,MODE_SMA, PRICE_CLOSE,2)>iMA(NULL,0,15,0,MODE_EMA, PRICE_CLOSE,2)
&& SellPositionsCount()<MaxSellTrades
)
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,0,Bid+StopLoss*Point,Bid-TakeProfit*Point,"",SystemMagicNumber,0,Red);
return(0);
}
if( HavePosThisBar(SystemMagicNumber)==false
&& iMA(NULL,0,5,0,MODE_SMA, PRICE_CLOSE,1)>iMA(NULL,0,15,0,MODE_EMA, PRICE_CLOSE,1)
&& iMA(NULL,0,5,0,MODE_SMA, PRICE_CLOSE,2)<iMA(NULL,0,15,0,MODE_EMA, PRICE_CLOSE,2)
&& BuyPositionsCount()<MaxBuyTrades
)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",SystemMagicNumber,0,Blue);
return(0);
}
for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (AuftragSymbol() == Symbol())
{
if (OrderType()==OP_SELL)
{
wenn (NachlaufenderStopp>0){
wenn (OrderOpenPrice()-Ask>TrailingStop*Point)
{
if (OrderStopLoss() == 0 || OrderStopLoss()>(Ask+Point*TrailingStop))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Purple);
return(0);
}
}
}
}
if (OrderType()==OP_BUY)
{
wenn (NachlaufenderStopp>0){
wenn (Bid-OrderOpenPrice()>TrailingStop*Point)
{
wenn (OrderStopLoss()<(Bid-Point*TrailingStop))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Yellow);
return(0);
}
}
}
}
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
bool HavePosThisBar(int magic)
{
int cnt;
bool Ergebnis=false;
for(cnt=0; cnt<=OrdersHistoryTotal()-1; cnt++)
if(OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY))
if((OrderSymbol() == Symbol()) &&(OrderMagicNumber() == magic) && Time[0]<=OrderOpenTime())
{
Ergebnis=true;
break;
}
for(cnt=0; cnt<=OrdersTotal()-1; cnt++)
if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
if((OrderSymbol() == Symbol()) &&(OrderMagicNumber() == magic) && Time[0]<=OrderOpenTime())
{
Ergebnis=true;
break;
}
return(Ergebnis);
}
int BuyPositionsCount()
{
int Ergebnis=0;
for(int cnt=0; cnt<=OrdersTotal()-1; cnt++)
if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
if((OrderSymbol() == Symbol()) &&(OrderMagicNumber() == SystemMagicNumber) &&
(OrderType()==OP_BUY)
)
{
Ergebnis++;
}
return(Ergebnis);
}
int SellPositionsCount()
{
int Ergebnis=0;
for(int cnt=0; cnt<=OrdersTotal()-1; cnt++)
if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
if((OrderSymbol() == Symbol()) &&(OrderMagicNumber() == SystemMagicNumber) &&
(OrderType()==OP_SELL)
)
{
Ergebnis++;
}
return(Ergebnis);
}
Hallo zusammen!
Kann mir jemand hier helfen, diese Funktion hinzuzufügen. Machen Sie es, um den Handel zu schließen, wenn der Balken abgeschlossen ist oder in einem anderen Wort, um es den Handel zu schließen, wenn der nächste Balken erscheint (egal, der Handel ist Gewinn oder Verlust).
Um einen neuen Balken zu erkennen, gibt es mehrere Lösungen:
1)
2)
3)
Better, but again, restarting the terminal may produce wrong behaviors.
So my opinion is that the best is to write the lifetime max of each order into the order itself, using the "Comment" field :[PHP]OrderSend(..., ""+(Time[0] + Period()*60), ..);. Dies ist eine gute Lösung, denn wenn Sie mehrere Aufträge zu schließen haben, haben Sie alle Zeit, um es zu tun.
danke michel für die antwort.
Ich werde es versuchen. aber was soll ich in den Kommentar schreiben?irgendetwas, das mir gefällt?
danke michel für die antwort. ich werde es versuchen. aber was soll ich in das Kommentarfeld schreiben? irgendetwas, das mir gefällt?
Geben Sie die Zeit ein, zu der Sie den Auftrag abschließen möchten. Das Feld Kommentar muss eine Zeichenkette sein, deshalb steht vor dem Wert ein ""+". zum Beispiel:
""+(Time[0] + Period()*60) // begin of the next bar on the current timeframe
""+(TimeCurrent() + 2*360 + 30*60) // 2 hours 30 minutes after the openning
""+(iTime(NULL,PERIOD_D1,0) + 23*360 + 45*60) // today at 23:45 (server time)
""+(iTime(NULL,PERIOD_W1,0) + (PERIOD_W1 - 10)*60) // next friday at 23:50Danke
Prüfen Sie bei Bedarf zuerst, ob Sie später als 8 Uhr morgens sind:
Then, find the max and min of the current day. (if its ok for you, its easier than from 8 am): [PHP]double Max = iHigh(Symbol(), PERIOD_D1, 0);
double Min = iLow(Symbol(), PERIOD_D1, 0);
int Range = (Max - Min) / Point;
if(Range > 90) return;
...
Hallo,
Entschuldigung, dass es so lange gedauert hat, bis ich mich bei Ihnen bedankt habe.
Ich schätze Ihre Hilfe sehr.
Nochmals vielen Dank.
Shek
Um einen neuen Balken zu erkennen, gibt es mehrere Lösungen:
1)
2)
3)
So my opinion is that the best is to write the lifetime max of each order into the order itself, using the "Comment" field :
i got the error below.what does ot mean?
[PHP]'>' - different types in comparison F:\Program Files\MetaTrader - FXOpen\experts\EMA_10.mq4 (88, 22)
I make it like this
for the send order
[PHP]OrderSend(Symbol(),OP_BUY,Lots,Ask,0,Ask-25*Point,Ask+TakeProfit*Point, ""+(Time[0] + Period()*60),SystemMagicNumber,0,Blue);und für den Abschlussauftrag
[PHP]if(TimeCurrent() > OrderComment())
{
OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0, CLR_NONE);
}und ich bekomme den oben gezeigten Fehler.
Ist das richtig?
mein Fehler, sorry.
Dies sollte funktionieren: