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
Das funktioniert beim Preis. Er will den höchsten und den niedrigsten Wert eines Indikators finden.
Lux
Hallo,
Sie können dies versuchen:
....
int highest=0, lowest=0, bar=WindowBarsPerChart();
for(int shift=0;shift<bar;shift++)
{
double indie=iCustom(.........,shift);
if(highest<indie) highest=indie;
if(lowest==0) lowest=indie;
if(lowest>indie) lowest=indie;
}
.....
Hinweis: dieser Code berechnet auch die aktuelle offene Kerze, wenn Sie nur die geschlossene Kerze berechnen wollen, verwenden Sie shift=1.
Hoffentlich hilft das,
Ardie
Programmatisch den Repaint-Indikator aktualisieren
Hallo,
Ich suche nach einer Möglichkeit, einen Repaint-Indikator alle x Minuten zu aktualisieren.
Der einzige Weg, um es derzeit zu aktualisieren, ist in den Indikator auf dem Chart klicken und dann auf "ok". Können wir es mit MQL4-Code automatisieren?
Ich habe etwas auf der Website von Codersguru gefunden, Programmatically Refresh your charts | www.metatrader.info, aber es scheint bei mir nicht zu funktionieren. Oder gibt es jemanden, der es ausprobiert hat und ein anderes Ergebnis (funktionierend) erhalten hat?
Ich danke Ihnen
Entschuldigung für meine Englischkenntnisse.
Ich möchte die Anzahl der Male zählen, die die Bedingung nur einmal pro Balken wahr ist. Computer summiert viele Male pro Balken. Was mache ich falsch?
Ich möchte die Anzahl der Male zählen, die die Bedingung wahr ist, nur einmal pro Balken. Computer addiert viele Male pro Balken. Was kann ich falsch machen?
Verwenden Sie eine Funktion wie diese...
bool NewBar() {
static datetime LastTime = 0;
if (Time[0] != LastTime) {
LastTime = Time[0];
return (true);
} else
return (false);
}
[/php]
Then put an if statement round your main code, like...
[php]
if(NewBar() == true){
// do the main processing here
}
Ich hoffe, das hilft.
Lux
Das war sehr nett von dir, Lux.
Ich habe das hier gefunden:
Jeden Balken nur einmal verarbeiten - MQL4 forum
Automated 2008.01.15 18:54 Sie könnten Ihren Code beim allerersten Tick eines neuen Balkens ausführen ( d.h. gleich nachdem der vorherige Balken geschlossen wurde ).
Hier ist eine Funktion, die TRUE zurückgibt, wenn sich gerade ein neuer Balken gebildet hat:
// Diese Funktion liefert TRUE beim allerersten Tick eines Balkens, d.h. nachdem der vorherige Balken gerade geschlossen wurde
bool NewBar()
{
if(VorherigerBalkenZeit<Zeit[0])
{
VorherigeBarZeit = Zeit[0];
return(true);
}
return(false); // für den Fall, dass die if - else Anweisung nicht ausgeführt wird
} Sie müssen den Zeitpunkt PreviousBarTime am Anfang Ihres EAs deklarieren...
dann könnten Sie in Ihrem Code einfach verwenden
if ( NewBar() )
{
...... Code, der ausgeführt werden muss, nachdem ein Bar hier geschlossen wurde ....
} Danke
automatedfx@gmail.com
---------------------------------------------------
Mir ist aufgefallen, dass Sie STATIC verwendet haben... Ich habe es nachgeschlagen... was ist der Vorteil von STATIC gegenüber einer globalen Variable?
ea mit mehreren eingängen
Bitte helfen Sie. Ich möchte finden oder brauchen Hilfe bei der Erstellung eines ea mit den folgenden Eingabeparametern. vier separate Handelseinträge jeweils mit Anzahl der Lose, Stop-Loss, Trailing-Stop, Break-Even und Gewinnziel. Trades werden beim Klicken auf Expert Advisor-Taste zu öffnen.
Vielen Dank!
Brauche Hilfe bei Trailing Stop Option
Ich habe diesen EA im MQL4-Forum gefunden, ein ziemlich interessanter EA.
könnte jemand helfen, eine Trailing-Stop-Option hinzuzufügen, die Trailing-Stop nur aktivieren kann, nachdem der Gewinnwert, den ich eingestellt habe, erreicht wurde?
themastermind2.mq4
Hallo zusammen...
Ich habe ein Problem mit der EA, die ich schrieb... eigentlich, die EA basiert auf MACD-Indikator... wenn der MACD werden wie "n"-Form, offene Post verkaufen, und wenn MACD werden wie "u"-Form, die EA wird Buy öffnen.
das Problem ist, die EA nicht öffnen keine Post.. nachdem ich tun einige Backtest auch, es keine offenen Post von diesem EA.. kann jemand bitte helfen Sie mir finden, was falsch ist mit dem Code?
Hier ist der Code...
extern double TakeProfit = 20;
extern double Lots = 0.1;
extern double StopLoss = 20;
extern double MagicNumber = 17384;
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
double MacdBuffer1[];
double MacdBuffer2[];
double MacdBuffer3[];
double MacdBuffer4[];
double MacdBuffer5[];
double MacdBuffer6[];
double MacdBuffer7[];
double MacdBuffer8[];
int init()
{
//----
//SetIndexBuffer(0, lag1_buffer);
//SetIndexBuffer(1, lag2_buffer);
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
for(int i=0; i<limit; i++)
MacdBuffer1=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
MacdBuffer2=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i-1)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i-1);
MacdBuffer3=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i+1)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i+1);
MacdBuffer4=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i-2)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i-2);
MacdBuffer5=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i+2)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i+2);
MacdBuffer6=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i-3)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i-3);
MacdBuffer7=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i+3)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i+3);
/*Alert( "MacdBuffer7 =",MacdBuffer7);
Alert( "MacdBuffer5 =",MacdBuffer5);
Alert( "MacdBuffer3 =",MacdBuffer3);
Alert( "MacdBuffer1 =",MacdBuffer1);
Alert( "MacdBuffer2 =",MacdBuffer2);
Alert( "MacdBuffer4 =",MacdBuffer4);
Alert( "MacdBuffer6 =",MacdBuffer6);*/
//----
int ticket_buy, ticket_sell, total;
total=OrdersTotal();
//MACD become 'u' shape
if (MacdBuffer7>MacdBuffer5&&MacdBuffer5>MacdBuffer3&&MacdBuffer3>MacdBuffer1
&&MacdBuffer1<MacdBuffer2&&MacdBuffer2<MacdBuffer4&&MacdBuffer4<MacdBuffer6)
{
if (total < 1) {
ticket_buy=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"scalp 1 min - buy",MagicNumber,0,Green);
if(ticket_buy>0)
{
if(OrderSelect(ticket_buy,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
return(0);
} else {
}
}
//MACD become 'n' shape
if(MacdBuffer7<MacdBuffer5&&MacdBuffer5<MacdBuffer3&&MacdBuffer3<MacdBuffer1
&&MacdBuffer1>MacdBuffer2&&MacdBuffer2>MacdBuffer4&&MacdBuffer4>MacdBuffer6)
{
if (total < 1) {
ticket_sell=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"scalp 1 min - sell",MagicNumber,0,Red);
if(ticket_sell>0)
{
if(OrderSelect(ticket_sell,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
return(0);
} else {
}
}
//----
return(0);
}
//+------------------------------------------------------------------+hoffe, jemand kann mir helfen, das Problem zu lösen... ich bin nicht gut in der Programmierung von Codes... danke...