Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1405

 
ifitstrue:

Domanda su

Quale sarebbe l'indice della barra M1 iniziale se dovessi tracciare una linea di tendenza sul passato H1?

E dall'ora di inizio e fine della linea non è chiaro come trovarla.

Scusate, se non mi sto spiegando chiaramente.

È difficile per me.

Oltre agli indici c'è anche il tempo...

 
//---
   for(int j=0;j<OrdersTotal();j++)
     {
      if(OrderSelect(j,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=MAGICZZ || OrderSymbol()!=Symbol()) continue;
   //--- check order type 
      if(OrderType()==OP_BUY)
        {
         //if(OrderProfit()>0.0)
           //{//Print("OrderProfitB()=",OrderProfit());
         if(iClose(NULL,PERIOD_CURRENT,1)-iOpen(NULL,PERIOD_CURRENT,1)>0.0)
           {if(iOpen(NULL,PERIOD_CURRENT,0)-iClose(NULL,PERIOD_CURRENT,0)>0.0)
              {Print("iCloseB()=",iClose(NULL,PERIOD_CURRENT,0));
               if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
                  Print("OrderClose error ",GetLastError());
              }  
           }
        }
      if(OrderType()==OP_SELL)
        {
         //if(OrderProfit()>0.0)
           //{//Print("OrderProfitS()=",OrderProfit());
         if(iOpen(NULL,PERIOD_CURRENT,1)-iClose(NULL,PERIOD_CURRENT,1)>0.0)
           {if(iClose(NULL,PERIOD_CURRENT,0)-iOpen(NULL,PERIOD_CURRENT,0)>0.0)
              {Print("iCloseS()=",iClose(NULL,PERIOD_CURRENT,0));
               if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White))
                  Print("OrderClose error ",GetLastError());
              }
           }
Ciao! 2021.03.01_19:49 GMT+3. Volevo migliorare i risultati del mio sistema di trading. Ma iOpen() e iClose() non sembrano funzionare. Nel tester della strategia, ho controllato l'Expert Advisor, tra 175 trade, solo 81 di loro sembrano essere chiusi dalle condizioni descritte nel codice sopra. Questo codice non funziona. Cosa possiamo fare per farlo funzionare? Che ne dite di chiedere ai programmatori di MetaQuotes? Ora guarderò i log del tester di strategia e posterò come raramente queste funzioni funzionano. Trovato. 20210228.log . Tempo 13:53:02.192, aperto #155, iCloseB()=1.3434. In allegato il file di log. Ora spero che qualcuno possa dirmi cosa fare con queste funzioni iClose() e iOpen() per farle funzionare. Perché il sistema commerciale non è abbastanza efficiente. Questo è tutto per ora. 2021.03.01_20:12 GMT+3.
File:
20210228.log  277 kb
 
Succede su mt5 che su un certo timeframe è il momento di far apparire una nuova barra (e le quotazioni sembrano arrivare), ma ancora non c'è. Che cos'è? Specifiche dei prezzi?
 
ifitstrue:

Domanda su

Quale sarebbe l'indice della barra M1 iniziale se dovessi tracciare una linea di tendenza sul passato H1?

E dall'ora di inizio e fine della linea non è chiaro come trovarla.

Scusate, se non mi sto spiegando chiaramente.

È difficile per me.

H1 ha un tempo di apertura della barra - è iTime()

Per capire l'indice di una barra con questo tempo su M1 c'è iBarShift()

Resta da conoscere la barra minima e massima di M1 usando iHighest() e iLowest()

 
Ciao di nuovo! 2021.03.01_20:24 GMT+3. Ho scritto in questo thread del forum a pagina 1304 che il mio tester della versione 4 è lento. E Vitaly Muzichenko mi ha frainteso. Sto scrivendo l'ora in cui ho finito di scrivere il commento. E non sto mettendo fretta a nessuno. Anche se non c'erano risposte alla mia domanda, ho trovato la risposta per caso. Cosa sto facendo ora con lo strategy tester? Seleziono la casella di controllo "ottimizza" prima di testare l'Expert Advisor. Lo ottimizzo. Anche se non ho bisogno di ottimizzazione al momento. Lo ottimizzo in circa un secondo. Poi deseleziono la casella di controllo "ottimizza". Controllo come funziona l'Expert Advisor. Poi il tester di strategia funziona rapidamente. Non sono quaranta minuti o un'ora. Mi sono sentito obbligato a scrivere questo. Forse sarà utile a qualcuno. Sto scrivendo il mio Expert Advisor nella quarta versione del terminale perché il mio broker ha conti in rubli nella versione 4 del terminale e non nella versione 5. Non voglio fare casini con il dollaro americano: ha un enorme tetto del debito nazionale e il mio broker traduce i miei dollari nei miei rubli a un tasso non di mercato. questo è tutto per ora. 20:39 GMT+3.
 
Николай Никитюк:
Ciao! 2021.03.01_19:49 GMT+3. Volevo migliorare i risultati del mio sistema di trading. Ma sembra che le funzioni iOpen() e iClose() non funzionino. Nel tester della strategia, ho controllato l'Expert Advisor, tra 175 trade, solo 81 di loro sembrano essere chiusi dalle condizioni descritte nel codice sopra. Questo codice non funziona. Cosa possiamo fare per farlo funzionare? Che ne dite di chiedere ai programmatori di MetaQuotes? Ora guarderò i log del tester di strategia e posterò come raramente queste funzioni funzionano. Trovato. 20210228.log . Tempo 13:53:02.192, aperto #155, iCloseB()=1.3434. In allegato il file di log. Ora spero che qualcuno possa dirmi cosa fare con queste funzioni iClose() e iOpen() per farle funzionare. Perché il sistema commerciale non è abbastanza efficiente. Questo è tutto per ora. 2021.03.01_20:12 GMT+3.

Il codice sembra a posto, ma sono confuso dallo slittamento... molto piccolo, metti più slittamento e controlla

 
Alexey Viktorov:
Santo cielo! Volevo qualcosa? Ho chiesto qualcosa? Chi pensi che io sia?
Errore mio, scusate: persona sbagliata, posto sbagliato. )
 
Николай Никитюк:
Ciao! 2021.03.01_19:49 GMT+3. Volevo migliorare i risultati del mio sistema di trading. Ma sembra che le funzioni iOpen() e iClose() non funzionino. Nel tester della strategia, ho controllato l'Expert Advisor, tra 175 trade, solo 81 di loro sembrano essere chiusi dalle condizioni descritte nel codice sopra. Questo codice non funziona. Cosa possiamo fare per farlo funzionare? Che ne dite di chiedere ai programmatori di MetaQuotes? Ora guarderò i log del tester di strategia e posterò come raramente queste funzioni funzionano. Trovato. 20210228.log . Tempo 13:53:02.192, aperto #155, iCloseB()=1.3434. In allegato il file di log. Ora spero che qualcuno possa dirmi cosa fare con queste funzioni iClose() e iOpen() per farle funzionare. Perché il sistema commerciale non è abbastanza efficiente. Questo è tutto per ora. 2021.03.01_20:12 GMT+3.

Provate a riscriverlo così, perché è la stessa cosa.

         if(Close[1]-Open[1]>0.0)
           {
            if(Close[0]-Open[0]>0.0)

O, così è come lo scrivo io.

         if(Close[1]>Open[1])
           {
            if(Close[0]>Open[0])
              {
 
klub2003:

Ciao a tutti!

Ecco il problema:
Il prezzo attraversa la MA verso il basso o verso l'alto.
Ho bisogno di memorizzarlo per poterlo utilizzare in seguito nel calcolo del numero di punti attraversati.

Questo è il modo in cui lo capisco:

double FixPrice; // variabile

bool Fix=false; // marcatore

se ( Fix==false) {

se ( Close[0] > MA_lo ) FixPrice = Close[0];
} // misurare fino a quando il prezzo attraversa la MA

if ( Close[0] < MA_lo ) Fix=true;

if ( Fix==true) FixPrice_L = FixPrice ;

Ed ecco il prossimo ostacolo - il prezzo non è memorizzato!

Visarei molto grato per il vostro aiuto!
//+------------------------------------------------------------------+
//|                                                         Test.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//---

double     FixPrice;        // переменная ТАК БУДЕТ ЗАПОМИНАТЬСЯ. ГЛОБАЛЬНАЯ ПЕРЕМЕННАЯ
bool       Fix = false;      // маркер
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(Fix == false)
     {
      if(Close[0] > MA_lo)
         FixPrice = Close[0];
     }                                                                              // делаем замер пока цена не пересечет МА
   if(Close[0] < MA_lo)
      Fix = true;
   if(Fix == true)
      FixPrice_L = FixPrice ;
//+------------------------------------------------------------------+
  }
//+------------------------------------------------------------------+

Questo è il modo in cui volete che sia memorizzato.

Ma tenete presente che all'apertura di una candela.

Close[0]=Open[0] 
и Close[0]=High [0] и Close[0]=Low[0]



Pertanto, se avete bisogno di dati immediati e in tempo reale, è meglio usare

double Bidd=NormalizeDouble(Bid,Digits); если цена сверху или
double Askk=NormalizeDouble(Askk,Digits); если цена снизу МА

double MA_lo=NormalizeDouble(MA_lo,Digits);

È meglio normalizzare tutti i prezzi, che saranno confrontati nella condizione, così non sarai sorpreso :)

 
MakarFX:

Чтобы перевернуть ФИБО поменяй местами  р1 и р2

С алертом я не помогу(

MakarFX
:

Per invertire FIBO, scambiare p1 e p2

Non posso aiutare con gli avvisi(

Ciao, grazie, ho due soluzioni diverse, la tua è la più semplice....