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

 

Buon pomeriggio a tutti.

Sto imparando gli array.

Potete dirmi per favore come rimuovere il valore di cui ho bisogno da un array?

Da quanto ho capito, dopo aver cancellato un valore, la dimensione dell'array sarà ridotta e probabilmente

sarà necessario specificare anche il nuovo valore della dimensione dell'array.

Non ho trovato la funzione che cancella un valore di array nel manuale di riferimento. Puoi per favore mostrarmi com'è l'intera procedura?

in modo che dopo la cancellazione, l'array continui a funzionare.

Grazie.

Ecco un esempio concreto di ciò di cui ho bisogno.

int start()                                             
{

double mass[3]=
{
1.2414,
1.2438,
1.2874
};

double value =  Bid ;
int S = ArrayBsearch(mass,  value,  WHOLE_ARRAY,  0, MODE_ASCEND);

if ( Bid == mass[S]) //Bid = 1.2874
OrderSend(Symbol(),OP_SELL,0.1,Bid ,3,Ask+400*Point,Ask-200*Point,"jfh",123 );
}
// после того как открылся ордер по цене элемента массива с индексом 2 (1.2874)
// КАК УДАЛИТЬ ИЗ МАССИВА ЗНАЧЕНИЕ 1.2874 так что бы массив продолжил функционировать дальше.
 
ANDREY:

Buon pomeriggio a tutti.

Sto imparando gli array.

Potete per favore dirmi come rimuovere il valore di cui ho bisogno dall'array.

Da quanto ho capito, dopo aver cancellato un valore, la dimensione dell'array sarà ridotta e probabilmente

Anche la nuova dimensione dell'array dovrà essere specificata.

Non ho trovato la funzione che cancella un valore di array nel manuale di riferimento. Per favore mostratemi come appare l'intera procedura. per cancellare un valore di un array,

In modo che dopo la cancellazione, l'array continui a funzionare.

Grazie.

Ecco un esempio concreto di ciò di cui ho bisogno.

Potete copiare un array "in se stesso" e poi ridimensionare l'array diminuendolo di 1. Un esempio con la cancellazione dell'indice zero dell'array e il riempimento dell'ultimo, ma si può copiare da qualsiasi indice qualsiasi numero di elementi.

La seconda opzione è sovrascrivere l'ultimo valore nello spazio "liberato" e ridurre anche la dimensione dell'array.

Подскажите про массивы
Подскажите про массивы
  • 2017.12.03
  • www.mql5.com
Я только учусь и на массивах попал в засаду: пытаюсь написать скрипт в котором массив данных будет перезаписываться...
 
Alexey Viktorov:

È possibile copiare un array "su se stesso" e poi ridimensionare l'array diminuendolo di 1. Un esempio è la cancellazione dell'indice zero dell'array e il riempimento dell'ultimo, ma la copia può essere fatta da qualsiasi indice con qualsiasi numero di elementi.

La seconda opzione è sovrascrivere l'ultimo valore nello spazio "liberato" e ridurre anche la dimensione dell'array.

Grazie mille per il suggerimento.
 

Ciao!!! Spiegatemi, anche se non sono un principiante, ma sono terribilmente malato di un solo problema. Sto chiamando l'indicatore dall'indicatore. Quando ricevo una nuova barra con un valore, ottengo valori completamente diversi quando la ricompilo subito. Il ritardo nel calcolo dell'indicatore in base al tempo non porta a nulla. Di conseguenza, non c'è alcuna funzione automatica. La domanda. QUANDO???? Sono così esausto che sono esausto. Cos'è questo incredibile inconveniente... Non ne posso più...

 

Ciao, non riesco a risolvere il problema dello spostamento dei livelli di segnale quando il prezzo li supera. Al momento della compilazione tutto è ok, ma nel tester, quando arriva la condizione "adatto", non cambia nulla. Per favore consigliate cosa c'è di sbagliato nella condizione del prezzo che si muove oltre i livelli di segnale?

//-------------------------выход цены за пределы сигнальных уровней-----------------------------------------------------------------------------------------------
 price=iHigh(Symbol(),PERIOD_M15,0);                                                               //Сигнальный уровень О(Сердцевина)
 ObjectCreate("UrO",OBJ_HLINE,0,0,price);
 ObjectSet("UrO",OBJPROP_COLOR,clrYellowGreen);                               
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 priceA=price+30*Point;                                                                            //Сигнальный уровень А(Максимум)
 ObjectCreate("UrA",OBJ_HLINE,0,0,priceA);
 ObjectSet("UrA",OBJPROP_COLOR,clrDarkSlateBlue); 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
 priceB=price-30*Point;                                                                            //Сигнальный уровень B(Минимум)
 ObjectCreate("UrB",OBJ_HLINE,0,0,priceB); 
 ObjectSet("UrB",OBJPROP_COLOR,clrOrangeRed); 
//--------------------------------------------------------------------------
if((Bid>=priceA) ||(Bid<=priceB)){                                                                 //если цена вышла за одну из ГРАНИЦ, сдвинуть уровни
  ObjectSet("UrO",OBJPROP_PRICE1,iHigh(Symbol(),PERIOD_M15,0));  
                                                                                             

Il livello"UrA" o"UrB" dovrebbe essere spostato al massimo dell'ultima candela su m15, ma non succede. Qualcuno sa perché?

 
vikzip:

Ciao, non riesco a risolvere il problema dello spostamento dei livelli di segnale quando il prezzo li supera. Al momento della compilazione tutto è ok, ma nel tester, quando arriva la condizione "adatto", non cambia nulla. Per favore consigliate cosa c'è di sbagliato nella condizione del prezzo che si muove oltre i livelli di segnale?

Il livello"UrA" o"UrB" dovrebbe essere spostato al massimo dell'ultima candela su m15, ma non succede. Qualcuno sa perché?


Cosa c'è di sbagliato in ObjectMove()?

 
Vitalie Postolache:

Cosa c'è di sbagliato in ObjectMove()?


Grazie!!!)

 
Vitalie Postolache:

Cosa c'è di sbagliato in ObjectMove()?


La funzione è fantastica! Ma la condizione non è soddisfatta per qualche motivo! Qualcuno ne conosce il motivo?

  double price;                                                                                    //цена сердцевины
  double priceA;                                                                                   //цена верхнего сигнального уровня
  double priceB;                                                                                   //цена нижнего сигнального уровня
//+------------------------------------------------------------------------------------------------------------------------------------------------------------
int start(){
//-------------------------выход цены за пределы сигнальных уровней-----------------------------------------------------------------------------------------------

price=iHigh(Symbol(),PERIOD_M15,0);                                                               //Сигнальный уровень О(Сердцевина)
ObjectCreate("UrO",OBJ_HLINE,0,0,price);
ObjectSet("UrO",OBJPROP_COLOR,clrYellowGreen);                                                                                                                               
//-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 priceA=price+30*Point;                                                                            //Сигнальный уровень А(Максимум)
ObjectCreate("UrA",OBJ_HLINE,0,0,priceA);
ObjectSet("UrA",OBJPROP_COLOR,clrDarkSlateBlue); 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
 priceB=price-30*Point;                                                                            //Сигнальный уровень B(Минимум)
ObjectCreate("UrB",OBJ_HLINE,0,0,priceB); 
ObjectSet("UrB",OBJPROP_COLOR,clrOrangeRed); 
 //---------------------------------------------------------------------------------------------------------------------------------------------------------------
if((Bid<=priceB)||(Bid>=priceA)){                                                                 //если цена вышла за одну из ГРАНИЦ
  ObjectsDeleteAll();                                                                             //для примера удаляю все объекты, но этого не происходит!
  }                                                                                               //Почему ведь очевидно на тестере цена выходит за пределы, но ни чего не происходит???
return(0);
}
Qualcuno può spiegare qual è l'errore, per favore?
 

Ciao!

Ho appena iniziato a imparare MQL4. Non riesco a capire perché lo script ignora il pulsante"Allow automatic trading" in MT4 (ver. 4.0 build 1090)

Non riesco a capire questo tipo di costruzione:

int start()
{

     Alert("Привет!");

return;
}

Non spingo il pulsante, ma mostra ancora una finestra con l'avviso. Quando imposto un ordine in uno script, lo lancia su ogni tick senza fermarsi, che il pulsante Autotrading sia premuto o meno.


Ho provato una tale costruzione:


int start()
{

 while(!IsStopped())
    {
    
      Alert("Привет!");

     if(!IsExpertEnabled()) break;
    }


return;
}

All'inizio sembrava funzionare, ma complicando lo script ha anche smesso di funzionare...

Non so se deve essere così, ma non sento la fluidità del lavoro di EA: quando cambio EA, quello vecchio continua a lavorare come se fosse in background, ma forse non l'ho ancora capito.

 
Dimitry-1983:

Ciao!

Ho appena iniziato a imparare MQL4. Non riesco a capire perché lo script ignora il pulsante"Allow automatic trading" in MT4 (ver. 4.0 build 1090)

Non riesco a capire questo tipo di costruzione:

Non spingo il pulsante, ma mostra ancora una finestra con l'avviso. Quando imposto un ordine in uno script, lo lancia ad ogni tick senza fermarsi, che il pulsante Autotrade sia premuto o meno.


Ho provato una tale costruzione:


All'inizio sembrava funzionare, ma complicando lo script ha anche smesso di funzionare...

Non so se deve essere così, ma non sento la fluidità del lavoro di EA: quando cambio EA, quello vecchio continua a lavorare come se fosse in background, ma forse non l'ho ancora capito.

Questo pulsante influisce solo sulle funzioni di trading. Tutto il resto continua a funzionare come dovrebbe.