Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 555

 
Alexey Viktorov:

Ich habe diese Argumente gelesen. Aber das war kein Argument, sondern nur ein Unwillen, Erklärungen und Versuche, die Schuld des Terminals zu beweisen, zu verstehen. Ihre Worte wurden durch nichts untermauert. Sie sind zu faul, um Screenshots zu machen und Ihre Gedanken klar zu erklären.

Welche Screenshots?! Ich habe den Code zur Verfügung gestellt, es läuft auf MT4 und es wird auf MT5 abstürzen. Die Art des Fehlers ist im Code angegeben, der auch auskommentiert ist.
 
comp:
Welche Screenshots?! Wenn ich den Code zur Verfügung stelle, läuft er auf MT4 und stürzt mit einem Fehler in MT5 ab. Die Art des Fehlers ist im Code angegeben, der auch auskommentiert ist.

Das ist in Ordnung. Das ist Ihre Sichtweise. Du denkst, dass jeder etwas tun muss, um deinen Standpunkt zu verstehen, aber du glaubst nicht, dass es einfacher ist, nicht mit dir zu streiten, und dass es wirklich einfacher ist, gesperrt zu werden, weil man zu anspruchsvoll ist.

Glücklicherweise habe ich nicht das Recht, ein Verbot auszusprechen, daher beende ich diesen Dialog.

 
Bitte sagen Sie mir, warum die Bestellungen nicht geöffnet werden
void OnTick()
  {
   int pos;
   int rsi;
   int uroven1;
   int uroven2;
   int kolpos;
   uroven1=RSI_uroven1;
   uroven2=RSI_uroven2;

   rsi=iRSI(Symbol(),0,RSI,0,1);

//==================================================================
   for(int pos=0; pos<OrdersTotal(); pos++)
     {
      OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
         kolpos++;

     }
//====================================================================
   if(kolpos==0)
     {
      if(rsi>uroven1 || rsi<uroven1 || rsi>uroven2 || rsi<uroven2)
        {
         OrderSend(Symbol(),OP_BUY,Lot,Ask,30,0,0,"",Magic,0,clrAliceBlue);
         OrderSend(Symbol(),OP_SELL,Lot,Bid,30,0,0,"",Magic,0,clrRed);

        }
     }
  }
Bitte sagen Sie mir, warum die Bestellungen nicht geöffnet werden.
 
edutak:
Bitte sagen Sie mir, warum die Bestellungen nicht geöffnet werden.

Ich habe mindestens 4 Fehler

'RSI_uroven1' - nicht deklarierter Bezeichner 32.mq4 13 12

'RSI_uroven2' - nicht deklarierter Bezeichner 32.mq4 14 12

'RSI' - nicht deklarierter Bezeichner 32.mq4 16 24

'pos' - Variable bereits definiert 32.mq4 19 12

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict
int RSI=23;
int RSI_uroven1=100;
int RSI_uroven2=100;
int Magic=777;
double Lot=0.1;
void OnTick()
  {
   int pos;
   int rsi;
   int uroven1;
   int uroven2;
   int kolpos;
   uroven1=RSI_uroven1;
   uroven2=RSI_uroven2;

   rsi=iRSI(Symbol(),0,RSI,0,1);

//==================================================================
   for(int pos=0; pos<OrdersTotal(); pos++)
     {
      OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
         kolpos++;

     }
//====================================================================
   if(kolpos==0)
     {
      if(rsi>uroven1 || rsi<uroven1 || rsi>uroven2 || rsi<uroven2)
        {
         OrderSend(Symbol(),OP_BUY,NormalizeDouble(Lot,2),Ask,30,0,0,"",Magic,0,clrAliceBlue);
         OrderSend(Symbol(),OP_SELL,NormalizeDouble(Lot,2),Bid,30,0,0,"",Magic,0,clrRed);

        }
     }
  }
//+------------------------------------------------------------------+

все октрывает

1	2015.01.02 09:00	buy	1	0.10	120.42	0.00	0.00	0.00	10000.00
2	2015.01.02 09:00	sell	2	0.10	120.39	0.00	0.00	0.00	10000.00
3	2016.04.04 13:08	close at stop	2	0.10	111.66	0.00	0.00	3.26	10003.26
4	2016.04.04 13:08	close at stop	1	0.10	111.63	0.00	0.00	-11.85	9991.41

 
edutak:
Bitte sagen Sie mir, warum die Bestellungen nicht geöffnet werden.

Zunächst einmal habe ich Ihnen eine normale Funktion gegeben, die die Anzahl der Aufträge zählt, aber Sie verwenden immer noch Ihre falsche Funktion.

Zweitens sind die Bedingungen if(rsi>uroven1 || rsi<uroven1 || rsi>uroven2 || rsi<uroven2) gegenseitig widersprüchlich.

 
Vitalii Ananev:

Zunächst einmal habe ich Ihnen eine normale Funktion gegeben, die die Anzahl der Aufträge zählt, aber Sie verwenden immer noch Ihre falsche Funktion.

Zweitens sind die Bedingungen if(rsi>uroven1 || rsi<uroven1 || rsi>uroven2 || rsi<uroven2) miteinander unvereinbar.

Ich werde normale Funktionen verwenden, das ist erst mal ein Entwurf, für den Tester - ich kopiere einfach in Blöcken, das geht schneller.

Wenn beim Überschreiten des RSI eines der Niveaus eine Order eröffnet wird, und beim Überschreiten eines anderen Niveaus - sie geschlossen und sofort eine andere eröffnet wird, dann besteht kein Widerspruch.

Oder doch nicht?

 
Vladislav Andruschenko:

Ich habe mindestens 4 Fehler

'RSI_uroven1' - nicht deklarierter Bezeichner 32.mq4 13 12

'RSI_uroven2' - nicht deklarierter Bezeichner 32.mq4 14 12

'RSI' - nicht deklarierter Bezeichner 32.mq4 16 24

'pos' - Variable bereits definiert 32.mq4 19 12


Danke, es funktioniert.
 
edutak:

Ich werde normale Funktionen verwenden, dies ist vorerst ein grober Entwurf für den Tester - ich kopiere einfach in Blöcken, so geht es schneller.

Wenn der RSI eines der Niveaus überschreitet, wird ein Auftrag eröffnet, und wenn er eines der anderen Niveaus überschreitet, wird der Auftrag geschlossen und sofort ein anderer eröffnet.

Oder doch nicht?

Denken Sie einfach darüber nach. Nehmen wir an, dass uroven1 = 80; rsi = 30; die Bedingung rsi > 80 oder rsi < 80 bedeutet, dass (30 > 80 [falsch] oder 30 < 80[wahr]) in der Natur nicht existiert. Die Bedingung ist zwar wahr, weil ein ODER-Operator verwendet wird, aber sie ist im Grunde bedeutungslos.

Der zweite Teil des Ausdrucks Angenommen, uroven2 = 20; rsi = 30 (30 > 20 [true] oder 30< 20[false] ) ist der gleiche.

 

Der zweite Teil des Ausdrucks Angenommen, uroven2 = 20; rsi = 30 (30 > 20 [true] oder 30< 20[false] ) ist der gleiche.

Wenn ich "oder" schreibe, meine ich damit, dass der Auftrag bei einem beliebigen Pegelübergang geöffnet wird. Wenn die zweite Bedingung 30<20[false] eintritt, wird der vorherige Auftrag geschlossen und wahr.

Wenn ich es richtig verstehe.

 
Wenn Sie Recht haben, werde ich einen zweiten RSI hinzufügen.
Grund der Beschwerde: