Primer Indicador Sencillo (GMA)

From FxCodeBaseWiki
Jump to: navigation, search

El Especificación

El Indicador del Moving Average de Guppy muestra 12 líneas de exponential moving average: 6 corto (3, 5, 8, 10, 12, 15) y 6 largo (30, 35, 40, 45, 50, 60). Las líneas de corto debe ser azul y la líneas de largo debe ser verde.

Escribirlo

Crea un Archivo

Primero, crea el archivo de vacío:

Cuando el nuevo archivo del indicador es creado, puede salvarlo ahora. El nombre del archivo será un acrónimo o un nombre que es acortado para el indicador (como tal MVA para simple moving average). Ahora, puede llame su indicador de GMA (para Guppy Multiple Moving Average).

  • Haga clic en el comando File->Save As. Ya que hemos creado un indicator, el editor abre la carpeta de indicators de SDK. Si no hacerlo, por favor cambia la carpeta. A veces administración del File Open/Save diálogo que es cambiado en todos nuevo versión de Windows, no hace con éxito.
  • Entra GMA.lua como el nombre del archivo y entonces haga clic en Save.

Eso es todo. El archivo es creado.

“Introduce” Indicador

Toda información relativo a “introduce” debe ser especificada en la función de Init del indicador. Así, déjenos escribirlo. Primero defina un nombre de “humanos”.

function Init()
    indicator:name("Guppy's Multiple Moving Average");
end

Siguiente, debe decir el Marketscope que es el precio que puede aplicar el indicador a. En su caso, el indicador no usa precios de abre, alto, bajo y cierre en el mismo tiempo y lo puede ser aplicado a algún de estos precios. Por ejemplo, lo puede ser aplicado a sólo cerrar precios. También, el indicador puede ser aplicado a unos datos de tick. Así, los precios necesario para este indicador son precios de tick.

function Init()
    indicator:name("Guppy's Multiple Moving Average");
    indicator:requiredSource(core.Tick);
end

A continuación, debe indicar cómo colocar su indicador en el gráfico. Su indicador procesara los datos que están similares a los precios de fuente, por lo que pueden extraerse sobre estos precios. Sin embargo, los usuarios pueden especificar que el indicador debe establecerse en un área separada, pero por defecto el Marketscope recomienda que el indicador se dibujan sobre los precio.

function Init()
    indicator:name("Guppy's Multiple Moving Average");
    indicator:requiredSource(core.Tick);
    indicator:type(core.Indicator);
end

Eso es todo. Marketscope conoce todos lo necesario permite el usuario aplicar su indicador al gráfico.

Defina la Conducta de Indicador

El siguiente paso es describir que hacer cuando el usuario ha ya aplicado el indicador al precio gráfico.

Aplicar el Indicador en la Gráfico

La función de Prepare que es llamada todos tiempos:

  • el usuario es aplicando el indicador y los cambias el instrumento (como tal la aplicación del indicador) o el period del gráfico. En este punto de tiempo, debe establecer qué quiere para dibujar en Marketscope y prepara su código para la calculación de valores en el futuro.

Ahora, puede comenzar. Primero, anida la función de Prepare y coloque los datos en el variable de global para más fácil acceso en el futuro. El código para la función de Prepare es

function Prepare(onlyName)
    local name;

    -- set the indicator name 
    name = profile:id() .. "(" .. instance.source:name() .. ")";
    instance:name(name);

    -- if indicator is called to update the name only - do nothing else
    if onlyName then
        return ;
    end
end


A continuación tiene crear las líneas de que mostrará nuestro los indicadores de EMA’s. Tenemos recordar las tablas devuelto por el método (addStream) que es usada para creando las líneas del indicador. Estas tablas serán usados para llenar la calculada los datos. Por favor, da atención al último parámetro del método de addStream. Este es el primero período que puede ser calculada para la línea. En nuestro caso, vamos a usar exponential moving average, tan su datos puede ser calculada tan pronto como los datos del fuente se disponible.

Puede pregunta como podría ocurrir que los datos del fuente no se disponible a 0 (el más viejo) la barra? Es sencillo. Si el fuente es un precio – no estar puede. Pero nuestro indicador es un indicador de tick y, tan, puede ser aplicado a otros los indicadores, que puede tener un retraso contra el primero barra del precio.

Reservamos todos nuestro EMA’s en un rango. Introducimos el función de CreateEMA evita duplicando el mismo código varias veces. En el mismo tiempo, puede reserva la fuente, el primero barra y calcula el valor del formula. Nunca de los datos será cambio sin tenido el indicador cerrado y aplicado otra vez. Reservando de este los datos hacia adicional ejecución más rápido porque no accedemos y/o calcula ellos.

local source = nil; -- the source
local first;        -- the oldest source dat available
local EMAs = {};    -- an array of outputs

function CreateEMA(index, N, color, name)
    local label, ema;
    ema = {};
    -- line label
    label = "EMA" .. N;
    -- create the line
    ema.alpha = 2.0 / (N + 1.0);
    ema.stream = instance:addStream(label, core.Line, name .. label, label, color, source:first());

    EMAs[index] = ema;
end

function Prepare(onlyName)
    local name;

    -- set the indicator name (use the short name of our indicator: GMMA)
    name = profile:id() .. "(" .. instance.source:name() .. ")";
    instance:name(name);

    -- if indicator is called to update the name only - do nothing else
    if onlyName then
        return ;
    end

    source = instance.source;
    first = source:first();

    CreateEMA(0, 3, core.rgb(0, 0, 255), name);
    CreateEMA(1, 5, core.rgb(0, 0, 255), name);
    CreateEMA(2, 8, core.rgb(0, 0, 255), name);
    CreateEMA(3, 10, core.rgb(0, 0, 255), name);
    CreateEMA(4, 12, core.rgb(0, 0, 255), name);
    CreateEMA(5, 15, core.rgb(0, 0, 255), name);

    CreateEMA(6, 30, core.rgb(255, 0, 0), name);
    CreateEMA(7, 35, core.rgb(255, 0, 0), name);
    CreateEMA(8, 40, core.rgb(255, 0, 0), name);
    CreateEMA(9, 45, core.rgb(255, 0, 0), name);
    CreateEMA(10, 50, core.rgb(255, 0, 0), name);
    CreateEMA(11, 60, core.rgb(255, 0, 0), name);
end

Calculando el Indicador

Que se todas, nuestro indicador explico que dibuja y es preparado calcular las líneas. Ahora podemos escribe el más importante parte del indicador: la función de Actualización.

Este función es llamada para cada período, comenzando desde el más viejo uno que no se calculada aun. Tan el primero tiempo la función de Actualización será llamada para cada período del fuente precio. A continuación lo será llamada sólo para nuevo los períodos de apareciendo.

Primero, escribe la función que calcula el valor de EMA para el particular período. Hay tres casos:

  1. Si el período es antes del primero período que puede ser calculada – hace nada.
  2. Si es el primero período podemos calcular – sólo toma el valor del precio.
  3. Si es el siguiente los períodos – calcula el EMA para el especificado período.
function CalcEMA(index, period)
    local ema = EMAs[index];
    if period < first then
       return ;
    elseif period == first then
       ema.stream[period] = source[period];
    else
       ema.stream[period] = source[period] * ema.alpha + ema.stream[period - 1] * (1 - ema.alpha);
    end
end


Se cansado aún? El paso final consiste en escribir la función de actualización y llamar a la función de cálculo para cada una de las líneas de nuestro indicador.

function Update(period)
    CalcEMA(0, period);
    CalcEMA(1, period);
    CalcEMA(2, period);
    CalcEMA(3, period);
    CalcEMA(4, period);
    CalcEMA(5, period);

    CalcEMA(6, period);
    CalcEMA(7, period);
    CalcEMA(8, period);
    CalcEMA(9, period);
    CalcEMA(10, period);
    CalcEMA(11, period);
end

Último Versión

Si todo es completo correcto tiene el indicador imprimible en el Integrated Lua EditorDebugger. Guardarlo.

Puede también descarga el último versión. Justo clic el derecho botón en el nombre GMA.lua y elige "Save Target As...". Guarda el archivo de GMA.lua al subcarpeta indicators del carpeta de Indicore SDK.

'"`UNIQ--toggledisplay-0000000E-QINU`"'

Probarlo

Si todos hacer correctamente, el indicador es encontrarse en el apropiada localización y listo depurar.

  • Ejecuta Indicator Lua EditorDebugger.
  • Elige File->Open el Indicador y a continuación elige GMA.lua en la lista de los indicadores.
  • El indicador comenzado. Justo ejecutarlo (haga clic en Debug->Run)
  • Lo propiedades del indicador aparece. Escoge el precio fuente simular los precios. Hacer así, selecciona el “Fuente de Precio” fila y clic en…. Botón escoger el fuente. Usted verá el cuadro de diálogo Choose Price Source:
    Luadebugging6-1-2016.png

    Puede escoger el archivo con los precios o usa los datos desde el servidor del director de las cotizaciones:
    • Escoger el archivo del precio, haga clic en File y en lugar clic el elipsis botón(...). Puede consultar CodeBase Price Archive obtener 1-ano las archivos de los datos.
    • Puede usa el servidor de director de los cotización descargar los datos del cotización de 1-minuto para instrumento de ha escogido en el período que va ha escogido. Los datos son descargada rápidamente. Cargamento del entero ano del 1-minuto los datos para un instrumento (aproximadamente 300K las velas) normalmente lo toma menos que 30 los segundos. Usar los datos desde director de las cotizaciones, haga clic en Quotes Manager en lugar escoge el instrumento, el marco temporal y el rango de datos.
      Después de los parámetros son configurando, haga click en OK. Si tiene ha escogido cargar los datos desde el servidor de director las cotizaciones antes, verá el cuadro de mensaje que pregunta si no hube descargada los datos antes, verá el cuadro de mensaje que pregunta si quiere descarga los datos ahora. Haga clic en Yes. Verá el cuadro de diálogo del Load Quotes:
      Luadebugging6-1-2016.png
      Haga clic en OK comenzar descargando los datos para el instrumento y el período que ha escogido. Espera un poco mientras los datos son cargados
      Luadebugging6-3.PNG
  • Después el fuente de precio es ha escogido, haga clic en OK en el cuadro de diálogo Parameters continuar.
  • El depurador trabaja para pocos segundos y en lugar un mensaje "El actualización es completado" aparece en el registro de Resultados.
  • Cambia de un tab de Gráfico y haga clic en Debug->Chart->Fit All Bars ver el entero imagen.
Gma2.png

Eso es exactamente lo que queríamos.

Mejorarlo

Usa el Estándar de la Aplicación de EMA

Actualmente, el EMA ya exista en Marketscope, así no necesitamos escribirlo. Todos necesitamos es justo usar el indicador que ya existente. Hagamos uso de lo.

Primero, debemos aplica el indicador de EMA en el fuente de los datos con todos los parámetros tenemos. Hacerlo en la función de CreateEMA():

  • No ya necesitamos el valor de calculando alpha Haga el indicador de EMA se preocupado por lo.
  • Sin embargo, aunque conocemos que el EMA debe ser mostrando desde el más viejo del fuente período de precio – hagamos nuestro código fiable y pregunta el indicador que es el más viejo período lo ser calcula. Si en el futuro este valor es cambiado, nosotros no haremos actualización nuestro indicador.
function CreateEMA(index, N, color, name)
    local label, ema;
    ema = {};
    -- line label
    label = "EMA" .. N;
    -- create the EMA indicator
    ema.indicator = core.indicators:create("EMA", source, N);
    -- create get the oldest period it can calculate
    ema.first = ema.indicator.DATA:first();
    -- and create our line to draw
    ema.stream = instance:addStream(label, core.Line, name .. label, label, color, ema.first);

    EMAs[index] = ema;
end


Ahora cambia el proceso de calculación. En su lugar de calculando el valor por nos justo necesitamos forzar los indicadores ser actualizada y en lugar obtiene su los valores. Por favor, toma nota que otra parámetro es anidada al función de Update. Eso es casi menos de usa para el sencillo los indicadores pero es usada optimizar el actualizada de todos los indicadores creada en nuestro los indicadores. Así, justo pasa este parámetro al grupo de los EMA creábamos.

function CalcEMA(index, period, mode)
    local ema = EMAs[index];
    -- force EMA to be updated
    ema.indicator:update(mode);
    
    -- and fill our output if it has data.
    if period < ema.first then
       return ;
    else
       ema.stream[period] = ema.indicator.DATA[period];
    end
end

function Update(period, mode)
    CalcEMA(0, period, mode);
    CalcEMA(1, period, mode);
    CalcEMA(2, period, mode);
    CalcEMA(3, period, mode);
    CalcEMA(4, period, mode);
    CalcEMA(5, period, mode);

    CalcEMA(6, period, mode);
    CalcEMA(7, period, mode);
    CalcEMA(8, period, mode);
    CalcEMA(9, period, mode);
    CalcEMA(10, period, mode);
    CalcEMA(11, period, mode);
end

Voilá! Ahora no hacemos calcular EMA pero usa el Estañando indicador de EMA.

Personaliza las líneas de los Parámetros y los Colores

Ahora, hacemos nuestro indicador customizable. El usuario debe ser escoger los parámetros así para calculación de EMA y para las líneas la mostrando. Anidar los parámetros debemos volver al función de Init().

El parámetro es algún valor (integré, real, Bolean, cuerda y etcétera) que puede ser entrada por el usuario que el indicador es acerca de ser aplicada en el gráfico. Ayudar el Marketscope pregunta estos los parámetros debemos también “introducen” ellos tan introducimos el indicador en sí mismo.

Para cada parámetro debemos decir:

  • El identificador, o el nombre de corte, usaremos preguntar para del valor.
  • El "humanos" nombre, que será mostrando al usuario.
  • El valor por defecto, que será usada si usuario no entrada algún valor.
  • Y, para los parámetros de número podemos específica los valores de mínimo y máximo.

Ahora, puede comenzar. Tiene las líneas de 12 y debe especificar los parámetros para cada de ellos.

Anidamos los parámetros de numérico primero. El EMA obtiene el parámetro de positive ara el número de los barras ser calculada.

function Init()
    indicator:name("Guppy's Multiple Moving Average");
    indicator:requiredSource(core.Tick);
    indicator:type(core.Indicator);

    indicator.parameters:addInteger("S1", "1st Short Line", "", 3, 2, 10000);
    indicator.parameters:addInteger("S2", "2nd Short Line", "", 5, 2, 10000);
    indicator.parameters:addInteger("S3", "3rd Short Line", "", 8, 2, 10000);
    indicator.parameters:addInteger("S4", "4th Short Line", "", 10, 2, 10000);
    indicator.parameters:addInteger("S5", "5th Short Line", "", 12, 2, 10000);
    indicator.parameters:addInteger("S6", "6th Short Line", "", 15, 2, 10000);
    indicator.parameters:addInteger("L1", "1st Long Line", "", 30, 2, 10000);
    indicator.parameters:addInteger("L2", "2nd Long Line", "", 35, 2, 10000);
    indicator.parameters:addInteger("L3", "3rd Long Line", "", 40, 2, 10000);
    indicator.parameters:addInteger("L4", "4th Long Line", "", 45, 2, 10000);
    indicator.parameters:addInteger("L5", "5th Long Line", "", 50, 2, 10000);
    indicator.parameters:addInteger("L6", "6th Long Line", "", 60, 2, 10000);
end

Estos parámetros son ahora disponibles como instance.parameters.ID, por ejemplo instance.parameters.S1 para el valor entrada para el primero la línea de corto.

Ahora, reemplaza los constantes en la función de Prepare con los valores del parámetro:

function Prepare(onlyName)
    local name;

    -- set the indicator name (use the short name of our indicator: GMMA)
    name = profile:id() .. "(" .. instance.source:name() .. ")";
    instance:name(name);

    -- if indicator is called to update the name only - do nothing else
    if onlyName then
        return ;
    end

    source = instance.source;
    first = source:first();

    CreateEMA(0, instance.parameters.S1, core.rgb(0, 0, 255), name);
    CreateEMA(1, instance.parameters.S2, core.rgb(0, 0, 255), name);
    CreateEMA(2, instance.parameters.S3, core.rgb(0, 0, 255), name);
    CreateEMA(3, instance.parameters.S4, core.rgb(0, 0, 255), name);
    CreateEMA(4, instance.parameters.S5, core.rgb(0, 0, 255), name);
    CreateEMA(5, instance.parameters.S6, core.rgb(0, 0, 255), name);

    CreateEMA(6, instance.parameters.L1, core.rgb(255, 0, 0), name);
    CreateEMA(7, instance.parameters.L2, core.rgb(255, 0, 0), name);
    CreateEMA(8, instance.parameters.L3, core.rgb(255, 0, 0), name);
    CreateEMA(9, instance.parameters.L4, core.rgb(255, 0, 0), name);
    CreateEMA(10, instance.parameters.L5, core.rgb(255, 0, 0), name);
    CreateEMA(11, instance.parameters.L6, core.rgb(255, 0, 0), name);
end

Ahora, hacemos los colores y de moda de la línea configurable tan bien. Necesitamos una pareja de parámetros para los colores (para corto y larga), para la línea anchura y para de moda de la línea. Se seguro que de moda de la línea es también justo un integré, pero usemos un flag dice el Marketscope que necesita un opción para de modas de la línea aquí.

function Init()
    indicator:name("Guppy's Multiple Moving Average");
    indicator:requiredSource(core.Tick);
    indicator:type(core.Indicator);

    indicator.parameters:addInteger("S1", "1st Short Line", "", 3, 2, 10000);
    indicator.parameters:addInteger("S2", "2nd Short Line", "", 5, 2, 10000);
    indicator.parameters:addInteger("S3", "3rd Short Line", "", 8, 2, 10000);
    indicator.parameters:addInteger("S4", "4th Short Line", "", 10, 2, 10000);
    indicator.parameters:addInteger("S5", "5th Short Line", "", 12, 2, 10000);
    indicator.parameters:addInteger("S6", "6th Short Line", "", 15, 2, 10000);
    indicator.parameters:addInteger("L1", "1st Long Line", "", 30, 2, 10000);
    indicator.parameters:addInteger("L2", "2nd Long Line", "", 35, 2, 10000);
    indicator.parameters:addInteger("L3", "3rd Long Line", "", 40, 2, 10000);
    indicator.parameters:addInteger("L4", "4th Long Line", "", 45, 2, 10000);
    indicator.parameters:addInteger("L5", "5th Long Line", "", 50, 2, 10000);
    indicator.parameters:addInteger("L6", "6th Long Line", "", 60, 2, 10000);

    indicator.parameters:addColor("SC", "Short Line Color", "", core.rgb(0, 0, 255));
    indicator.parameters:addColor("LC", "Long Line Color", "", core.rgb(255, 0, 0));
    indicator.parameters:addInteger("W", "Line Width", "", 1, 1, 5);
    indicator.parameters:addInteger("S", "Line Style", "", core.LINE_SOLID);
    indicator.parameters:setFlag("S", core.FLAG_LEVEL_STYLE);
end

local source = nil; -- the source
local first;        -- the oldest source dat available
local EMAs = {};    -- an array of outputs

function CreateEMA(index, N, color, name)
    local label, ema;
    ema = {};
    -- line label
    label = "EMA" .. N;
    -- create the line
    ema.indicator = core.indicators:create("EMA", source, N);
    ema.first = ema.indicator.DATA:first();
    ema.stream = instance:addStream(label, core.Line, name .. label, label, color, ema.first);
    ema.stream:setWidth(instance.parameters.W);
    ema.stream:setStyle(instance.parameters.S);

    EMAs[index] = ema;
end

function Prepare(onlyName)
    local name;

    -- set the indicator name (use the short name of our indicator: GMMA)
    name = profile:id() .. "(" .. instance.source:name() .. ")";
    instance:name(name);

    -- if indicator is called to update the name only - do nothing else
    if onlyName then
        return ;
    end

    source = instance.source;
    first = source:first();

    CreateEMA(0, instance.parameters.S1, instance.parameters.SC, name);
    CreateEMA(1, instance.parameters.S2, instance.parameters.SC, name);
    CreateEMA(2, instance.parameters.S3, instance.parameters.SC, name);
    CreateEMA(3, instance.parameters.S4, instance.parameters.SC, name);
    CreateEMA(4, instance.parameters.S5, instance.parameters.SC, name);
    CreateEMA(5, instance.parameters.S6, instance.parameters.SC, name);

    CreateEMA(6, instance.parameters.L1, instance.parameters.LC, name);
    CreateEMA(7, instance.parameters.L2, instance.parameters.LC, name);
    CreateEMA(8, instance.parameters.L3, instance.parameters.LC, name);
    CreateEMA(9, instance.parameters.L4, instance.parameters.LC, name);
    CreateEMA(10, instance.parameters.L5, instance.parameters.LC, name);
    CreateEMA(11, instance.parameters.L6, instance.parameters.LC, name);
end

Que es todo. Sin embargo, necesitamos un pequeño “abrillantador” aquí. Ahora, la lista claro de los parámetros vista más difícil manejar. Justo separado en los grupos:

function Init()
    indicator:name("Guppy's Multiple Moving Average");
    indicator:requiredSource(core.Tick);
    indicator:type(core.Indicator);

    indicator.parameters:addGroup("Short Lines");
    indicator.parameters:addInteger("S1", "1st Line", "", 3, 2, 10000);
    indicator.parameters:addInteger("S2", "2nd Line", "", 5, 2, 10000);
    indicator.parameters:addInteger("S3", "3rd Line", "", 8, 2, 10000);
    indicator.parameters:addInteger("S4", "4th Line", "", 10, 2, 10000);
    indicator.parameters:addInteger("S5", "5th Line", "", 12, 2, 10000);
    indicator.parameters:addInteger("S6", "6th Line", "", 15, 2, 10000);
    indicator.parameters:addGroup("Long Lines");
    indicator.parameters:addInteger("L1", "1st Line", "", 30, 2, 10000);
    indicator.parameters:addInteger("L2", "2nd Line", "", 35, 2, 10000);
    indicator.parameters:addInteger("L3", "3rd Line", "", 40, 2, 10000);
    indicator.parameters:addInteger("L4", "4th Line", "", 45, 2, 10000);
    indicator.parameters:addInteger("L5", "5th Line", "", 50, 2, 10000);
    indicator.parameters:addInteger("L6", "6th Line", "", 60, 2, 10000);
    indicator.parameters:addGroup("Style");
    indicator.parameters:addColor("SC", "Short Line Color", "", core.rgb(0, 0, 255));
    indicator.parameters:addColor("LC", "Long Line Color", "", core.rgb(255, 0, 0));
    indicator.parameters:addInteger("W", "Line Width", "", 1, 1, 5);
    indicator.parameters:addInteger("S", "Line Style", "", core.LINE_SOLID);
    indicator.parameters:setFlag("S", core.FLAG_LEVEL_STYLE);
end

Hace el Método de Suavizando Personalizable

Finalmente, hacemos el método de suavizando customizable tan bien. El identificador del indicador justo un cuerda, tan todos necesitamos es anidar un parámetro de cuerda y reemplazar el constante de cuerda de "EMA" con el parámetro.

function Init()
    indicator:name("Guppy's Multiple Moving Average");
    indicator:requiredSource(core.Tick);
    indicator:type(core.Indicator);

    indicator.parameters:addGroup("Method");
    indicator.parameters:addString("M", "Smoothing Method", "", "EMA");

    ...
end

function CreateEMA(index, N, color, name)
    local label, ema;
    ema = {};
    -- line label
    label = instance.parameters.M .. N;
    -- create the line
    ema.indicator = core.indicators:create(instance.parameters.M, source, N);
    ema.first = ema.indicator.DATA:first();
    ema.stream = instance:addStream(label, core.Line, name .. label, label, color, ema.first);
    ema.stream:setWidth(instance.parameters.W);
    ema.stream:setStyle(instance.parameters.S);

    EMAs[index] = ema;
end

Ahora, si el usuario pone en MVA en lugar de EMA el sencillo movible promedio será en lugar de exponencial. Sin embargo, no bueno idea requiere el usuario todos los nombres. Hacemos este parámetro una opción.

function Init()
    indicator:name("Guppy's Multiple Moving Average");
    indicator:requiredSource(core.Tick);
    indicator:type(core.Indicator);

    indicator.parameters:addGroup("Method");
    indicator.parameters:addString("M", "Smoothing Method", "", "EMA");
    indicator.parameters:addStringAlternative("M", "Simple Moving Average", "", "MVA");
    indicator.parameters:addStringAlternative("M", "Linear Weighted Moving Average", "", "LWMA");
    indicator.parameters:addStringAlternative("M", "Exponential Moving Average", "", "EMA");
    indicator.parameters:addStringAlternative("M", "Smoothed Moving Average", "", "SMMA");
    indicator.parameters:addStringAlternative("M", "Wilders Moving Average", "", "WMA");
    indicator.parameters:addGroup("Short Lines");
    ...
end

Último Versión

Puede descarga el último versión con todos los mejorías hicimos. Justo clic en derecho botón en el nombre GMA1.lua y elige "Save Target As...". Guarda el archivo de GMA1.lua al subcarpeta indicators del carpeta de Indicore SDK folder.

'"`UNIQ--toggledisplay-0000001F-QINU`"'

Este Artículo en Otros Idiomas

Language: English  • español • français • русский • 中文 • 中文(繁體)‎