[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 106

 
vovan-gogan:
Leute, Hilfe: Ich habe eine Bedingung in meinem EA, die eine Kaufposition nur dann eröffnet, wenn das Tief der vorherigen Kerze unter allen Tiefs der vorherigen 40 Kerzen liegt. Die Frage: Wie kann man diese Aufzählung der Tiefststände der vorherigen Kerze implementieren und herausfinden, ob der Tiefststand der vorherigen Kerze unter dem Tiefststand der vorherigen Kerze lag? Ich danke Ihnen im Voraus.
int TotalBars = 40; // Общее количество свечей по которым нужно осуществлять перебор
double max=0.0;
double min=100.0;
for(int n=0; n<TotalBars; n++)
  {
  if(High[n]>max) max=High[n];
  if(Low[n]<min) min=Low[n];
  }
MessageBox("Maximum="+max+" Minimum="+min);
 
langolier:

Ai danke!)
 
langolier:

Hmmm... Hier ist das Problem... Die Daten sollten mit jedem neuen Tick und nur für die letzten 30 Balken aktualisiert werden... Ich behalte die Daten aus irgendeinem Grund
 
sergeev:

Helfen Sie mir, einen Fehler zu finden!


10
mamba5 18.08.2011 14:23

Ich schreibe einen EA, der auf der Strategie "Black MACD" basiert:


Währungspaar: beliebig

Zeitrahmen: 15 und mehr.

Indikatoren: EMA(3) EMA(18), RSI(14), MACD(12,26,9)

Wir entfernen die Signallinie des MACD-Indikators, alle Indikatoren werden auf den Close-Preisindikator angewendet.

Kaufsignal: EMA(3) kreuzt EMA(18) von unten nach oben, warten, bis der MACD auf der positiven Seite erscheint. Wenn der RSI(14) über der 50er-Marke liegt, sollten Sie kaufen. Der Stop-Loss wird auf das letzte lokale Minimum gesetzt. Beenden Sie den Handel, indem Sie den EMA-Crossover umkehren, oder verwenden Sie Ihren eigenen Ansatz.

Verkaufssignal: Umgekehrte Situation: Überschreiten des EMA(3) EMA(18) nach unten, abwarten, bis der MACD negativ wird. Wenn der RSI(14) unter 50 liegt, wird gekauft, der Stop-Loss wird auf das letzte Hoch gesetzt.


Beim Kompilieren des Codes wird festgestellt, dass eine Klammer fehlt. Nach langem Suchen schien ich die Stelle gefunden zu haben, wo sie sein sollte, aber nachdem ich den Fehler behoben hatte, bekam ich weitere 20-30 neue Fehler. Bitte teilen Sie mir mit, wo ich es übersehen habe. ))) Der Code befindet sich in der beigefügten Datei.

Beigefügte Dateien:
BlackvMACD.mq4 (5.21 KB) löschen
Die Kompilierungsfehler wurden behoben. Ich habe mich nicht mit der Korrektheit des Algorithmus zur Umsetzung der Strategie befasst.
Dateien:
 
first_may:


Lesen: https://book.mql4.com/ru/variables/arrays . Es stellt sich heraus, dass ich ein zweidimensionales Feld für drei Paare organisieren kann: double Mas_d[3][2] = {1, 0, 2, 0, 3,0};

wobei zu beachten ist, dass:

der Wert von Mas_d[1][1] entspricht z. B. dem AUDCAD-Paar, und Mas_d[1][2] ist der Wert dieses Paares;

der Wert von Mas_d[2][1] entspricht z.B. dem Paar AUDCHF und Mas_d[2][2] ist der Wert dieses Paares;

Wert Mas_d[3][1] entspricht zum Beispiel AUDJPY, und Mas_d[3][2] ist der Wert dieses Paares,

die Array-Elemente behalten ihre Werte zwischen den Ticks bei. Und dann kann ich die Werte der Array-Elemente nach dem gewünschten Kriterium ändern. Habe ich richtig verstanden, was Sie meinen? :)

Ja. Der Ansatz mag nicht der beste sein, aber jeder wählt ihn selbst. Und dann, wenn nötig, modernisieren und optimieren! :))

Ich bin gerade dabei, meinen Ansatz zu modernisieren. Das ist in manchen Fällen nicht sehr praktisch! :D

 
MaxZ:

Ja. Der Ansatz ist vielleicht nicht der beste, aber jeder wählt ihn für sich selbst. Und dann, wenn nötig, modernisieren und optimieren! :))

Ich bin gerade dabei, meinen Ansatz zu modernisieren. Das ist in manchen Fällen nicht sehr praktisch! :D

Ich bin ein Anfänger und ich habe versucht, einen Test Expert Advisor zu schreiben, aber ich habe einen Fehler beim Kompilieren " \end_of_program' - ending bracket '}' expected C:\Program Files\ForexClub MT4\experts\trsi01.mq4 (30, 3)" Ich weiß, ich habe es falsch geschrieben, könnten Sie mir bitte sagen, wo ich Fehler gemacht habe?

//+------------------------------------------------------------------+
//| trsi01.mq4 |
//| Copyright © 2011, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp.
#property link "http://www.metaquotes.net"

double StopLoss=30;

double TakeProfit=100;

double Lots=0.1;

zurück(0);


int start()
{
if(iRSI(NULL,0,8,PRICE_CLOSE,0)<30)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point)
{
if(iRSI(NULL,0,8,PRICE_CLOSE,0)>70)
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point);
{
zurück(0);
{

 
acoman:

Ich bin ein Anfänger und ich habe versucht, einen Test Expert Advisor zu schreiben, aber wenn ich es kompiliere, erhalte ich die Fehlermeldung "\end_of_program' - ending bracket '}' expected C:\Program Files\ForexClub MT4\experts\trsi01.mq4 (30, 3)" Ich weiß, ich habe es falsch geschrieben, könnten Sie mir bitte sagen, wo der Fehler ist?

//+------------------------------------------------------------------+
//| trsi01.mq4 |
//| Copyright © 2011, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp.
#property link "http://www.metaquotes.net"

double StopLoss=30;

double TakeProfit=100;

double Lots=0.1;

zurück(0);


int start()
{
if(iRSI(NULL,0,8,PRICE_CLOSE,0)<30)
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point)
{
if(iRSI(NULL,0,8,PRICE_CLOSE,0)>70)
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point);
{
zurück(0);
{


Der Fehler ist, dass Sie das Handbuch nicht von vorne bis hinten gelesen haben. Wenn Sie ihn überhaupt geöffnet haben.

Aber Sie haben offensichtlich diesen Abschnitt übersehen: Bedingter Operator if - else.

Es wäre besser, das Buch von vorne bis hinten zu lesen.

 
Danke, ich werde es im Hinterkopf behalten :). Können Sie uns bitte mitteilen, wie hoch der minimale Stop-Loss für ein bestimmtes Währungspaar ist? Zum Beispiel EURAUD - Sie können nicht platzieren einen Stop-Loss weniger als 100 Pips, und für die anderen?
 
first_may:
Danke, ich werde es im Hinterkopf behalten :). Können Sie mir bitte sagen, welcher Mindeststopp-Loss für ein bestimmtes Währungspaar gilt? Zum Beispiel EURAUD - Sie können nicht setzen Stop-Loss weniger als 100 Pips für EURAUD, und für die anderen?

https://book.mql4.com/ru/appendix/marketinfo

MODE_STOPLEVEL 14 Minimal zulässiges Stop-Loss/Stake-Profit-Niveau in Pips
 

Wie bildet man eine binäre Zahl, z. B. mit 7 Ziffern? Und wie kann sie dann (der Einfachheit halber) in eine Dezimalzahl umgewandelt werden?