Indikator Verschiedene Fragen

 

Hi,

#Broker Time

Ich habe einige Stunden damit verbracht, einige Kommentare zu lesen, aber ich habe nicht herausgefunden, wie ich meineBroker Time auf meine Indikatoren einstellen kann / wie ich meine Indikatoren auf meine Broker Time einstellen kann. (vielleicht bin ich verwirrt)

Meine Broker-Zeit beginnt um 01:00 Uhr, aber alle meine Indikatoren funktionieren ab 00:00 Uhr.

Wie kann ich also mein Problem lösen?

Bitte helfen Sie mir.

Danke!

(Englisch ist nicht meine Muttersprache.)

 

#Broker Time - Vorerst geschlossen.

Ich löse mein Problem.

 

#Monat OBJ_VLINE

Ich muss Monatszeilen erstellen, aber ich habe Schwierigkeiten.

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

Kann mir jemand helfen?

Beste

 
Sie wissen, wann der Monat begonnen hat: iTime(_Symbol, PERIOD_MN1, 0) Die Schleife und der ganze Rest sind überflüssig. Ziehen Sie einfach die Linie.
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:
Sie wissen, wann der Monat begonnen hat: iTime(_Symbol, PERIOD_MN1, 0) Sie brauchen die Schleife nicht, oder den ganzen Rest. Ziehen Sie einfach den Strich.
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'  )             ;

Danke für die schnelle Antwort und Ihren Kommentar.

Auch ich habe versucht, Ihren Code, aber ich sehe nur einen vorherigen Monat 2016/10.

Aber ich muss Monate Zeilen aus aktuelles Jahr und zukünftige erstellen.

Beispiel: Monat beginnt von - Januar 2016 - Februar 2016 - März 2016 - ... bis Dezember 2016

Ich hoffe, Sie verstehen mich jetzt richtig.

Also, was kann ich dafür tun, bitte?

Vielen Dank im Voraus.

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

Du verstehst mich ganz klar, was ich denke, und ich habe deinen tollen Kommentar nicht gesehen (während ich die Antwort auf den vorherigen Kommentar schrieb).

Vielen Dank.

 
Max Enrik:

Sie verstehen mich eindeutig, was ich denke, und ich schrieb eine Antwort auf meinen vorherigen Kommentar (während ich Ihren großartigen Kommentar nicht gesehen habe).

Vielen Dank.

Einfach halten Sie es einfach
 
    ObjectCreate(0,"Future-H4-",OBJ_VLINE,0,0,0);
    ObjectMove(0,"Future-H4-",0,iTime(Symbol(),PERIOD_H4,0)+PERIOD_H4,0);

MN1 ist ein bisschen zu weit weg, aber hier ist einer für H4.

Sie können auch Folgendes verwenden

TimeCurrent()
Und verschieben Sie Ihre Linie in der OnTick() oder OnTimer() Funktion, dann wird sie sich mit der Zeit bewegen.
 
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 ist ein bisschen zu weit weg, aber hier ist einer für H4.

Sie können auch verwenden

TimeCurrent()
Und verschieben Sie Ihre Zeile in OnTick() oder OnTimer() Funktion, dann wird es zusammen mit der Zeit bewegen.

Wow! Vielen Dank für Ihren Kommentar.

Ich benutze den untenstehenden Code (den Sie erwähnt haben) in meinem Periodenlinien-Indikator, und das funktioniert gut für mich bis 'PERIOD_MN1'.

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

---

Ich habe ein bisschen mehr über 'Event Handling Functions' gelesen, aber ich brauche einen Rat von einem professionellen Programmierer.

Welche Funktion ist nützlich für meinen (Stunde 4, Tag, Woche, Monat) Indikator?

Beispiel: init(), start(), OnTick() oder OnTimer()

Vielen Dank im Voraus.

 

Nun, Sie können alle Linien in OnInit() zeichnen und dann neue zeichnen, wann immer die opentime aus dem letzten bar ändert, werden Sie wissen, es war ein neuer bar.

Aber ich bin nicht sicher, was genau Sie tun wollen.

Grund der Beschwerde: