Come disegnare una linea di riferimento ogni 10 pip - pagina 2

 

Ma certo! È solo il tempo. E tutto quello che dobbiamo fare è aggiungere tempo a Time[0] per far sì che il rettangolo si estenda nel futuro (fuori dal lato destro del grafico). Grazie. A proposito, ho trovato che il lato sinistro semplicemente usando Bars.

datetime timeGap = (Time[0] - Time[1]); // get the amount of time between bars
ObjectSet("tensRec"+ix,OBJPROP_TIME2,Time[0] + (timeGap*150)); // multiplying timeGap by 150 seems to extend the rectangle off the right-hand window edge

Il colore che sto usando è molto sottile. Devi quasi cercare i rettangoli per vederli.

ObjectSet("tensRec"+ix,OBJPROP_COLOR,0x080808) 
 
MisterDog:

Ma certo! È solo il tempo. E tutto quello che dobbiamo fare è aggiungere tempo a Time[0] per far sì che il rettangolo si estenda nel futuro (fuori dal lato destro del grafico). Grazie. A proposito, ho trovato che il lato sinistro semplicemente usando Bars.

Il colore che sto usando è molto sottile. Devi quasi cercare i rettangoli per vederli.

Ciao MisterDog,

Possiamo vedere le foto?

Il lunedì Time[0] è il lunedì mentre Time [1] è il sabato - questo è lo scarto del lunedì ;).

:D

 

Immagino che, dato che gestisco un grafico a un minuto, quello di cui stai parlando si risolverà da solo in un minuto. Immagino che vedremo cosa succede durante il fine settimana.

Ecco la foto.

 
onewithzachy:

Ciao MisterDog,

Semplice.

1. Ottieni la distanza temporale tra una barra e l'altra. Possiamo ottenere questo sottraendo il tempo della barra corrente con il tempo della barra precedente o moltiplicando il periodo con 60 secondi, scegli quest'ultimo, perché c'è uno scarto temporale il lunedì.

Io non ho un intervallo di tempo il lunedì, la mia prima barra della settimana inizia la domenica ;-)

Perché non aggiungere PERIOD_W1 * 60 al tempo finale? Questo dovrebbe coprire qualsiasi gap... ;-)

 
MisterDog:

Il colore che sto usando è molto sottile. Bisogna quasi cercare i rettangoli per vederli.

Ora "vedo" cosa intendevi.

RaptorUK

Non ho un intervallo di tempo il lunedì, la mia prima barra della settimana inizia la domenica ;-)

Perché non aggiungi PERIOD_W1 * 60 al tempo finale? Questo dovrebbe coprire quasi tutti i gap... ;-)

Hai un gap di domenica allora ;).

 
  1. MisterDog:
    Ditemi, c'è modo di usare una sorta di "jolly" per cose come ObjectDelete? Vorrei fare qualcosa del genere, ObjectDelete("tensLines "*); in altre parole, cancellare tutto ciò che inizia con "tensLines".
    #define ONDA_BEGINS   0
    #define ONDA_CONTAINS 1
    void ObjectNameDeleteAll(string name, int where=ONDA_BEGINS, int type=EMPTY){
        for(int iObj=ObjectsTotal()-1; iObj >= 0; iObj--){
            string on   = ObjectName(iObj);
            int    iPos = StringFind(on, name);
            if (iPos < 0)                         continue;
            if (iPos > 0 && where == ONDA_BEGINS) continue;
            if      (type == EMPTY))         ObjectDelete(on);
            else if (type == ObjectType(on)) ObjectDelete(on);
        }
    }
    
    Non compilato, non testato.

  2. Inoltre non c'è motivo di cancellarli, basta spostarli nella nuova posizione. Dal mio codice:
    void Rect(string name, datetime T0,double P0, datetime T1,double P1, color clr){
        if (!Show.Objects)  return;                         #define WINDOW_MAIN 0
        if      (ObjectMove( name, 0, T0, P0 ))     ObjectMove(name, 1, T1, P1);
        else if (!ObjectCreate( name, OBJ_RECTANGLE, WINDOW_MAIN, T0, P0, T1, P1 ))
            Alert("ObjectCreate(",name,",RECT) failed: ", GetLastError() );
        if (!ObjectSet(name, OBJPROP_COLOR, clr )) // Allow color change
            Alert("ObjectSet(", name, ",Color) [3] failed: ", GetLastError());
        string  P0t = PriceToStr(P0);           if (MathAbs(P0 - P1) >= Point)
                P0t = StringConcatenate(P0t, " to ", PriceToStr(P1));
        if (!ObjectSetText(name, P0t, 10))
            Alert("ObjectSetText(",name,") [1] failed: ", GetLastError());
    }
    

  3. RaptorUK:
    Perché non aggiungere PERIOD_W1 * 60 al tempo finale? Questo dovrebbe coprire qualsiasi lacuna... ;-)
    Perché non proiettare semplicemente il rettangolo fino al futuro?
    #define INF 0x6FFFFFFF // Not quite infinite, Jul 2029, or 1,879,048,191
    ObjectSet("tensRec"+ix,OBJPROP_TIME2,INF);
 
WHRoeder:
Perché non proiettare il rettangolo fino al futuro?

Grazie mille WHRoeder. Lo prendo :D

[ EDIT : Quindi, in ogni caso, molti ringraziamenti ]

 
WHRoeder:
  1. RaptorUK:
    Perché non aggiungere PERIOD_W1 * 60 al tempo finale? Questo dovrebbe coprire quasi tutte le lacune... ;-)
    Perché non proiettare il rettangolo fino al futuro?
Non volevo essere avido ;-)
 
RaptorUK:
Non volevo essere avido ;-)
L'avidità è buona, sai ;)
 
onewithzachy:
L 'avidità è buona, sai ;)
Ho imparato a mie spese che l'avidità è sicuramente una cosa molto, molto cattiva ;-)