[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 1127
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Herzlichen Dank für Ihre Hilfe =)
Vergessen Sie nicht, dass der Indikator im Testprogramm nicht das Warnfenster öffnet, sondern Warnmeldungen in die Protokolle schreibt. Es ist besser, solche Teile des Codes mit Skripten zu debuggen - das geht schneller.
Außerdem werden die Indikatormeldungen seltsamerweise nicht in die Protokolle des Testers, sondern in die Echtzeitprotokolle geschrieben.
http://www.google.ru/search?as_sitesearch=mql4.com&as_q=%EA%EE%EC%E8%F1%F1%E8%FF+%E2+%F2%E5%F1%F2%E5%F0%E5
Es gibt keinen "einfachen" Weg, dies zu tun.
Sie könnten es so machen.
Oder hier eine andere Möglichkeit
Ich danke Ihnen!
Ich verstehe nicht ganz, wie die Bedingungen funktionieren.
Ich beschloss, herauszufinden, wie ein fraktaler Indikator funktioniert, was der Unterschied zwischen MODE_UPPER und MODE_LOWER ist, und schrieb den folgenden Code
int start()
{int y;
y= WindowFirstVisibleBar();Alert ("y",y);
for (;y>=0;y--)
{ double up=iFractals(Symbol(),PERIOD_M15,MODE_UPPER,y);
double down=iFractals(Symbol(),PERIOD_M15,MODE_LOWER,y);
if (up>=1|down>=1){
Alert("Previous upper fractal is:", up, " Previous lower fractal is:", down);Alert ("y",y);}}
WindowFirstVisibleBar() gibt die Anzahl der Balken auf dem Diagramm, diese Sache funktioniert, wenn Sie streichen, wenn (up>=1||down>=1) aus dem EA, es gibt eine schöne Reihe von gezählten Bars, nur gibt es so viele.
Es ist wie ein || Zeichen oder, der Operator scheint die Klammern {} zu machen, wenn mindestens eine der Bedingungen wahr ist, oder beide gleichzeitig wahr sind, richtig?
Für mich hat sich überhaupt nichts geändert!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Ich glaube, ich hab's richtig gemacht. Hilf mir!!!!!!!
Ich verstehe nicht ganz, wie die Bedingungen funktionieren.
Ich beschloss zu verstehen, wie ein fraktaler Indikator funktioniert, was der Unterschied zwischen MODE_UPPER und MODE_LOWER ist.
int start()
{int y;
y= WindowFirstVisibleBar();Alert ("y",y);
for (;y>=0;y--)
{ double up=iFractals(Symbol(),PERIOD_M15,MODE_UPPER,y);
double down=iFractals(Symbol(),PERIOD_M15,MODE_LOWER,y);
wenn (oben>=1||unten>=1){
Alert("Vorheriges oberes Fraktal ist:", up, " Vorheriges unteres Fraktal ist:", down);Alert ("y",y);}}
WindowFirstVisibleBar() gibt die Anzahl der Balken auf dem Diagramm, diese Sache funktioniert, wenn Sie streichen, wenn (up>=1|down>=1), es gibt eine schöne Reihe von berechneten Bars, aber es gibt eine Menge von ihnen.
Es ist wie ein || Zeichen oder, der Operator scheint die Klammern {} zu machen, wenn mindestens eine der Bedingungen wahr ist, oder beide gleichzeitig wahr sind, richtig?
Für mich hat sich überhaupt nichts geändert!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Ich denke, es ist alles richtig. me!!!!!!!
normaler Codeplatz über Gegenalt - M - schnellere Reaktion...keine Ausrufe.
Es ist wie...
https://docs.mql4.com/ru/basis/operations/bool
Eine logische ODER-Verknüpfung.
Zy counter-alt - M ist wie SRC Druckknopf und Code durch sie.
Ich habe den von Ihnen vorgeschlagenen Code ausprobiert. Das Ergebnis ist immer dasselbe: Es werden tagsüber immer wieder Trades eröffnet. Auch hier würde ich gerne die Option ein/aus beibehalten.
Hier sind die bewährten Varianten:
extern bool WaitForNewDay = true;
void init()
{
SMB=Symbol();
Rückkehr;
}
void start()
{
bool Trade=true;
if(WaitForNewDay){if(HistoryBuy(MAGICMA)+HistorySell(MAGICMA)!=0) Trade=false;}
if(CalculateCurrentOrders(Symbol())==0 && Trade)
{CheckForOpen(); return;}
}
//-----------------------------------------------------------------
int GeschichteKaufen(int MAGICMA)
{int BuyOrders=0;
for (int i=OrdersHistoryTotal()-1;i>=0;i--) {
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
Print(" ",GetLastError()," ",i);
}
sonst {
if(OrderSymbol()!= SMB || OrderMagicNumber()!= MAGICMA){ continue;}
if(OrderType()==OP_BUY){
if(OrderOpenTime()>=iTime(SMB,PERIOD_D1,0)){
KaufBestellungen++;
}
}
}
}
return(BuyOrders);
}
//-----------------------------------------------------------------
int HistorySell(int MAGICMA){
int SellOrders=0;
for (int i=OrdersHistoryTotal()-1;i>=0;i--){
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
Print(" ",GetLastError()," ",i);
}
sonst {
if(OrderSymbol()!=SMB || OrderMagicNumber()!=MAGICMA){ continue;}
if(OrderType()==OP_SELL){
if(OrderOpenTime()>=iTime(SMB,PERIOD_D1,0)){
SellOrders++;
}
}
}
}
return(SellOrders);
}
//////////////Andere Option/////////////////////
extern bool WaitForNewDay = true;
Handel=true;
void init()
{
SMB=Symbol();
if(WaitForNewDay) {Trade=false;}
Rückkehr;
}
void start()
{
if(WaitForNewDay) {if(HistoryBuy(MAGICMA)+HistorySell(MAGICMA)==0) Trade=true;}
if(CalculateCurrentOrders(Symbol())==0 && Trade)
{CheckForOpen(); Trade=false; return;}
}