Fragen Sie! - Seite 148

 

Kann mir jemand helfen, besser zu verstehen, wie man den Code ändern kann, um EA zu ermöglichen, gleichzeitige Aufträge in mehreren Instanzen auszuführen (mit anderen Worten, ich teste denselben EA auf mehreren Paaren gleichzeitig und verwende unterschiedliche magische Zahlen für jede Instanz).

Der ursprüngliche Code sieht wie folgt aus:

int total=OrdersTotal();

if(gesamt<1)

Und ich glaube, genau hier liegt das Problem. Wenn ich die Zahl erhöhe, werden lediglich mehrere Aufträge auf demselben Balken (M15) für dasselbe Paar ausgeführt. Wenn ich if(total<1) lasse, können keine gleichzeitigen Aufträge für verschiedene Paare ausgeführt werden.

Kann ich etwas an dem Tick oder dem Balken ändern, um nur einen Auftrag pro Paar zuzulassen, aber mehrere Aufträge für alle Paare, die EA (mit unterschiedlicher magischer Zahl) angehängt haben?

Vielen Dank an alle, die helfen oder Anregungen geben können!

Chili

 

Verwirrt über mehrere if-Anweisungen

/////////////////////START DES HANDELS AM SONNTAG/////////////////////////

StartDay=7; StartHour=1; StartMinute=55;

{

if(TimeDayOfWeek(TimeCurrent())==StartDay)

{

if(TimeHour(TimeCurrent())==StartHour)

{

if(TimeMinute(TimeCurrent())==StartMinute)

{

}

}

}

}

Ich versuche, meinen EA zu aktivieren, wenn der siebte Tag (Day 7), die erste Stunde (Hour 1) und die 55 Minuten (55 minutes) herum sind. Was mache ich falsch? Heute habe ich den Computer hochgefahren und der EA hat sofort mit dem Handel begonnen (vor Stunde 1)!. Bitte helfen Sie mir.

Vielen Dank!

Dave

 
JForex78:
Hallo,

Ich möchte wissen, wie ich eine MA-Kreuzung im unteren Zeitrahmen auf einem Diagramm im oberen Zeitrahmen darstellen kann.

Ich möchte z. B. einen Pfeil auf dem H1-Diagramm darstellen, wenn sich die MA5 und MA10 des M15 kreuzen.

Bitte lassen Sie es mich wissen.

Vielen Dank!

JForex.

Ein MA auf einem beliebigen Chart ist lediglich eine höhere/niedrigere Version eines MA auf einem höheren/niedrigeren Zeitrahmen. Wenn Sie z.B. einen 60MA auf einem 5-Minuten-Chart setzen, aber sehen wollen, wie er auf einem Stunden-Chart aussieht, würden Sie einfach 60 mit 12 multiplizieren (5-Minuten-Intervalle in einer Stunde). Ein 720 MA auf einem Stundenchart ist also dasselbe wie ein 60 MA auf einem 5-Minuten-Chart.

Macht das Sinn?

Lux

 
1Dave7:
/////////////////////START DES HANDELS AM SONNTAG/////////////////////////

StartDay=7; StartHour=1; StartMinute=55;

{

if(TimeDayOfWeek(TimeCurrent())==StartDay)

{

if(ZeitStunde(ZeitAktuell())==StartStunde)

{

if(TimeMinute(TimeCurrent())==StartMinute)

{

}

}

}

}

Ich versuche, meinen EA zu aktivieren, wenn der siebte Tag (Day 7), die erste Stunde (Hour 1) und die 55 Minuten (55 minutes) um sind. Was mache ich falsch? Heute habe ich den Computer hochgefahren und der EA hat sofort mit dem Handel begonnen (vor Stunde 1)!. Bitte helfen Sie mir.

Vielen Dank!

Dave

Werfen Sie noch einmal einen Blick in die Hilfedatei.

Gibt den aktuellen nullbasierten Wochentag (0-Sonntag,1,2,3,4,5,6) der letzten bekannten Serverzeit zurück.

Lux

 
Chilibowl:
Kann mir jemand helfen, besser zu verstehen, wie ich den Code so ändern kann, dass der EA in mehreren Instanzen gleichzeitig Aufträge ausführen kann (mit anderen Worten, ich teste denselben EA mit mehreren Paaren gleichzeitig und verwende für jede Instanz unterschiedliche magische Zahlen).

Der ursprüngliche Code enthält dies:

int total=OrdersTotal();

if(gesamt<1)

Und ich glaube, genau hier liegt das Problem. Wenn ich die Zahl erhöhe, werden lediglich mehrere Aufträge auf demselben Balken (M15) für dasselbe Paar ausgeführt. Wenn ich if(total<1) lasse, können keine gleichzeitigen Aufträge für verschiedene Paare ausgeführt werden.

Kann ich etwas an dem Tick oder dem Balken ändern, um nur einen Auftrag pro Paar zuzulassen, aber mehrere Aufträge für alle Paare, die EA (mit unterschiedlicher magischer Zahl) angehängt haben?

Vielen Dank an alle, die helfen oder Anregungen geben können!

Chili

OrdersTotal ist eine eingebaute Funktion, die die magische Zahl nicht berücksichtigt. Sie müssen Ihre eigene Funktion schreiben, die OrdersTotal verwendet, aber nach der magischen Zahl und wahrscheinlich auch nach dem Symbol filtert. Es gibt viele Beispiele hier und anderswo.

Viel Glück!

Lux

 
luxinterior:
Werfen Sie noch einmal einen Blick in die Hilfedatei. Lux

Ich änderte den StartDay auf 0, und änderte die StartHour auf die aktuelle GMT-Stunde meines Brokers, und änderte die StartMinute auf 5 Minuten vor den GMT-Minuten - Es funktioniert immer noch richtig, wenn die GMT-Zeit mit meiner Startzeit übereinstimmt. Ich habe in den Hilfedateien nachgeschaut und sie zeigen keine multiple if-Anweisung. Mehrfache if-Anweisungen verwirren mich immer. Was zum Teufel mache ich falsch? Ich möchte, dass das Programm bis zur entsprechenden Startzeit am Sonntag nicht handelt und einen Kommentar "Non-Trading Time" abgibt, bis die Zeit = die Startzeit am Sonntag ist.

Völlig verwirrt!!!

?????

 
luxinterior:
OrdersTotal ist eine eingebaute Funktion, die die magische Zahl nicht berücksichtigt. Sie müssen Ihre eigene Funktion schreiben, die OrdersTotal verwendet, aber nach der magischen Zahl und wahrscheinlich auch nach dem Symbol filtert. Es gibt viele Beispiele hier und anderswo.

Viel Glück!

Lux

Hier ist eine, die ich gemacht habe und ziemlich viel benutzt habe:

int OTBM(int intMagic)//OrdersTotalByMagic

{

int intCount=0;

int intPOS=0;

bool boolTerm=false;

while(boolTerm==false)

{

if(OrderSelect(intPOS,SELECT_BY_POS))

{

if(OrderMagicNumber()==intMagic) intCount++;

intPOS++;

}

else

boolTerm=true;

}

return(intCount);

}

[/PHP]

And if you want to close only a certain order by magic number:

int CBM(int intMagic)//CloseByMagic

{

int intOffset=0;

int Count = OTBM(intMagic);

while(OTBM(intMagic)>0 && Count > 0)

{

OrderSelect(intOffset,SELECT_BY_POS);

if(OrderMagicNumber()==intMagic)

{

if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),999,Red);

else if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),999,Orange);

Count--;

}

else {

intOffset++;

}

}

return(0);

}

Order Profit By Magic:

[PHP]double OPBM(int intMagic)//OrderProfitByMagic

{

double dblProfit=0;

int intPOS=0;

bool boolTerm=false;

while(boolTerm==false)

{

if(OrderSelect(intPOS,SELECT_BY_POS))

{

if(OrderMagicNumber()==intMagic) dblProfit=dblProfit+OrderProfit();

intPOS++;

}

else

boolTerm=true;

}

return(dblProfit);

}

Hoffentlich hilft das.

 
luxinterior:
Ein MA auf einem beliebigen Chart ist lediglich eine höhere/niedrigere Version eines MA auf einem höheren/niedrigeren Zeitrahmen. Wenn Sie z.B. einen 60MA auf einem 5-Minuten-Chart setzen, aber sehen wollen, wie er auf einem Stunden-Chart aussieht, würden Sie einfach 60 mit 12 multiplizieren (5-Minuten-Intervalle in einer Stunde). Ein 720 MA auf einem Stundenchart ist also dasselbe wie ein 60 MA auf einem 5-Minuten-Chart.

Macht das Sinn?

Lux

Das macht absolut Sinn. Wie können Sie einen M5 10MA auf einem H1-Chart sehen?

10/12=0.84. Kann man einen 0,84 MA auf einem H1-Chart darstellen? Nein.

Es funktioniert aber auch andersherum - H1 10MA = M5 120MA.

Meine Frage ist also, wie kann ich ein Kreuz von 5MA auf einem höheren Zeitrahmen wie H4 sehen.

Vielen Dank!

 
 

for-Schleife in MQL4

Beim Lesen des MQL4-Kurses von Coders' Guru bin ich in Lektion 5 auf diesen Teil der for-Schleife gestoßen, der mich verwirrt. Dort steht, dass es nur einen Testausdruck geben kann. Aber die gezeigten Beispiele enthalten 2 Testausdrücke.

int i;

int j;

for(i=0,j=0;i<15,i<;i++,j++)

Print(i);

int i;

for(i=15;i>0,i<;i--)

Print(i);

Könnte mich jemand freundlicherweise aufklären?

Danke!