Cualquier programador experto dispuesto a disparar y cambiarlo.
- Rutina de inicialización de perfil interior.
- Define atributos de perfil interior y parámetros interiores.
- TODO: Agregue el valor mínimo y máximo de los parámetros numéricos y el color predeterminado del stre
función Init ()
interior: título (ÍNDICE DE VOLUMEN ACUMULATIVO);
interior: descripción (ÍNDICE DE VOLUMEN ACUMULATIVO);
interior: requerido Fuente (core.Bar);
interior: tipo (core.Oscillator);
indoor.parameters: addGroup (Selector);
moneda local = USD, EUR, GBP, CHF, JPY, AUD, NZD, CAD;
local I
indoor.parameters: add String (Moneda, Moneda base, Moneda [1]);
para I = 1, 8, 1 do
indoor.parameters: add String Alternative (Moneda, Moneda, Moneda);
fin
indoor.parameters: addGroup (Style);
parámetros interiores: agregar color (color, color de CVI, color de CVI, core.rgb (255, 0, 0));
fin
- Rutina de inicialización de instancia interior.
- Procedimientos de parámetros interiores y flujo de salida generado.
- TODO: Refine el cálculo del período inicial para cada uno de los flujos de salida.
- TODO: Calcule todas las constantes, genere ejemplos de todas las páginas siguientes y cargue todas las bibliotecas necesarias
- Bloque de parametros
local primero
origen local = nil;
- Bloque Stre
local Out = {};
moneda local;
carga local = {};
Lista local = {};
Conde local;
RawList local, RawCount;
SourceData local = {};
pauto local = (% a% a% a)(% a% a% a);
Sombra local;
anfitrión local
mostrador local
semana de descanso local
MA local = {};
- Rutina
función Preparar (solo nombre)
Eegia = instancia.parámetros.Método;
Color = instance.parameters.color;
Moneda = instance.parameters.Currency;
host = core.host;
counter = host: execute (getTradingDayOffset);
weekoffset = host: execute (getTradingWeekOffset);
origen = instancia.source;
inicial = origen: primero ();
dominio = perfil: id (). . (.. Fuente: título ()..... Moneda..);
instancia: nombre (nombre);
crncy1 local, crncy2;
RawList, RawCount = getInstrumentList ();
local I
BANDERA local = falso;
Cuenta = 0;
para I = 1, RawCount, 1 do
BANDERA = falso;
crncy1, crncy2 = string.match (RawList, pauto);
si (crncy1 == moneda) o (crncy2 == moneda) entonces
BANDERA = verdadero;
fin
si FLAG entonces
Cuenta = Cuenta 1;
List [Count] = RawList
fin
fin
para I = 1, Count, 1 do
SourceData = core.host:execute(getSyncHistory, List, fuente: barSize (), fuente: isBid (), 0, 200 I, 100 I);
cargando = verdadero;
fin
if (no (nameOnly)) entonces
CVI = instancia: addStream (CVI, core.Line, nombre, CVI, color, primero);
fin
fin
función getInstrumentList ()
lista local = {};
recuento local = 0;
fila local, enumeración;
enum = core.host:findTable (offers): enumerator ();
row = enum: next ();
mientras que la fila ~ = nada hace
cuenta = cuenta 1;
list [count] = row.Instrument;
row = enum: next ();
fin
lista de retorno, cuenta;
fin
Avance local = 0;
Declinación local = 0;
- Rutina de cálculo interior.
- TODO: Añade tu código para los valores de salida de cálculo
Función de actualización (periodo, modo)
si período lt; primero o no fuente: hasData (periodo) entonces
regreso;
fin
Avanzando = 0;
En declive = 0;
para I = 1, Count, 1 do
si cargando entonces
regreso;
fin
fin
local I
local p;
para I = 1, Count, 1 do
p = Inicialización (I, punto)
Calcular (I, p, periodo);
fin
fin
función Calcular (I, p, punto)
si no p entonces
regreso;
fin
número local = 0,0,0,0,0,0,0,0;
local j;
crncy1 local, crncy2;
crncy1, crncy2 = string.match (List, pauto);
si crncy1 == moneda entonces
si SourceData.close gt; SourceData.close [p-1] entonces
Avanzando = Avanzando SourceData.volume;
elseif SourceData.close lt; SourceData.close [p-1] entonces
Disminuyendo = Disminuyendo SourceData.volume;
fin
elseif crncy2 == moneda entonces
si SourceData.close gt; SourceData.close [p-1] entonces
Disminuyendo = Disminuyendo SourceData.volume;
elseif SourceData.close lt; SourceData.close [p-1] entonces
Avanzando = Avanzando SourceData.volume;
fin
fin
CVI [período] = CVI [período-1] (Avanzando - Disminuyendo);
fin
- la función se llama cuando la operación asíncrona ha finalizado
función AsyncOperationFinished (cookie)
local I
para I = 1, Count, 1 do
si cookie == 100 yo entonces
cargando = verdadero;
galleta elseif == 200 I entonces
cargando = falso;
instancia: updateFrom (0);
fin
fin
devuelve core.ASYNC_REDRAW;
fin
Inicialización de la función (I, punto)
Vela local;
Candle = core.getcandle (source: barSize (), source: date (period), offset, weekoffset);
Si está cargando o SourceData: size () == 0 entonces
falso retorno;
fin
si período lt; fuente: primero () luego
falso retorno;
fin
local p = core.findDate (SourceData, Candle, false);
- no se encuentra la vela
si p lt; 0 entonces
falso retorno;
de lo contrario devuelve p;
fin
fin