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

 

Esiste un tale algoritmo di ricalcolo:

   int ic=IndicatorCounted();
   if(Bars-ic-1>1) {ic=reinit();}
   int limit=Bars-ic-1; //BarsPrev=Bars; // кол-во пересчетов
   if(History!=0 && limit>History) limit=History-1; // кол-во пересчетов по истории

   for(int i=limit; i>=1; i--) // цикл по непосчитанным и предпоследнему барам
     {
      int n;
      int iShift=i+Shift;
      
      if (i==0)
      Input[i]=iClose(Symb, Period(), iShift);
      else
      Input[i]=(iHigh(Symb, Period(), iShift)+iLow(Symb, Period(), iShift))/2;
       }

Da quanto ho capito, conta tutte le barre tranne l'ultima.

Puoi dirmi come fare in modo che ricalcoli l'ultima barra a i=0 (c'è già una condizione per questo nel ciclo)?

 
Grazie mille per le risposte)))) Ho sostituito iClose con Close [0] e ha funzionato....though strano...))))) grazie ancora)))
 
Lisi4ka330:
Grazie mille per le risposte)))) Ho sostituito iClose con Close [0] e tutto ha funzionato....though strano...))))) grazie ancora)))
Per la cronaca, iClose(NULL, 0, 1) è Close[1] non Close[0]
 
Cmu4:

Esiste un tale algoritmo di ricalcolo:

Da quanto ho capito, conta tutte le barre tranne l'ultima.

Puoi dirmi come fargli ricalcolare l'ultima barra a i=0 (c'è già una condizione per questo nel ciclo)?

no, stai scrivendo >= 1 (maggiore o uguale alla 1a barra, cioè, non arrivi a 0... cambiare la condizione in >=0

SZ


Di cosa si tratta?

int iShift=i+Shift;
 
Aleksander:

No, si scrive >= 1 (maggiore o uguale a 1 bar, cioè non si arriva a 0... cambiare la condizione in >=0

SZ


A cosa serve quello?

Giusto, ho completamente dimenticato i miei "esperimenti". Ha corretto da 0 a 1 un po' di tempo fa ed è ancora lì. Grazie!

iShift è uno spostamento, impostato in extern.

 
Cmu4:

Giusto, ho dimenticato tutti i miei "esperimenti". L'ho cambiato da 0 a 1 un po' di tempo fa ed è ancora lì. Grazie!

iShift è uno spostamento, impostato nell'esterno.

Sì... ma tu scrivi che devi guardare la barra 0...

quindi rimuovere

f (i==0)
      Input[i]=iClose(Symb, Period(), iShift);

il tuo cambio da lì :) - mettere 0...

f (i==0)
      Input[i]=iClose(Symb, Period(), 0);
 
Ho questa domanda. Il numero di serie delle transazioni nel terminale è assegnato in modo permanente o cambia? Per esempio, se ho aperto tre trade con i numeri 0 - 1 - 2 e ho chiuso il trade numero 1, i numeri 0 e 2 rimarranno o diventeranno 0 e 1?
 
sì, muoversi nella coda, e non solo le transazioni, gli oggetti grafici e le variabili globali si comportano allo stesso modo.
 

Per favore, aiutatemi. Le condizioni seguenti possono essere soddisfatte?

Dobbiamo fare in modo che se il prezzo corrente attraversa la MA, allora l'algoritmo in { } viene attivato:

if (Bid==iMA(0,0,ma_period,ma_shift,ma_method,PRICE_MEDIAN,0)
{
 ...
}

if (Ask==iMA(0,0,ma_period,ma_shift,ma_method,PRICE_MEDIAN,0)
{
 ...
}
 
orb:

Per favore, aiutatemi. Le condizioni seguenti possono essere soddisfatte?

Dobbiamo fare in modo che se il prezzo corrente attraversa la MA, l'algoritmo in { } viene attivato:


Non fa differenza da che parte passa? Tattica geniale, credo...

Expert Advisors con MA crossing e altri indicatori in kodobase sono molti, non c'è bisogno di rifare la ruota ;)