Este artÃculo complementa nuestra extensa lista de ejemplos de código de indicadores. Ampliamos algunos conceptos mencionados en estos ejemplos de código y discutimos varias caracterÃsticas avanzadas que puede implementar al crear nuevos indicadores.
El atributo cloud
Probablemente haya visto nubes transparentes en los gráficos de operaciones.
Puede agregar nubes a las salidas de su indicador utilizando el atributo de clase CloudAttribute como se muestra en el ejemplo a continuación:
La API de Algo incluye el enumColor que se puede utilizar para configurar los colores de los objetos Chart, controles de gráficos y salidas.
Los valores del enumColor representan colores comúnmente utilizados. Puede usarlos sin tener que lidiar con códigos de color hexadecimales o ARGB.
Al personalizar las salidas, puede establecer sus colores utilizando la propiedad de cadena LineColor. Como se muestra a continuación, acepta tanto colores nombrados como códigos de color hexadecimales.
1234
_=Chart.DrawStaticText("NamedColor","This is text using Color class color name properties",VerticalAlignment.Center,HorizontalAlignment.Center,Color.Red);_=Chart.DrawStaticText("HexadecimalColor","This is text using Hexadecimal color",VerticalAlignment.Bottom,HorizontalAlignment.Center,Color.FromHex("#FF5733"));_=Chart.DrawStaticText("ARGBColor","This is text using ARGB color",VerticalAlignment.Top,HorizontalAlignment.Center,Color.FromArgb(255,200,100,60));_=Chart.DrawStaticText("ParsedNameColor","This is text using color name by parsing it from string",VerticalAlignment.Center,HorizontalAlignment.Left,Color.FromName("Yellow"));
1 2 3 4 5 6 7 8 910111213
varstackPanel=newStackPanel{Orientation=Orientation.Vertical,HorizontalAlignment=HorizontalAlignment.Center,VerticalAlignment=VerticalAlignment.Center};stackPanel.AddChild(newTextBlock{Text="Red Color property",BackgroundColor=Color.Red});stackPanel.AddChild(newTextBlock{Text="Hexadecimal Color code",BackgroundColor=Color.FromHex("#FF5733")});stackPanel.AddChild(newTextBlock{Text="ARGB Color",BackgroundColor=Color.FromArgb(200,100,40,80)});stackPanel.AddChild(newTextBlock{Text="Color Name",BackgroundColor=Color.FromName("Green")});Chart.AddControl(stackPanel);
En el ejemplo a continuación, creamos un indicador simple (alto menos bajo) que, al inicializarse, muestra texto en el gráfico de operaciones al que está adjunto.
1 2 3 4 5 6 7 8 910111213141516171819
usingcAlgo.API;usingcAlgo.API.Indicators;usingcAlgo.API.Collections;usingcAlgo.API.Internals;namespacecAlgo{[Indicator(IsOverlay = false, TimeZone = TimeZones.UTC, AccessRights = AccessRights.None)]publicclassHighMinusLowColor:Indicator{[Parameter("Text Color", DefaultValue="#f54242")]publicColorTextColor{get;set;}publicoverridevoidInitialize(){varstaticText=Chart.DrawStaticText("static","This text shows how color parameters work",VerticalAlignment.Center,HorizontalAlignment.Center,TextColor);}}}
Tipos de salida
Hay varios tipos diferentes de salida disponibles para indicadores personalizados:
Line - una lÃnea continua.
DiscontinuousLine - una lÃnea no continua que es útil para casos en los que su indicador no siempre tiene un valor de cálculo.
Points - un punto o un punto para cada barra.
Histogram - una serie de barras verticales. Al usar este tipo, establezca la propiedad IsOverlay de su indicador en false.
Para establecer un tipo de salida, use la propiedad PlotType como se demuestra a continuación.
El tipo enum es necesario para crear parámetros que tienen varias opciones predefinidas entre las que los usuarios pueden elegir. Usamos el tipo enum en el siguiente ejemplo:
Si agrega este parámetro a un indicador o cBot, verá un menú interactivo de múltiples opciones que le permite elegir uno de los valores enum especificados.
Trabajar con el tiempo
Tiempo de la plataforma y del servidor
Puede obtener la hora actual del servidor accediendo a las propiedades Server.Time o Server.TimeInUtc.
Use la colección Bars.OpenTime para obtener los tiempos de apertura de las barras. La zona horaria se basará en la zona horaria que haya especificado en el atributo de clase TimeZone.
Use la propiedad Application.UserTimeOffset para obtener la zona horaria de la plataforma del usuario. Esto se usa principalmente para convertir el tiempo de su indicador a la zona horaria del usuario.
La propiedad Application.UserTimeOffset devuelve un objeto TimeSpan que representa el desplazamiento de tiempo establecido por el usuario en su plataforma cTrader en comparación con la hora UTC.
cTrader admite tipos de parámetros dedicados de fecha y hora que le permiten obtener valores de fecha y hora fuertemente tipados como entrada para sus algos en lugar de usar el tipo de parámetro string.
Al utilizar los nuevos tipos de parámetros de fecha y hora, puede obtener valores en la zona horaria de su algoritmo con validación mÃnima y máxima incorporada y soporte de optimización completo, al igual que otros tipos de parámetros.