Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 852

 
Come faccio a trovare il valore massimo di High[] tra diverse barre?
 

È meglio usare le nuove caratteristiche CopyHigh di mql4 e la funzione matematica MathMax

O iHighest

 

Buongiorno, ditemi dov'è l'errore.

/////////////////////////////////////////////////////////////////////////////////////////////////////

  //////////////////////////////////Зона консолидации/////////////////////////////////////////////////

  ///////////////////////////////////////////////////////////////////////////////////////////////////

  if(Hour()>=10)

  {

   for(x9=2; x9<=5; x9++)

   {

    x10=Hour()-x9;//x10 -номер свечи от которой считаем восемь свечей назад

    if(x10>=0)

    {

     int Minn=iLowest(NULL, PERIOD_H1, MODE_LOW , x10+8, x10);

     int Maxx=iHighest(NULL, PERIOD_H1, MODE_HIGH, x10+8, x10);

     z11 =iHigh(NULL,PERIOD_H1,Maxx);

     z12 =iLow(NULL, PERIOD_H1,Minn);

     ZPB     =iTime(NULL,PERIOD_H1,x10+8);

     ZPB1     =iTime(NULL,PERIOD_H1,x10);

     if(z11-z12<=z10)

     {

      y4=ObjectCreate("Зона консолидации",OBJ_RECTANGLE,0,0,0,0,0);

      y4=ObjectSet("Зона консолидации",OBJPROP_WIDTH,2);

      y4=ObjectSet("Зона консолидации",OBJPROP_COLOR,Blue);

      y4=ObjectSet("Зона консолидации",OBJPROP_BACK,true);

      y4=ObjectMove("Зона консолидации",0,ZPB,z11);

      y4=ObjectMove("Зона консолидации",1,ZPB1,z12);

     }

    }

   }

  }

  ////////////////////////////////////////////////////////////////////////////////////////////////////

L'idea è che ad ogni iterazione il codice dovrebbe controllare la larghezza del canale e se è minore o uguale al valore corrente(z11-z12<=z10), un rettangolo dovrebbe essere disegnato, ma l'output è che tutte le iterazioni sono passate prima, e poi c'è un controllo di coerenza.
 
AlexeyVik:

È meglio usare le nuove caratteristiche CopyHigh di mql4 e la funzione matematica MathMax

O iHighest

Se CopyHigh, allora ArrayMaximum, IMHO...
 

Per favore, consigliate come trattare l'errore numero 1 (ERR_NO_RESULT Nessun errore, ma risultato sconosciuto)?

Quando un ordine sta perdendo più di $1 (100 pips a 0.01 lot) su EURUSD, il mio Expert Advisor cerca di modificare l'ordine (mettere il TakeProfit dell'ordine al suo prezzo aperto).

Ricevo questo errore, cosa devo fare?

 
evillive:
Se CopyHigh, allora ArrayMaximum, IMHO...
Sì, è quello che stavo pensando... Ci possono essere alcuni errori e malintesi. Circa un mese e mezzo fa c'era la stessa domanda sul quinto forum. Così lì ho parlato di ArrayMaximum, e qui un po' mi sono confuso...
 

Ciao, sto lavorando con 2000 medie mobili(MAs).

Il compito è quello di calcolare il numero di ripetizioni del prezzo MA su Close[1].

- Come posso implementare questo compito con risorse minime.

 
Top2n:

Ciao, sto lavorando con 2000 medie mobili (MAs).

Il compito è quello di calcolare il numero di ripetizioni del prezzo MA su Close[1].

- Come posso implementare questo compito con risorse minime.

Se non usiamo il periodo 1 sui prezzi di chiusura, il numero di ripetizioni sarà zero. Ma se consideriamo di entrare in una certa gamma, il compito può essere risolvibile e più interessante. In alternativa, troviamo i valori massimi e minimi. Dividiamo la differenza per l'intervallo. Poi definiamo un intervallo che cade in ogni muving (considereremo una matrice che corrisponde a intervalli). L'indice della matrice con il numero massimo di risultati è il vincitore. Forse non sono stato molto chiaro. Il compito doveva essere risolto in un argomento separato. Ci possono essere diverse varianti di soluzione. E in futuro qualcuno potrebbe averne bisogno. E qui non troveranno la fine dopo.
 

Ciao, leggendo il tutorial, sono arrivato alle variabili GV. Non riesco a capire come funzionano. Per esempio, il tutorial dice che le variabili GV possono essere solo di tipo double. Ok, doppio quindi doppio). Ma poi quando elencano le funzioniGlobalVariableSet(),GlobalVariableGet(),GlobalVariableDel() scrivono che una di esse restituisce tempo, un'altra restituisce bool, ecc. Mi sono confuso nella mia testa, non capisco come sono organizzati. Ho anche iniziato a studiare MQL4 di recente, ho un sacco di nuove informazioni nella mia testa. Se possibile, spiegatemi un esempio di uno dei problemi in un libro di testo (o uno dei vostri):

Compito 24. Diversi Expert Advisors lavorano nel terminale simultaneamente. L'importo del deposito è di 10 000 dollari. Il valore totale di tutti gli ordini aperti non deve superare il 30% dell'importo del deposito. Ad ogni Expert Advisor dovrebbe essere assegnata la stessa quantità di denaro. Creare un programma Expert Advisor contenente il calcolo della quantità di denaro allocato per il trading.

intEsperti;//Numero di consiglieri esperti. di esperti

double Depo=10000.0, // deposito specificato

Persistente=30,// percentuale data

Soldi;// Fondi che si stanno cercando.

string Quantity="GV_Quantity"; // Nome della variabile GV

//--------------------------------------------------------------------

int init()//Speciale. funzione init

{

Experts=GlobalVariableGet(Quantity); // Ottieni il valore del testo.

Experts=Experts+1; // Numero di esperti.

GlobalVariableSet(Quantity, Experts); // Nuovo valore

Money=Depo*Persent/100/Experts; // Exp.

Alert("Per l'esperto nella finestra ", Symbol()," assegnato ",Money);

ritorno;// Uscire da init()

}

//--------------------------------------------------------------------

int start()// Speciale. funzione inizio

{

int New_Experts= GlobalVariableGet(Quantity);// Nuovo numero di esperti.

if (Experts!=New_Experts) // Se cambiato

{

Experts=New_Experts; // Ora il numero corrente è

Money=Depo*Persent/100/Experts; // Nuovo valore di exper.

Alert("Nuovo valore per l'esperto ",Symbol(),": ",Money);

}

/*

...

Il codice principale dell'Expert Advisor deve essere specificato qui,

che utilizza il valore della variabile Money

...

*/

ritorno;//uscita da start()

}

//--------------------------------------------------------------------

int deinit()//Propria. funzione deinit()

{

se (Esperti ==1)// Se solo un esperto..

GlobalVariableDel(Quantity); //...cancella le variabili GV

else// Altrimenti..

GlobalVariableSet(Quantity, Experts-1); //...diminuire di 1

Alert("EA viene scaricato dalla finestra ",Symbol()); // Notifica lo scarico

ritorno;// Uscire da deinit()

}

 
Vinin:
Se non usate il periodo 1 sui prezzi di chiusura, il numero di ripetizioni sarà zero. Ma se contate di colpire qualche gamma, allora il problema potrebbe essere risolvibile e più interessante. In alternativa, possiamo trovare i valori massimi e minimi. Dividiamo la differenza per l'intervallo. Poi definiamo un intervallo che cade in ogni muving (considereremo una matrice che corrisponde a intervalli). L'indice della matrice con il massimo numero di risultati è il vincitore. Forse non sono stato molto chiaro. Il compito doveva essere risolto in un argomento separato. Ci possono essere diverse varianti di soluzione. E in futuro qualcuno potrebbe averne bisogno. E qui non troveranno la fine dopo.

Dovrò pensarci, grazie.

argomento separato - https://forum.mql4.com/ru/66882