lunes, 13 de enero de 2025

Indicadores (Programaci贸n orientada a objetos) MQL5



馃搶 Hice un algoritmo para utilizar indicadores mediante programaci贸n orientada a objetos.

✅ Funcionamiento:
Deben ejecutarlo en un sistema que se ejecute por cada apertura de vela una sola vez.
La forma de escribirlo es la siguiente:

CiMA MovAvg1(_Symbol, PERIOD_CURRENT, 9, 0, MODE_SMA, PRICE_CLOSE);
馃搶 La clase CiMA se aplica al objeto MovAvg1, pasando los argumentos iniciales de la media m贸vil.

馃敘 Para conocer el valor, se utiliza:

double maValue = MovAvg1.buffer(0, 0);
馃憠 En la funci贸n buffer, el primer valor indica el buffer y el segundo, la posici贸n de la vela (de derecha a izquierda, comenzando desde cero).

馃挕 Nota: Tendr谩n que crear una clase para cada indicador al final del c贸digo derivada de la clase CIndicator, con su constructor y par谩metros del indicador como argumentos iniciales del constructor para obtener el handle.

Ejemplo:

class CiMA : public CIndicator
{
public:
CiMA(string symbol, ENUM_TIMEFRAMES period, int ma_period, int ma_shift, ENUM_MA_METHOD ma_method, ENUM_APPLIED_PRICE applied_price)
{
handle = iMA(symbol, period, ma_period, ma_shift, ma_method, applied_price);
if (!IsHandleValid())
{
Print("Error: No se pudo crear el handle para iMA.");
}
}
};
馃攽 C贸digo base:
#property copyright "Copyright 2025, Fernando Javier De Mendon莽a."
#property link "https://www.algomercados.com"
#property version "1.00"

/
struct SBuffer
{
double values[];
};

class CIndicator
{
protected:
int handle;
SBuffer Buffers[10];
bool handleValid;

public:
double lastValidValue[10];

void Release() { IndicatorRelease(handle); handleValid = false; }
bool IsHandleValid(); // Verifica si el handle es v谩lido
CIndicator();

//
double buffer(int bufferIndex, int shift = 0);
};

// Constructor
CIndicator::CIndicator() : handle(-1), handleValid(false)
{
for (int i = 0; i < 10; i++)
{
ArraySetAsSeries(Buffers[i].values, true);
lastValidValue[i] = 0.0;
}
}


bool CIndicator::IsHandleValid()
{
return handle != INVALID_HANDLE;
}


double CIndicator::buffer(int bufferIndex, int shift)
{
if (!IsHandleValid())
{
Print("Advertencia: Handle inv谩lido. Usando 煤ltimo valor v谩lido conocido.");
return lastValidValue[bufferIndex];
}

if (CopyBuffer(handle, bufferIndex, shift, 1, Buffers[bufferIndex].values) < 0)
{
Print("Error al copiar el buffer. Usando 煤ltimo valor v谩lido conocido.");
return lastValidValue[bufferIndex];
}


lastValidValue[bufferIndex] = Buffers[bufferIndex].values[0];
return NormalizeDouble(lastValidValue[bufferIndex], _Digits);
}
❓ ¿Est谩s de acuerdo con pasar como argumentos iniciales para la inicializaci贸n del objeto los par谩metros del indicador? Acepto sugerencias.

martes, 13 de febrero de 2024

Nuevo Indicador Desarrollado!

Espa帽ol;

Nuevo indicador #MT4 inspirado en la distribuci贸n t de Student (Para su estudio). Se帽al alcista cuando hay una barra vertical verde por encima de cero, y se帽al bajista cuando hay una barra vertical verde por debajo de cero. No usar aisladamente y aplicar un proceso de optimizaci贸n adecuado para encontrar la configuraci贸n 贸ptima para su activo financiero. Par谩metros: StopLoss (medido en pips), el ProfitFactor (Multiplicador, tantas veces el StopLoss), El T_Cr铆tico (Valor Cr铆tico de T en funci贸n de la probabilidad a que se quiera llegar, ver tabla t) y T_Periodo (Periodo de la media m贸vil, desviaci贸n est谩ndar,  "n"). C贸digo >>>>

English:

New indicator #MT4 inspired by the Student's t-distribution (For study). Bullish signal when there is a green vertical bar above zero, and bearish signal when there is a green vertical bar below zero. Do not use in isolation and apply an appropriate optimization process to find the optimal configuration for your financial asset. Parameters: StopLoss (measured in pips), the ProfitFactor (Multiplier, so many times the StopLoss), The T_Critical (Critical T-Value depending on the desired probability, see t-table) and T_Period (Period of the moving average, standard deviation,  "n"). Code >>>>;

(DescargarIndicador/Download Indicator)


jueves, 25 de mayo de 2023

mi茅rcoles, 12 de abril de 2023

lunes, 27 de febrero de 2023

C贸digos de mis art铆culos.

Archivos para el Art铆culo: "El filtro de Kalman, desde tu GPS a tu plataforma de negociaci贸n"


Indicador: RSI aplicado al Filtro de Kalman


Archivos para Metatrader 4:


Archivo Compilado .ex4: (drivegoogle)


Archivo de c贸digo .mq4: (drivegoogle)


Indicadores (Programaci贸n orientada a objetos) MQL5

馃搶 Hice un algoritmo para utilizar indicadores mediante programaci贸n orientada a objetos. ✅ Funcionamiento: Deben ejecutarlo en un sistema q...