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

 

Qual è il modo corretto di trattare l'errore : array out of range in '... in questa situazione quando si passa a #property strict ?



int limit=rates_total-prev_calculated;

ArrayResize(?,?,?);


for(i=0; i<limit; i++)
 {
  if(Буфер[i]-Буфер[i+1] < 0.0)  Буф2[i]=Буфер[i];
 }
 

Fallo così

int limit = prev_calculated > 0 ? rates_total-prev_calculated : rates_total-1;

Al posto di 1, si può mettere qualsiasi numero tranne lo 0. Più alto è il numero, meno barre saranno contate all'avvio dell'indicatore.

E rimuovere

ArrayResize(?,?,?);

è assolutamente inutile.

 
AlexeyVik:

Fallo così

Al posto di 1, si può mettere qualsiasi numero tranne lo 0. Più alto è il numero, meno barre saranno contate all'avvio dell'indicatore.

E rimuovere

è assolutamente inutile.

Ora capisco. Grazie per il consiglio.
 
ragazzi, c'è un comando t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00"); come posso impostare non le 10:00 di oggi, ma le 10:00 di domani?
 
kocunyc89 : c'è un comando t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00"); come faccio a impostare non oggi le 10:00 ma domani le 10:00? datetime dt=TimeLocal();
datetime t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00") + 24*60*60;

Alert("Ora = ",dt, " Domani alle 10:00 = ",t1);

 
LRA:
kocunyc89 : c'è un comando t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00"); come faccio a impostare non oggi le 10:00 ma domani le 10:00? datetime dt=TimeLocal();
datetime t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 10:00") + 24*60*60;

Alert("Ora = ",dt, " Domani alle 10:00 = ",t1);

Grazie mille!
 
 if (Sob_01_0_1==1 && OrderSelect(ticket3_buy, SELECT_BY_TICKET)==true)
        {
         Alert("Sob_01_0_1=",Sob_01_0_1);
         Alert("здесь код перестает работать?"); 
                   
        if (OrderTakeProfit()>0 && OrderCloseTime()>0)
           {
           Alert("третий ордер на покупку закрыт, событие 011");
           bool close6=OrderClose(ticket3_sell, lot3, Ask, 20, clrRed);
                if (close6==true)
                   Alert("третий ордер на продажу закрыт");
                   else Alert("ошибка закрытия третьего ордера на продажу", GetLastError());
           bool close7=OrderClose(ticket2_sell, lot2, Ask, 20, clrRed);
                if (close7==true)
                   Alert("закрыт второй модифицированный ордер на продажу");
                   else Alert("ошибка закрытия второго модифицированного ордера на продажу ticket2_sell ", GetLastError());
               Sob_01_0_1++;
               Sob011++;
           }
         }
 
bobrush:
Buona sera, potete dirmi qual è l'errore. Il codice smette di funzionare dopoAlert("qui il codice smette di funzionare?");. Cioè quandoticket3_buy chiudein profitto, allora l'istruzione if non viene eseguita.
 

Buona sera a tutti. Domanda di un manichino sulle funzioni iLowest e iHighest. All'inizio, volevo usare queste funzioni per trovare la rottura alto/basso nel mio EA e piazzare un ordine pendente. Tutto funziona con iLowest ma iHighest non imposta gli ordini. Tuttavia, questa è una parola, poiché ho già risolto questo problema in un modo diverso. Ora devo cancellare un ordine in sospeso se è stato cancellato per aprirlo ad un nuovo prezzo. Ho provato ad usare di nuovo le funzioni di cui sopra. Non c'è nessun problema con iLowest e la rimozione di un ordine di acquisto in sospeso; ho problemi con iHighest che rimuove un ordine di vendita - l'ordine viene rimosso quando una condizione non è ancora stata soddisfatta (il prezzo è inferiore al massimo), un nuovo ordine viene inserito, viene rimosso di nuovo e così via. Se il prezzo ha superato il massimo viene cancellato e non ne viene eseguito uno nuovo, ma non appena il prezzo attuale si è spostato sotto il massimo precedente il "fischio" ricomincia.

Le condizioni sono scritte nel modo seguente

if(iHighest(NULL, 0, MODE_HIGH, 70, 2) < iHigh(NULL, 0, 1)

{

DeleteOrders(OP_SELLSTOP, Magic);

}

se(iLowhest(NULL, 0, MODE_HIGH, 70, 2) > iLow(NULL, 0, 1)

{

DeleteOrders(OP_BUYSTOP, Magic);

}

(La funzione di cancellazione è scritta separatamente). Cosa sto facendo di sbagliato, qual è l'errore?

 
Ci scusiamo per l'inconveniente, tutto è stato risolto. Ho scritto la condizione di cancellazione nell'EA in modo leggermente diverso da quello che ho scritto sul forum - non c'era un offset relativo alla barra corrente.