Dibuje una línea virtual el primer día de negociación del mes
Dibuje una línea virtual el primer día de negociación del mes

 

Publi

Resultados 1 al 7 de 7

Tema: Dibuje una línea virtual el primer día de negociación del mes

  1. #1
    1 Anexo(s) Estoy tratando de codificar un indicador que pueda mostrar una línea virtual en el primer día de negociación del mes (en algún mes, el primer día de negociación es el 1. En otro mes, el primer día de negociación es el 2. o 3. )

    Esto es lo que he intentado

    Código insertado #propiedad copyright #propiedad enlace #propiedad indicador_chart_window/ ---------------------------------------------------- ------------------------------ /| Función de inicialización de indicador personalizado |/ -------------------------------------------------------- ------------------- int inicial() { retorno(0); }/ ---------------------------------------------- -------------------- /| Función de desinicialización del indicador de cliente |/ -------------------------------------------------------- ------------------- int deinit() { ObjectsDeleteAll(); retorno(0); }/ ---------------------------------------------- -------------------- /| Función de iteración de indicador personalizado |/ -------------------------------------------------------- ------------------- int start() { int Día1Existe, Día2Existe, Día3Existe = 0; int LookBack = 1000;/número de días que desea buscar (int i=0;ilt;=LookBack;i ) { datetime dailyTime=iTime(Symbol(),1440,i); cadena nombre=Time_Vertical_Line i; if(TimeDay(dailyTime)==1) { if(!ObjectCreate(0,name,OBJ_VLINE,0,dailyTime,0)) Print(No se pudo dibujar la línea C??DIGO DE ERROR: ,GetLastError()); ObjectSet(nombre,OBJPROP_WIDTH,3); ObjectSet(nombre,OBJPROP_COLOR,Rojo); ObjectSet(nombre,OBJPROP_BACK,verdadero); Día1Existe = Día1Existe 1; } else if(TimeDay(dailyTime)==2 Day1Exist lt; 1) { if(!ObjectCreate(0,name,OBJ_VLINE,0,dailyTime,0)) Print(Error al dibujar la línea C??DIGO DE ERROR: ,GetLastError()) ; ObjectSet(nombre,OBJPROP_WIDTH,3); ObjectSet(nombre,OBJPROP_COLOR,Verde); ObjectSet(nombre,OBJPROP_BACK,verdadero); Día2Existen = Día2Existen 1; } else if(TimeDay(dailyTime)==3 (Day1Exist lt; 1) || (Day2Exist lt; 1)) { if(!ObjectCreate(0,name,OBJ_VLINE,0,dailyTime,0)) Print(Error al dibujar la línea C??DIGO DE ERROR: ,GetLastError()); ObjectSet(nombre,OBJPROP_WIDTH,3); ObjectSet(nombre,OBJPROP_COLOR,Azul); ObjectSet(nombre,OBJPROP_BACK,verdadero); Día1Existe = 0; Día2Existen = 0; } }/Para empezar
    Problema: No dibuja una línea en los días donde el día es el segundo o el tercero




    He probado algunos otros indies, pero dibujan el vline el último día del mes y lo quiero el primer día del mes.

  2.                         
    Publicidad
  3. #2

    Cita Iniciado por ;
    debería haber muchas formas de hacer esto. Aquí hay una: int j=TimeMonth(Time[Bars-1]); nombre de cadena; fechahora d; for (int i=Bars-1;igt;0;i--){ d = Tiempo[i]; if (TiempoMes(d) !=j) { j=TiempoMes(d); nombre=vline IntegerToString(i); EliminarObjeto(nombre); ObjectCreate(nombre,OBJ_VLINE,0,d,0); } }
    Maldita sea, a veces es tan simple. ¡Gracias!

  4. #3
    Solo necesita dibujar una vLine en el momento correspondiente a la apertura de la barra del mes. Código insertado #define PREFIX __vline_month_start_ #include lt;arrays/list.mqhgt; #include lt;objetosgráficos/líneasobjetosgráficos.mqhgt; int OnInit(){ return(INIT_SUCCEEDED); } int OnCalculate(const int rates_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 { static CList gc; fecha y hora estática reciente_calc = 0; datetime check_delta = recent_calc PeriodSeconds(PERIOD_MN1); if (TimeCurrent() gt; check_delta) { datetime times#91;#93;; ArraySetAsSeries(veces, verdadero); int numero_barras = 0; hacer { num_bars = Bars(_Symbol, PERIOD_MN1); } while(num_bars lt;= 0); int x = CopyTime(_Symbol, PERIOD_MN1,0, gc.Total() ? 1 : num_bars, times); for (int i=0; ilt;x; i ) { CChartObjectVLine *línea = new CChartObjectVLine(); gc.Add(línea); cadena nombre = PREFIJO cadena(times#91;i#93; line.Create(ChartID(), nombre, 0, times#91;i#93; } cálculo_reciente = veces#91;0#93;; } retorno(tasas_total); }

  5. #4
    debería haber muchas formas de hacer esto. Aquí hay una: Inserted Code int j=TimeMonth(Time#91;Bars-1#93; nombre de cadena; fechahora d; for (int i=Bars-1;igt;0;i--){ d = Tiempo#91;i#93;; if (TiempoMes(d) !=j) { j=TiempoMes(d); nombre=vline IntegerToString(i); EliminarObjeto(nombre); ObjectCreate(nombre,OBJ_VLINE,0,d,0); } }

  6. #5

    Cita Iniciado por ;
    Estoy tratando de codificar un indicador que pueda mostrar una línea virtual en el primer día de negociación del mes (en algún mes, el primer día de negociación es el 1. En otro mes, el primer día de negociación es el 2. o 3.) Esto es lo que he intentado #propiedad copyright #propiedad enlace #propiedad indicador_chart_window/ --------------------------------------------------- ------------------------------ /| Función de inicialización de indicador personalizado |/ -------------------------------------------------------- ------------------- int inicial() { retorno(0); }/ ---------------------------------------------- -------------------- ...
    Hazlo manualmente.

  7. #6

    Cita Iniciado por ;
    {quote} Hágalo manualmente.
    Esto es solo una parte de lo que quiero que haga el indi. Si solo fueran las vlines, sí, sería más fácil hacerlo manualmente.

  8. #7

    Cita Iniciado por ;
    Solo necesita dibujar una vLine en el momento correspondiente a la apertura de la barra del mes. #define PREFIX __vline_month_start_ #include lt;arrays/list.mqhgt; #include lt;objetosgráficos/líneasobjetosgráficos.mqhgt; int OnInit(){ return(INIT_SUCCEEDED); } int OnCalculate(const int rates_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 volumen[], const int spread[]) { static CList gc; fecha y hora estática reciente_calc = 0; fecha y hora check_delta...
    ¡Gracias!

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Uso de cookies
Utilizamos cookies propias y de terceros para elaborar información estadística y mostrarle publicidad personalizada a través del análisis de su navegación. Si continúa navegando acepta su uso. Más información y política de cookies.
     

Aviso legal: Ni forosforex.com ni ninguna persona involucrada en forosforex.com aceptarán ninguna responsabilidad por cualquier pérdida o daño en el trading como resultado de la confianza en la información contenida en este sitio web, incluidos datos, cotizaciones, gráficos y señales de compra/venta. Por favor, infórmese plenamente de los riesgos y costes asociados a las operaciones en los mercados financieros, una de las formas de inversión que más riesgos entrañan.
forosforex.com le quiere recordar que los datos contenidos en este sitio web no son necesariamente en tiempo real ni exactos. forosforex.com no asume responsabilidad alguna por las pérdidas en que usted podría incurrir como resultado de la utilización de estos datos. Este acuerdo se rige por su versión en inglés, que prevalecerá siempre que haya alguna discrepancia entre la versión en inglés y la versión en español. Los CFD son un producto difícil de entender, varios organismos reguladores consideran que no es adecuado para inversores minoristas debido a su complejidad y riesgo.
Advertencia de riesgo: Los CFDs son un producto difícil de entender, y puede no ser adecuado para inversores minoristas debido a su complejidad y riesgo. Existe la posibilidad de sufrir una pérdida igual o superior a la inversión. Por lo tanto, no debe invertir o arriesgar dinero que no pueda permitirse perder. Debe asegurarse de que comprende todos los riesgos. Antes de abrir una cuenta en un broker por favor sea consciente e infórmese de los riesgos asociados con el trading. El contenido de este sitio web no debe interpretarse como asesoramiento personal. ForosForex recomienda que busque el consejo de un asesor financiero independiente.