[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 125

 

Il existe un tel algorithme de recalcul :

   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;
       }

Si je comprends bien, il compte toutes les barres sauf la dernière.

Pouvez-vous me dire comment faire pour qu'il recalcule la dernière barre à i=0 (il y a déjà une condition pour cela dans la boucle) ?

 
Merci beaucoup pour les réponses)))) J'ai remplacé iClose par Close [0] et tout a fonctionné....mais étrangement...))))) merci encore))))
 
Lisi4ka330:
Merci beaucoup pour les réponses)))) J'ai remplacé iClose par Close [0] et tout a fonctionné....mais étrangement...))))) merci encore))))
Pour mémoire, iClose(NULL, 0, 1) est Close[1] et non Close[0].
 
Cmu4:

Il existe un tel algorithme de recalcul :

Si je comprends bien, il compte toutes les barres sauf la dernière.

Pouvez-vous me dire comment faire pour qu'il recalcule la dernière barre à i=0 (il y a déjà une condition pour cela dans la boucle) ?

non, vous écrivez >= 1 (supérieur ou égal à la 1ère mesure, c'est-à-dire que vous n'arrivez pas à 0... changer la condition en >=0

SZ


De quoi s'agit-il ?

int iShift=i+Shift;
 
Aleksander:

Non, on écrit >= 1 (Plus grand que ou égal à 1 barre, c'est-à-dire qu'on n'arrive pas à 0... changer la condition en >=0

SZ


C'est pour quoi faire ?

C'est vrai, j'ai complètement oublié mes "expériences". J'ai corrigé 0 à 1 il y a un moment et c'est toujours là. Merci !

iShift est un shift, placé en externe.

 
Cmu4:

C'est vrai, j'ai oublié toutes mes "expériences". Je l'ai changé de 0 à 1 il y a un moment et il est toujours là. Merci !

iShift est un décalage, défini dans l'externe.

ouais... mais vous écrivez que vous devez regarder la barre de 0...

puis retirer

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

votre levier de vitesse à partir de là :) - mettre 0...

f (i==0)
      Input[i]=iClose(Symb, Period(), 0);
 
J'ai une question. Le numéro de série des transactions dans le terminal est-il attribué de façon permanente ou change-t-il ? Par exemple, si j'ai ouvert trois transactions avec les numéros 0 - 1 - 2 et fermé la transaction numéro 1, les numéros de transaction 0 et 2 resteront ou deviendront 0 et 1 ?
 
oui, les déplacements dans la file d'attente, et pas seulement les transactions, les objets graphiques et les variables globales se comportent de la même manière.
 

Aidez-moi, s'il vous plaît. Les conditions ci-dessous peuvent-elles être remplies ???

Nous devons faire en sorte que si le prix actuel traverse la MA, alors l'algorithme en { } est déclenché :

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:

Aidez-moi, s'il vous plaît. Les conditions ci-dessous peuvent-elles être remplies ???

Nous devons faire en sorte que si le prix actuel traverse la MA, l'algorithme en { } soit déclenché :


Cela ne fait-il aucune différence de quel côté il traverse ? Une tactique de génie, je suppose...

Les conseillers experts avec croisement de MA et autres indicateurs dans kodobase sont nombreux, pas besoin de refaire la roue ;)

Raison: