Indicatore Domande varie

 

Ciao,

#Broker Time

Ho passato alcune ore a leggere alcuni commenti, ma non ho capito come posso impostare il mioBroker Time ai miei indicatori / come posso impostare i miei indicatori al mio Broker Time. (forse mi sono confuso)

Il mio Broker Time inizia dalle 01:00, ma tutti i miei indicatori lavorano dalle 00:00.

Quindi come posso risolvere il mio problema?

Per favore aiutatemi.

Grazie.

(L'inglese non è la mia lingua madre).

 

#Broker Time - Chiuso per ora.

Ho risolto il mio problema.

 

#Mese OBJ_VLINE

Ho bisogno di creare le linee dei mesi, ma faccio fatica.

int _prd = PERIOD_MN1;
int _cnt_MN1 = iBarShift( Symbol(), 0, iTime( Symbol(), PERIOD_MN1, 0 ) );
for ( int i = 0; i < _cnt_MN1; i++ )
{
    //---date & time
    datetime _time          = Time[i]                                               ;
    datetime _prd_time      = iTime( Symbol(), _prd, 0 )                            ;
    datetime _timeCvrt_MN1  = _time + ( _time % _prd_time ) - PeriodSeconds( _prd ) ;
    //---name
    string   _vlineName_MN1 = _prefix + "PERIOD_MN1 - " + TimeToStr( _timeCvrt_MN1, TIME_DATE )    ;

    if ( _Period < PERIOD_MN1 )
    {
        ObjectCreate( _vlineName_MN1, OBJ_VLINE     , 0, _time, 0 )                 ;
        ObjectSet   ( _vlineName_MN1, OBJPROP_COLOR , C'180,160,080'  )             ;
    }   //---if Close
}   //---for Close

Qualcuno può, per favore?

Migliore

 
Sapete quando è iniziato il mese: iTime(_Symbol, PERIOD_MN1, 0) Non c'è bisogno del ciclo, o di tutto il resto. Basta disegnare la linea.
datetime BOM = iTime( Symbol(), PERIOD_MN1, 0 ); // Beginning of the month.
string   _vlineName_MN1 = _prefix + "PERIOD_MN1 - " + TimeToStr( BOM, TIME_DATE )    ;
ObjectCreate( _vlineName_MN1, OBJ_VLINE     , 0, BOM, 0 )                 ;
ObjectSet   ( _vlineName_MN1, OBJPROP_COLOR , C'180,160,080'  )             ;
 
int _cnt_MN1 = 12; // 12 lines for a year 24 for two years and etc.
for ( int i = 0; i < _cnt_MN1; i++ )
{
   ObjectCreate(0,"PERIOD_MN1-"+IntegerToString(i),OBJ_VLINE,0,iTime(Symbol(),PERIOD_MN1,i),0);
   ObjectSetString(0,"PERIOD_MN1-"+IntegerToString(i),OBJPROP_TOOLTIP,TimeToString(iTime(Symbol(),PERIOD_MN1,i),TIME_DATE));
   ObjectSetInteger(0,"PERIOD_MN1-"+IntegerToString(i), OBJPROP_COLOR , C'180,160,080'  );
   //ObjectSetInteger(0,"PERIOD_MN1-"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
   //ObjectSetInteger(0,"PERIOD_MN1-"+IntegerToString(i),OBJPROP_WIDTH,1);
}
 
whroeder1:
Sai quando è iniziato il mese: iTime(_Symbol, PERIOD_MN1, 0) Non c'è bisogno del ciclo, né di tutto il resto. Basta disegnare la linea.
datetime BOM = iTime( Symbol(), PERIOD_MN1, 0 ); // Beginning of the month.
string   _vlineName_MN1 = _prefix + "PERIOD_MN1 - " + TimeToStr( BOM, TIME_DATE )    ;
ObjectCreate( _vlineName_MN1, OBJ_VLINE     , 0, BOM, 0 )                 ;
ObjectSet   ( _vlineName_MN1, OBJPROP_COLOR , C'180,160,080'  )             ;

Grazie per la risposta rapida e il tuo commento.

Ho anche provato il tuo codice, ma vedo solo un mese precedente 2016/10.

Ma ho bisogno di creare linee di mesi dall'anno attuale e da quello futuro.

Esempio: Mese inizia da - Gennaio 2016 - Febbraio 2016 - Marzo 2016 - ... fino a Dicembre 2016

Spero che ora mi capisca chiaramente.

Quindi, cosa posso fare per questo, per favore?

Grazie in anticipo.

 
Marco vd Heijden:
int _cnt_MN1 = 12; // 12 lines for a year 24 for two years and etc.
for ( int i = 0; i < _cnt_MN1; i++ )
{
   ObjectCreate(0,"PERIOD_MN1-"+IntegerToString(i),OBJ_VLINE,0,iTime(Symbol(),PERIOD_MN1,i),0);
   ObjectSetString(0,"PERIOD_MN1-"+IntegerToString(i),OBJPROP_TOOLTIP,TimeToString(iTime(Symbol(),PERIOD_MN1,i),TIME_DATE));
   ObjectSetInteger(0,"PERIOD_MN1-"+IntegerToString(i), OBJPROP_COLOR , C'180,160,080'  );
   //ObjectSetInteger(0,"PERIOD_MN1-"+IntegerToString(i),OBJPROP_STYLE,STYLE_DOT);
   //ObjectSetInteger(0,"PERIOD_MN1-"+IntegerToString(i),OBJPROP_WIDTH,1);
}

Lei mi capisce chiaramente quello che sto pensando, e non ho visto il suo grande commento (mentre scrivevo la risposta al commento precedente)

Molto apprezzato.

 
Max Enrik:

Lei mi capisce chiaramente cosa sto pensando, e ho scritto la risposta per il commento precedente (mentre non ho visto il suo grande commento).

Molto apprezzato.

Basta tenerlo semplice
 
    ObjectCreate(0,"Future-H4-",OBJ_VLINE,0,0,0);
    ObjectMove(0,"Future-H4-",0,iTime(Symbol(),PERIOD_H4,0)+PERIOD_H4,0);

MN1 è un po' troppo lontano, ma eccone uno per H4.

Inoltre è possibile utilizzare

TimeCurrent()
E spostare la tua linea nella funzione OnTick() o OnTimer() allora si muoverà insieme al tempo.
 
Marco vd Heijden:
    ObjectCreate(0,"Future-H4-",OBJ_VLINE,0,0,0);
    ObjectMove(0,"Future-H4-",0,iTime(Symbol(),PERIOD_H4,0)+PERIOD_H4,0);

MN1 è un po' troppo lontano, ma eccone uno per H4.

Inoltre puoi usare

TimeCurrent()
E sposta la tua linea nella funzione OnTick() o OnTimer() allora si muoverà insieme al tempo.

Wow! Un grande grazie per il tuo commento.

Io uso il codice seguente (quello che hai menzionato) nel mio indicatore Period Lines, quindi funziona bene per me fino a 'PERIOD_MN1'.

iTime(Symbol(),PERIOD_*,0)+PERIOD_*

---

Ho letto un po' di più sulle 'Funzioni di gestione degli eventi', ma ho bisogno di un consiglio da un codificatore professionista.

Quale funzione è utile per il mio indicatore (4 ore, giorno, settimana, mese)?

esempio: init(), start(), OnTick() o OnTimer()

Grazie in anticipo.

 

Beh, puoi disegnare tutte le linee in OnInit() e poi disegnarne di nuove ogni volta che l'opentime dell'ultima barra cambia, saprai che c'è stata una nuova barra.

Ma non sono sicuro di cosa vuoi fare esattamente.