Indicatore Domande varie - pagina 6

 
Egli ha risposto guardare più da vicino.
 
Marco vd Heijden:

Beh, se si tratta di passare da un fotogramma all'altro, allora il timer non è una buona opzione perché il timer viene distrutto quando si cambia fotogramma.

Puoi creare le tue linee nella funzione OnInit(), e aggiornarle nelle funzioni OnTick() o OnTimer().

Notate anche la funzione ObjectsDeleteAll() nella funzione OnDeint() che farà in modo che tutto venga rimosso prima di essere creato nuovamente nel nuovo frame.

---

Inoltre, se volete aggiornare le linee ogni volta che si presenta una nuova candela, potete combinare l'esempio della pagina precedente con l'ultimo per ottenere questo:

...

Se ci sono altri problemi, per favore mostra del codice.

Ho studiato i tuoi ultimi commenti.

Altri 2 grandi commenti. Sembra che il codice sia simile (il tuo commento #18) ma è molto diverso per me.

Quindi, sì, mi sentivo 'Timer' distruggere quando cambio cornice. Ma questo è molto utile per me perché il mio indicatore aggiorna una volta in un PERIODO_**'s.

Sì! Ho già creato le linee principali nella funzione speciale init(), e le aggiorno nella funzione OnTimer().

(potete capirmi più chiaramente dal codice qui sotto)

...nuove candele si possono combinare...

Se ci sono altriproblemi...

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

Come ho detto c'è un problema che richiede più tempo. In questo momento ho bisogno di mostrarvi un po' del mio codice indicatore. E non uso 'switch operator & ObjectMove()'nel mio indicatore.

@Marco

Per favore fammi sapere se il codice qui sotto è buono o cosa?

Qual è il tuo consigliopotrei iniziare la ricerca ampiamente i tuoi ultimi due commenti e potrei coinvolgere 'switch() e ObjectMove()' al mio indicatore? (Perché lo chiedo prima di farlo? - perché ci vuole molto tempo).

(come vedi ho ottenuto più benefici dal tuo commento #18 - e ora sono di fronte al dilemma tra il mio codice e i tuoi ultimi due grandi commenti)

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

Tutto il meglio per te amico.

 
Keith Watford:

Non so gli altri, ma trovo il tuo mix di caratteri, colori, grassetto e corsivo ecc. distraente e fastidioso. Infatti non ho potuto essere disturbato a leggere questo post.

Completamente d'accordo, dall'inizio del topic sto "saltando" sopra tutti questi commenti.
 
Max Enrik:

Ho ricercato i vostri ultimi commenti.

Altri 2 grandi commenti. Sembra che il codice sia simile (il tuo commento #18) ma è molto diverso per me.

Quindi, sì, mi sentivo 'Timer' distruggere quando cambio cornice. Ma questo è molto utile per me perché il mio indicatore aggiorna una volta in un PERIODO_**'s.

Sì! Ho già creato le linee principali nella funzione speciale init(), e le aggiorno nella funzione OnTimer().

(potete capirmi meglio dal codice qui sotto)

...nuove candele si possono combinare...

Se ci sono altriproblemi...

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

Come ho detto c'è un problema che richiede più tempo. In questo momento ho bisogno di mostrarvi un po' del mio codice indicatore. E non uso 'switch operator & ObjectMove()'nel mio indicatore.

@Marco

Per favore fammi sapere se il codice qui sotto è buono o cosa?

Qual è il tuo consigliopotrei iniziare la ricerca ampiamente i tuoi ultimi due commenti e potrei coinvolgere 'switch() e ObjectMove()' al mio indicatore? (Perché lo chiedo prima di farlo? - perché ci vuole molto tempo).

(come vedi ho ottenuto più benefici dal tuo commento #18 - e ora sono di fronte al dilemma tra il mio codice e i tuoi ultimi due grandi commenti)

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

Tutto il meglio per te amico.

Bene, se funziona e se non funziona continua a provare.

 
Marco vd Heijden:

Bene, se funziona e se non funziona continua a provare.

Un grande grazie!
 

#Broker Time - ReOpen

Ho letto qualche forum qua e là. Forse la mia soluzione o di loro. Ma non ho capito.

Prima di questo commento - ho provato ancora una volta. Ma non riesco a trovare la soluzione.
Allora, ho 2 broker, A e B.

  • A: Vline oggetti posti tempo corretto. Quale voglio. es: Tempo 2017.02.18 0:00 anche oggetto vline posto stesso tempo.
  • B: Vline oggetto posto tempo sbagliato ( forse mi sbaglio ). es: Tempo 2017.02.18 1:00 ma oggetto vline posto 0:00.
Quindi se qualcuno capisce la mia preoccupazione, qualsiasi commento sarebbe meglio per me.

Buon fine settimana.

 
Max Enrik:

#Broker Time - ReOpen

Ho letto qualche forum qua e là. Forse la mia soluzione o di loro. Ma non ho capito.

Prima di questo commento - ho provato ancora una volta. Ma non riesco a trovare la soluzione.
Allora, ho 2 broker, A e B.

  • A: Vline oggetti posti tempo corretto. Quale voglio. es: Tempo 2017.02.18 0:00 anche oggetto vline posto stesso tempo.
  • B: Vline oggetto posto tempo sbagliato ( forse mi sbaglio ). es: Tempo 2017.02.18 1:00 ma oggetto vline posto 0:00.
Quindi se qualcuno capisce la mia preoccupazione, qualsiasi commento sarebbe meglio per me.

Buon fine settimana.

Avrei bisogno di vedere il codice
 

Il codice qui sotto mi dà risultati diversi in due diversi broker.
(Il mio commento precedente potrebbe aiutarvi a capirmi)

Grazie in anticipo.

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

Se intendi che i valori di iHigh e iLow differiscono tra i broker, questo è abbastanza comune.

2 ragioni:

1. I prezzi variano leggermente tra i broker, e

2. Se i server dei broker hanno offset GMT diversi, le barre iniziano in tempi diversi.

 
honest_knave:

Se intendi che i valori di iHigh e iLow differiscono tra i broker, questo è abbastanza comune.
2 ragioni:
1. I prezzi variano leggermente tra i broker, e
2. Se i server dei broker hanno offset GMT diversi, le barre iniziano in tempi diversi.

Intendo solo un tempo diverso.

Quindi, non c'è nessuna possibilità di risolvere questo problema, per favore?

Grazie mille.

Motivazione: