Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 555

[Eliminato]  
Alexey Viktorov:

Ho letto questi argomenti. Ma non era una discussione, era solo una mancanza di volontà di capire le spiegazioni e i tentativi di dimostrare la colpa del terminale. Le sue parole non erano supportate da nulla. Sei troppo pigro per fare degli screenshot e spiegare chiaramente i tuoi pensieri.

Quali screenshot?! Ho fornito il codice, funziona su MT4 e si blocca su MT5. Il tipo di errore è scritto nel codice che è anche commentato.
Alexey Viktorov  
comp:
Quali screenshot?! Fornito il codice, funziona su MT4 e si blocca con un errore in MT5. Il tipo di errore è scritto nel codice che è anche commentato.

Va bene. Questo è il suo punto di vista. Pensi che tutti debbano fare qualcosa per capire il tuo punto di vista, ma non pensi che sia più facile non discutere con te, ed è davvero più facile essere bannati per essere troppo esigenti.

Per fortuna non ho il diritto di vietare, quindi mi limito a fermare questo dialogo.

[Eliminato]  
Per favore, ditemi perché gli ordini non si aprono
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);

        }
     }
  }
Per favore, ditemi perché gli ordini non si aprono.
Vladislav Andruschenko  
edutak:
Per favore, ditemi perché gli ordini non si aprono.

Ho almeno 4 errori

'RSI_uroven1' - identificatore non dichiarato 32.mq4 13 12

'RSI_uroven2' - identificatore non dichiarato 32.mq4 14 12

'RSI' - identificatore non dichiarato 32.mq4 16 24

'pos' - variabile già definita 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

[Eliminato]  
Vitalii Ananev:

Prima di tutto ti ho dato una funzione normale che conta il numero di ordini, ma tu continui ad usare quella sbagliata.

In secondo luogo le condizioni if(rsi>uroven1 || rsi<uroven1 || rsi>uroven2 || rsi<uroven2) sono reciprocamente inconsistenti.

Userò funzioni normali, questa è una bozza per ora, per il tester - copio solo in blocchi, è più veloce così.

Se all'attraversamento dell'RSI di uno qualsiasi dei livelli si apre un ordine, e all'attraversamento di qualsiasi altro livello - si chiude e si apre immediatamente un altro, allora non c'è contraddizione.

O c'è?

[Eliminato]  
Vladislav Andruschenko:

Ho almeno 4 errori

'RSI_uroven1' - identificatore non dichiarato 32.mq4 13 12

'RSI_uroven2' - identificatore non dichiarato 32.mq4 14 12

'RSI' - identificatore non dichiarato 32.mq4 16 24

'pos' - variabile già definita 32.mq4 19 12


Grazie, funziona.
Vitalii Ananev  
edutak:

Userò funzioni normali, questo è un abbozzo per ora, per il tester - copio solo in blocchi, è più veloce in questo modo.

Se quando RSI attraversa uno qualsiasi dei livelli si apre un ordine e quando attraversa qualsiasi altro livello si chiude e se ne apre immediatamente un altro, allora non c'è contraddizione.

O c'è?

Pensateci. Supponiamo che uroven1 = 80; rsi = 30; la condizione rsi > 80 o rsi < 80 significa che (30 > 80 [falso] o 30 < 80[vero]) non esiste in natura. Anche se la condizione sarà vera, perché usa un operatore OR, ma è essenzialmente senza significato.

La seconda parte dell'espressione Supponiamo che uroven2 = 20; rsi = 30 (30 > 20 [vero] o 30< 20[falso] ) è la stessa.

[Eliminato]  
Se hai ragione, aggiungerò una seconda RSI.