[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

 
drknn:
Herzlichen Dank für Ihre Hilfe =)
 
Alexandr24:
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.

 
Wie berücksichtige ich die Provision, wenn ich einen EA im Tester teste?
 
Es scheint berücksichtigt zu werden, dass der Tester alle Einstellungen eines bestimmten Brokers verwendet. Eine Suche wird Ihnen genauere Informationen liefern.
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
 
Abzasc:

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!!!!!!!

 
Dimka-novitsek:

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.
 
über counter-alt - M - Und mehr Details?
 
Dimka-novitsek:

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.

 
drknn:

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;}

}