Disegna una vline il primo giorno di negoziazione del mese

 

Publi

Disegna una vline il primo giorno di negoziazione del mese

 

Publi

Risultati da 1 a 7 di 7

Discussione: Disegna una vline il primo giorno di negoziazione del mese

  1. #1
    1 Allegato(i) Sto cercando di codificare un indiore che possa mostrare una vline il primo giorno di negoziazione del mese (in alcuni mesi il primo giorno di negoziazione è il 1. altro mese il primo giorno di negoziazione è il 2. o 3. )

    Ecco cosa ho provato

    Codice inserito #proprietà copyright #proprietà link #property indior_chart_window/ ------------------------------------- ------------------------------ /| Funzione di inizializzazione dell'indiore personalizzato |/ ------------------------------------------------ ------------------- int init() { ritorno(0); }/ ---------------------------------------------- -------------------- /| Funzione di deinizializzazione indiore cliente |/ ------------------------------------------------ ------------------- int deinit() { ObjectsDeleteAll(); ritorno(0); }/ ---------------------------------------------- -------------------- /| Funzione di iterazione dell'indiore personalizzato |/ ------------------------------------------------ ------------------- int start() { int Day1Exist, Day2Exist, Day3Exist = 0; int LookBack = 1000;/numero di giorni che vuoi guardare indietro (int i=0;ilt;=LookBack;i ) { datetime dailyTime=iTime(Symbol(),1440,i); nome stringa=Ora_Riga_Verticale i; if(TimeDay(dailyTime)==1) { if(!ObjectCreate(0,name,OBJ_VLINE,0,dailyTime,0)) Print(Impossibile disegnare la riga CODICE DI ERRORE: ,GetLastError()); ObjectSet(nome,OBJPROP_WIDTH,3); ObjectSet(nome,OBJPROP_COLOR,Rosso); ObjectSet(nome,OBJPROP_BACK,vero); Day1Exist = Day1Exist 1; } else if(TimeDay(dailyTime)==2 Day1Exist lt; 1) { if(!ObjectCreate(0,name,OBJ_VLINE,0,dailyTime,0)) Print(Impossibile disegnare la riga ERROR CODE : ,GetLastError()) ; ObjectSet(nome,OBJPROP_WIDTH,3); ObjectSet(nome,OBJPROP_COLOR,Verde); ObjectSet(nome,OBJPROP_BACK,vero); Day2Exist = Day2Exist 1; } else if(TimeDay(dailyTime)==3 (Day1Exist lt; 1) || (Day2Exist lt; 1)) { if(!ObjectCreate(0,name,OBJ_VLINE,0,dailyTime,0)) Print(Impossibile disegnare la riga CODICE DI ERRORE : ,GetLastError()); ObjectSet(nome,OBJPROP_WIDTH,3); ObjectSet(nome,OBJPROP_COLOR,Blue); ObjectSet(nome,OBJPROP_BACK,vero); Giorno1Esiste = 0; Day2Exist = 0; } }/Per }/Inizia
    Problema: non traccia una linea nei giorni in cui il giorno è il secondo o il terzo




    Ho provato alcune altre indie, ma disegnano il vline l'ultimo giorno del mese e lo voglio il primo giorno del mese.

  2. #2

    Citazione Originariamente Scritto da ;
    ci dovrebbero essere molti modi per farlo. Eccone uno: int j=TimeMonth(Time[Bars-1]); nome della stringa; data e ora d; for (int i=Barre-1;igt;0;i--){ d = Tempo[i]; se (MeseOra(d) !=j) { j=MeseOra(d); nome=vline IntegerToString(i); ObjectDelete(nome); ObjectCreate(nome,OBJ_VLINE,0,d,0); } }
    Accidenti, a volte è così semplice. Grazie!

  3. #3
    Devi solo disegnare una vLine all'ora corrispondente alla barra di apertura del mese. Codice inserito #define PREFIX __vline_month_start_ #include lt;arrays/list.mqhgt; #include lt;chartobjects/chartobjectslines.mqhgt; int OnInit(){ return(INIT_SUCCEEDED); } int OnCalculate(const int rate_total, const int prev_calculated, const datetime time#91;#93;, const double open#91;#93;, const double high#91;#93;, const double low#91;#93 ;, const double close#91;#93;, const long tick_volume#91;#93;, const long volume#91;#93;, const int spread#91;#93 { CList statico gc; datetime statico recenti_calc = 0; datetime check_delta = calc_recente PeriodSeconds(PERIOD_MN1); if (TimeCurrent() gt; check_delta) { datetime times#91;#93;; ArraySetAsSeries (volte, vero); int num_bar = 0; do { num_bars = Bars(_Symbol, PERIOD_MN1); } while(num_bar lt;= 0); int x = CopyTime(_Symbol, PERIOD_MN1,0, gc.Total() ? 1 : num_bars, times); for (int i=0; ilt;x; i ) { CCChartObjectVLine *line = new CCChartObjectVLine(); gc.Add(riga); nome stringa = PREFISSO stringa(volte#91;i#93; line.Create(ChartID(), name, 0, times#91;i#93; } calcolo_recente = volte#91;0#93;; } ritorno(tassi_totale); }

  4. #4
    ci dovrebbero essere molti modi per farlo. Eccone uno: Codice inserito int j=TimeMonth(Time#91;Bars-1#93; nome della stringa; data e ora d; for (int i=Barre-1;igt;0;i--){ d = Tempo#91;i#93;; se (MeseOra(d) !=j) { j=MeseOra(d); nome=vline IntegerToString(i); ObjectDelete(nome); ObjectCreate(nome,OBJ_VLINE,0,d,0); } }

  5. #5

    Citazione Originariamente Scritto da ;
    Sto cercando di codificare un indiore che possa mostrare una vline il primo giorno di negoziazione del mese (in alcuni mesi il primo giorno di negoziazione è il 1. altro mese il primo giorno di negoziazione è il 2. o 3.) Ecco cosa ho ho provato #proprietà copyright #proprietà link #property indior_chart_window/ ------------------------------------- ------------------------------ /| Funzione di inizializzazione dell'indiore personalizzato |/ ------------------------------------------------ ------------------- int init() { ritorno(0); }/ ---------------------------------------------- -------------------- ...
    Fallo manualmente.

  6. #6

    Citazione Originariamente Scritto da ;
    {quote} Fallo manualmente.
    Questa è solo una parte di ciò che voglio che l'indi faccia. Se fosse solo il vlines sì, sarebbe più facile farlo manualmente.

  7. #7

    Citazione Originariamente Scritto da ;
    Devi solo disegnare una vLine all'ora corrispondente alla barra di apertura del mese. #define PREFIX __vline_month_start_ #include lt;arrays/list.mqhgt; #include lt;chartobjects/chartobjectslines.mqhgt; int OnInit(){ return(INIT_SUCCEEDED); } int OnCalculate(const int rate_total, const int prev_calculated, const datetime time[], const double open[], const double high[], const double low[], const double close[], const long tick_volume[], const long volume[], const int spread[]) { CList statico gc; datetime statico recenti_calc = 0; datetime check_delta...
    Grazie!

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
Il sito di forexmad utilizza cookie
Il sito di forexmad utilizza cookie, alcuni dei quali già installati. Per avere maggiori informazioni sui nostri cookie ti preghiamo di cliccare qui. Ti preghiamo di cliccare sul bottone a destra per accettare i nostri cookie. Se continui a navigare sul sito di forexmad assumeremo che sei d'accordo ad utilizzarli.