Indicateur Questions diverses - page 6

 
Il a répondu en regardant de plus près.
 
Marco vd Heijden:

S'il s'agit de changer de cadre temporel, le timer n'est pas une bonne option car il est détruit lors du changement de cadre.

Vous pouvez créer vos lignes dans la fonction OnInit(), et les mettre à jour dans les fonctions OnTick() ou OnTimer().

Notez également l'utilisation de ObjectsDeleteAll() dans la fonction OnDeint() pour vous assurer que tout est supprimé avant d'être recréé dans la nouvelle image.

---

De plus, si vous souhaitez mettre à jour les lignes à chaque fois qu'une nouvelle bougie apparaît, vous pouvez combiner l'exemple de la page précédente avec le dernier pour obtenir ceci :

...

S'il y a d'autres problèmes, veuillez montrer du code.

J'ai fait des recherches sur vos derniers commentaires.

Encore deux excellents commentaires. Il semble que le code soit similaire (votre commentaire n° 18) mais il est très différent pour moi.

Donc, oui, je sentais que le 'Timer' était détruit lorsque je changeais de cadre. Mais c'est très utile pour moi parce que mon indicateur se met à jour une fois par PERIOD_**'s.

Ouais ! J'ai déjà créé les lignes principales dans la fonction spéciale init(), et les mises à jour dans la fonction OnTimer().

(vous pouvez me comprendre plus clairement à partir du code ci-dessous)

...de nouvelles arises de bougies que vous pouvez combiner...

S'il y a d'autresproblèmes...

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

Comme je l'ai dit, il y a un problème qui prend plus de temps. Pour l'instant, je dois vous montrer une partie du code de mon indicateur. Et je n'utilise pas 'switch operator & ObjectMove()'dans mon indicateur.

@Marco

S'il vous plaît laissez-moi savoir si le code ci-dessous est bon ou quoi ?

Quel est votre conseil,pourrais-je commencer à chercher largement vos deux derniers commentaires et pourrais-je impliquer 'switch() et ObjectMove()' dans mon indicateur ? (Pourquoi je demande avant de le faire ? - parce que cela prend beaucoup de temps).

(comme vous le voyez, j'ai tiré plus d'avantages de votre commentaire n° 18 - et maintenant je suis confronté à un dilemme entre mon code ci-dessous et vos deux derniers grands commentaires).

//|+--------------------------------------------------------------------------------+
int  init()
{
    EventSetMillisecondTimer( 1250 );
    _CreateLines_M5();

    return(INIT_SUCCEEDED);
}
//|+--------------------------------------------------------------------------------+
int  start()
{
    return(0);
}
//|+--------------------------------------------------------------------------------+
int  deinit()
{
    ObjectsDeleteAll( 0, _prefix );
    return(0);
}
//|+--------------------------------------------------------------------------------+
void OnTimer()
{
    //---
    if ( _dt_Prd_M5 != iTime( Symbol(), _prd_M5, 0 ) )
    {
         _dt_Prd_M5  = iTime( Symbol(), _prd_M5, 0 );
         _CreateLines_M5();
    }
    return;
}
//|+--------------------------------------------------------------------------------+
void _CreateLines_M5( )
{
    //---
    int _dayCnt_M5 = _prd_cnt + 0;
    int    _cnt_M5 = iBarShift( Symbol(), 0, iTime( Symbol(), PERIOD_W1, _dayCnt_M5 ) );
    for ( i = 0; i < _cnt_M5; i++ )
    {
        _time_M5     = Time[i];
        _prdCvrt_M5  = PeriodSeconds( _prd_M5 );
        _timeCvrt_M5 = _time_M5 - ( _time_M5 % _prdCvrt_M5 ) + _prdCvrt_M5;

        _vlineName_M5 = _prefix + "PERIOD_M5 - " + TimeToStr( _timeCvrt_M5, TIME_DATE|TIME_MINUTES );

        if ( _Period < PERIOD_M15 )
        {
            if (
                    ...
                    TimeHour( _timeCvrt_M5 ) == 12
               )
            {
                ObjectCreate ( _vlineName_M5, OBJ_VLINE, 0, _timeCvrt_M5, 0  );
            }
        }
    }
    return;
}

Bonne chance à vous.

 
Keith Watford:

Je ne sais pas ce qu'il en est pour les autres, mais je trouve votre mélange de polices, de couleurs, de gras et d'italique, etc. distrayant et ennuyeux. En fait, je n'ai pas pris la peine de lire ce message.

Je suis tout à fait d'accord, dès le début du sujet, je "saute" au-dessus de tous ces commentaires.
 
Max Enrik:

J'ai fait des recherches sur vos derniers commentaires.

Encore 2 grands commentaires. Il semble que ce code soit similaire (votre commentaire #18) mais c'est très différent pour moi.

Donc, oui, je sentais que le 'Timer' était détruit lorsque je changeais de cadre. Mais c'est très utile pour moi parce que mon indicateur se met à jour une fois par PERIOD_**'s.

Ouais ! J'ai déjà créé les lignes principales dans la fonction spéciale init(), et les mises à jour dans la fonction OnTimer().

(vous pouvez me comprendre plus clairement à partir du code ci-dessous)

...de nouvelles arises de bougies que vous pouvez combiner...

S'il y a d'autresproblèmes...

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

Comme je l'ai dit, il y a un problème qui prend plus de temps. Pour l'instant, je dois vous montrer une partie du code de mon indicateur. Et je n'utilise pas 'switch operator & ObjectMove()'dans mon indicateur.

@Marco

S'il vous plaît laissez-moi savoir si le code ci-dessous est bon ou quoi ?

Quel est votre conseil,pourrais-je commencer à chercher largement vos deux derniers commentaires et pourrais-je impliquer 'switch() et ObjectMove()' dans mon indicateur ? (Pourquoi je demande avant de le faire ? - parce que cela prend beaucoup de temps).

(comme vous le voyez, j'ai tiré plus d'avantages de votre commentaire n° 18 - et maintenant je suis confronté à un dilemme entre mon code ci-dessous et vos deux derniers grands commentaires).

//|+--------------------------------------------------------------------------------+
int  init()
{
    EventSetMillisecondTimer( 1250 );
    _CreateLines_M5();

    return(INIT_SUCCEEDED);
}
//|+--------------------------------------------------------------------------------+
int  start()
{
    return(0);
}
//|+--------------------------------------------------------------------------------+
int  deinit()
{
    ObjectsDeleteAll( 0, _prefix );
    return(0);
}
//|+--------------------------------------------------------------------------------+
void OnTimer()
{
    //---
    if ( _dt_Prd_M5 != iTime( Symbol(), _prd_M5, 0 ) )
    {
         _dt_Prd_M5  = iTime( Symbol(), _prd_M5, 0 );
         _CreateLines_M5();
    }
    return;
}
//|+--------------------------------------------------------------------------------+
void _CreateLines_M5( )
{
    //---
    int _dayCnt_M5 = _prd_cnt + 0;
    int    _cnt_M5 = iBarShift( Symbol(), 0, iTime( Symbol(), PERIOD_W1, _dayCnt_M5 ) );
    for ( i = 0; i < _cnt_M5; i++ )
    {
        _time_M5     = Time[i];
        _prdCvrt_M5  = PeriodSeconds( _prd_M5 );
        _timeCvrt_M5 = _time_M5 - ( _time_M5 % _prdCvrt_M5 ) + _prdCvrt_M5;

        _vlineName_M5 = _prefix + "PERIOD_M5 - " + TimeToStr( _timeCvrt_M5, TIME_DATE|TIME_MINUTES );

        if ( _Period < PERIOD_M15 )
        {
            if (
                    ...
                    TimeHour( _timeCvrt_M5 ) == 12
               )
            {
                ObjectCreate ( _vlineName_M5, OBJ_VLINE, 0, _timeCvrt_M5, 0  );
            }
        }
    }
    return;
}

Bonne chance à toi.

Si ça marche et si ça ne marche pas, continuez à essayer.

 
Marco vd Heijden:

Si ça marche et si ça ne marche pas, continuez à essayer.

Un grand merci !
 

#L'heure du courtier - Réouverture

J'ai lu quelques forums ici et là. Peut-être ma solution l'un ou l'autre d'entre eux. Mais je n'ai pas compris.

Avant ce commentaire - j'ai essayé une fois de plus. Mais je ne trouve pas de solution.
Donc, j'ai 2 courtiers, A et B.

  • A : Les objets Vline placent l'heure correcte. Lequel je veux. ex : Temps 2017.02.18 0:00 aussi objet Vline placé même temps.
  • B : L'objet Vline place le mauvais temps (peut-être que je me trompe). ex : Heure 2017.02.18 1:00 mais l'objet Vline est à 0:00.
Donc si quelqu'un comprend ma préoccupation, tout commentaire serait mieux pour moi.

Passez un bon week-end.

 
Max Enrik:

#L'heure du courtier - Réouverture

J'ai lu quelques forums ici et là. Peut-être ma solution l'un ou l'autre d'entre eux. Mais je n'ai pas compris.

Avant ce commentaire - j'ai essayé une fois de plus. Mais je ne trouve pas de solution.
Donc, j'ai 2 courtiers, A et B.

  • A : Les objets Vline placent l'heure correcte. Lequel je veux. ex : Temps 2017.02.18 0:00 aussi objet Vline placé même temps.
  • B : L'objet Vline place le mauvais temps (peut-être que je me trompe). ex : Heure 2017.02.18 1:00 mais l'objet Vline est à 0:00.
Donc si quelqu'un comprend ma préoccupation, tout commentaire serait mieux pour moi.

Passez un bon week-end.

J'aurais besoin de voir le code
 

Le code ci-dessous me donne des résultats différents dans deux Brokers différents.
( Mon commentaire précédent pourrait vous aider à me comprendre )

Merci d'avance.

void PerioDay()
  {
// High

   ObjectSet("PeriodHigh",OBJPROP_PRICE1,iHigh(Symbol(),PERIOD_D1,0));
   ObjectSet("PeriodHigh",OBJPROP_PRICE2,iHigh(Symbol(),PERIOD_D1,0));

   ObjectSet("PeriodHigh",OBJPROP_TIME1,TimeCurrent());
   ObjectSet("PeriodHigh",OBJPROP_TIME2,TimeCurrent() -(TimeCurrent()-iTime(Symbol(),PERIOD_D1,0)));

// Low

   ObjectSet("PeriodLow",OBJPROP_PRICE1,iLow(Symbol(),PERIOD_D1,0));
   ObjectSet("PeriodLow",OBJPROP_PRICE2,iLow(Symbol(),PERIOD_D1,0));

   ObjectSet("PeriodLow",OBJPROP_TIME1,TimeCurrent());
   ObjectSet("PeriodLow",OBJPROP_TIME2,TimeCurrent() -(TimeCurrent()-iTime(Symbol(),PERIOD_D1,0)));
  }
 

Si vous voulez dire que les valeurs de iHigh et iLow diffèrent entre les courtiers, c'est assez courant.

2 raisons :

1. Les prix varient légèrement entre les courtiers, et

2. Si les serveurs des courtiers ont des décalages GMT différents, les barres commencent à des heures différentes.

 
honest_knave:

Si vous voulez dire que les valeurs de iHigh et iLow diffèrent entre les courtiers, c'est assez courant.
2 raisons :
1. Les prix varient légèrement entre les courtiers, et
2. Si les serveurs des courtiers ont des décalages GMT différents, les barres commencent à des heures différentes.

Je veux dire seulement un temps différent.

Il n'y a donc aucune chance de résoudre ce problème, s'il vous plaît ?

Merci beaucoup.