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

 
Valeriy Yastremskiy:

La logica è zoppa, tutto è lì, sia gli array per i biglietti che i tipi di ordine. Solo che non viene riempito quando gli ordini vengono aperti, e l'array viene azzerato nella funzione TicketLimit per qualche motivo. A prima vista, sembra così.

Com'è come gli scacchi? Ci manca una mossa. Cercherò di analizzarlo. Grazie, Valery.

 

Come posso ottenere le statistiche del bar nel modo giusto?

L'ho fatto, conta correttamente il numero, ma quando cerco di usare i dati ottengo "0".

//---
   int i,limit;
   datetime Start=0;
   if((rates_total-prev_calculated-1)<=0)return(0);
   limit=rates_total-prev_calculated-1;
   for(i=limit; i>=0; i--) 
     {
      Label1Buffer[i]=open[i];
      Label2Buffer[i]=close[i];
      if(Start!=time[i])
        {
         a+=1;                                        // кол-во баров
         if(Label1Buffer[i] <Label2Buffer[i]) u+=1;   // восходящие бары
         if(Label1Buffer[i] >Label2Buffer[i]) d+=1;   // нисходящие бары
         if(Label1Buffer[i]==Label2Buffer[i]) b+=1;   // Дожи
         Start=time[i];
        }
      if(Start==time[i]&&a<=limit)
        {
         Print(i," / ",u," / ",d," / ",b," / ",a," / ",limit);//
        }
      if(a==limit) 
        {
         ObjectCreate(0,"STAT1",OBJ_TEXT,0,time[0],high[0]+750*Point);
         ObjectSetText("STAT1",d,8,"Arial",clrBlack);
         ObjectCreate(0,"STAT2",OBJ_TEXT,0,time[0],low[0]-250*Point);
         ObjectSetText("STAT2",u,8,"Arial",clrBlack);
         Print(d/u);
        }
     }
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 0
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 1 / 3041 / 2971 / 41 / 6053 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 2 / 3041 / 2970 / 41 / 6052 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 3 / 3041 / 2969 / 41 / 6051 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 4 / 3041 / 2968 / 41 / 6050 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 5 / 3041 / 2967 / 41 / 6049 / 6053
2021.08.11 17:09:46.884 StatisticsADR EURUSD,Daily: 6 / 3041 / 2966 / 41 / 6048 / 6053

Forse c'è un modo normale, ma io "reinvento la ruota")

Si prega di avvisare.

 
MakarFX:

Come posso ottenere le statistiche del bar nel modo giusto?

L'ho fatto, conta correttamente il numero, ma quando cerco di usare i dati ottengo "0".

Forse c'è un modo normale, ma io "reinvento la ruota")

Si prega di avvisare.

Sembra che abbiate tutte variabili int e che il risultato della divisione sia inferiore a 0. Quindi, 0;

Provate:

Print((double)d/u);
 
Galim_V:

Come negli scacchi? Manca una mossa. Cercherò di dargli un senso. Grazie, Valery.

в глобальной области
int ind=0, Ind=0;
......

 if(ParSar>MaxClose&&chekt==1){

    ticket=_OrderSend(NULL,OP_BUYSTOP,0.01,MaxClose+(spread*Point()),0);
ind++;
_Tacket[ind]=ticket; Ind=ind;
  }
    }
    if(MinClose!=0){
   if(ParSar<MinClose&&chekt==1){
    _price= NormalizeDouble( MinClose-(spread*Point()),Digits);
    ticket=_OrderSend(NULL,OP_SELLSTOP,0.01,_price,0);
ind++;
_Tacket[ind]=ticket; Ind=ind;
........

for(i=Ind,i<1,Ind--) // вместо Ind OrderTotal правильнее, если есть и другие ордера в терминале
{OrderSelect( _Tacket[i], SELECT_BY_TICKET )
проверки и действия
}
// Здесь запомнить тикет в массив _тикет и тип ордера тоже и запомнить последний индекс массива!!!

 //А потом в Ордер селект подставлять значение массива _тикет) Цикл по индексу массива _тикет от 1 до последнего индекса.
 
Mihail Matkovskij:

Sembra che abbiate tutte variabili int e che il risultato della divisione sia inferiore a 0. Quindi, 0;

Provate:

Grazie.
 
Grazie ancora per tutto il vostro aiuto sul mio progetto precedente.

Ecco un'altra idea per il prossimo EA, forse qualcuno ha già familiarità con la strategia ORBO (open Range Brake out)?

 

Potete dirmi se c'è una funzione che semplifica questa definizione per aprire un ordine?

if(Bid < OpenPrice && Bid > OpenPrice-10*Point)
if(Ask > OpenPrice && Ask < OpenPrice+10*Point)
L'idea è che un ordine non venga aperto se il prezzo non rientra in questo intervallo
 
MakarFX:

Potete dirmi se c'è una funzione che semplifica questa definizione per aprire un ordine?

L'idea è che un ordine non viene aperto se il prezzo non cade in questo intervallo

Disegnalo sulla carta.

OpenPrice _________________________

Offerta _________________________

OpenPrice-10*_Point________________________


Dall'immagine si può vedere che OpenPrice - Bid non dovrebbe essere superiore a 10*_Point

 
Alexey Viktorov:

Bene, disegnatelo su carta.

OpenPrice _________________________

Offerta _________________________

OpenPrice-10*_Point________________________


Dall'immagine si può vedere che OpenPrice - Bid non dovrebbe essere più di 10*_Point

differenza di modulo. Senza modulo solo la zona superiore rientra nella condizione. OpenPrice - Bid |> 10*_Point condizione di apertura

 
Alexey Viktorov:

Beh, disegnatelo su carta.

OpenPrice _________________________

Offerta _________________________

OpenPrice-10*_Point________________________


Dall'immagine si può vedere che OpenPrice - Bid non dovrebbe essere superiore a 10*_Point

Mi stupisci.