Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 604

 
new-rena:

Contrapregunta.

¿Cree que el movimiento de cualquier par de divisas: gráfico, precios de compra y venta, etc., depende de un conjunto de sus variables?

El movimiento de la tasa no depende de las variables, pero un operador trata de encontrar regularidades en el movimiento, y sobre esta base selecciona las variables (datos de entrada) para abrir, mantener y cerrar posiciones. Al fin y al cabo, el sistema de trading es un conjunto de reglas destinadas a un trabajo rentable. Tal vez, la distribución de los beneficios y las pérdidas es aleatoria, pero su proporción es diferente y, por lo tanto, se forman sistemas de comercio rentables. Eso debe ser así.
 
Евгений:
El movimiento de la tasa no depende de las variables, pero el operador trata de encontrar patrones en el movimiento, y sobre esta base elige las variables (entradas) para abrir, mantener y cerrar la posición. Al fin y al cabo, el sistema de trading es un conjunto de reglas destinadas a un trabajo rentable. Tal vez, la distribución de los beneficios y las pérdidas es aleatoria, pero su proporción es diferente y, por lo tanto, se forman sistemas de comercio rentables. Supongo que sí.
Básicamente, has respondido a tu propia pregunta. Es decir, sobre el mismo movimiento de precios se puede obtener lo siguiente; beneficio-pérdida = CONST
 
sugerir una función en la restricción, en el Asesor de Expertos quiero poner una prohibición de vender o comprar de la media móvil.
 
KoltRU:
Por favor, aconsejen la función de limitar, en Expert Advisor quiero poner una prohibición de vender o comprar desde la media móvil.
Lo he hecho más sencillo, he añadido una condición al abrir
 

Esto es molesto. La referencia del array no se pasa a la función.

void GetIndValue(int IndNo, int Vol, double *out[]){;};

Con este doble *out[] - no importa cómo se escriba, se producen todos los errores.

'BatIndicators.mqh' BatIndicators.mqh 1 1

'*' - no se puede utilizar el puntero BatIndicators.mqh 18 45

'out' - las matrices se pasan sólo por referencia BatIndicators.mqh 18 46

2 error(es), 0 advertencia(s) 3 1

uno o el otro o ambos. Recuerdo que antes no había problema, o es en C. )


 
Yuriy Asaulenko:

Esto es molesto. La referencia del array no se pasa a la función.

Con este doble *out[] - no importa cómo se escriba, se producen todos los errores.

'BatIndicators.mqh' BatIndicators.mqh 1 1

'*' - no se puede utilizar el puntero BatIndicators.mqh 18 45

'out' - las matrices se pasan sólo por referencia BatIndicators.mqh 18 46

2 error(es), 0 advertencia(s) 3 1

uno o el otro o ambos. Recuerdo que antes no había problema, o es en C. )


Pruébalo así

void GetIndValue(int IndNo, int Vol, double &out[]){}
 
Andrey Barinov:

Prueba esto

Gracias.
 

//--- obtener el número de la nueva subventana, en la que intentaremos añadir el indicador

int subwindow=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL);

Este es el código que estoy viendo https://www.mql5.com/ru/docs/chart_operations/chartindicatoradd

El ejemplo muestra cómo poner un indicador en una subventana. Si no necesitas una subventana, simplemente usa el ejemplo de muwig para mostrar cómo hacerlo...

Документация по MQL5: Операции с графиками / ChartIndicatorAdd
Документация по MQL5: Операции с графиками / ChartIndicatorAdd
  • www.mql5.com
Операции с графиками / ChartIndicatorAdd - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexander Antoshkin:

//--- obtener el número de una nueva subventana, en la que intentaremos añadir un indicador

int subwindow=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL);

Este es el código que estoy viendo https://www.mql5.com/ru/docs/chart_operations/chartindicatoradd

El ejemplo muestra cómo poner un indicador en una subventana. Si no necesita una subventana, basta con usar el ejemplo de muwig para ver cómo hacerlo...

Si quieres añadir el indicador a la ventana principal, entonces:

subventana

[in] Número de subventana del gráfico. 0 significa la ventana principal del gráfico. Para añadir un indicador a una nueva ventana, el parámetro debe ser uno más que el índice de la última ventana existente, es decir, igual aCHART_WINDOWS_TOTAL. Si el valor del parámetro supera el valor deCHART_WINDOWS_TOTAL, no se creará una nueva ventana, el indicador no se añadirá.

 
Karputov Vladimir:

Si necesita añadir un indicador a la ventana principal, entonces:

//+------------------------------------------------------------------+
//|                                                         0000.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

input int MA_Period=21; 
input int MA_Shift=0; 
input ENUM_MA_METHOD MA_Method=MODE_SMA;

int MA_handle=INVALID_HANDLE; 
//+------------------------------------------------------------------+ 
//| Expert initialization function                                   | 
//+------------------------------------------------------------------+ 
int OnInit() 
  { 
  
   MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",  MA_Period,  MA_Shift, MA_Method,  PRICE_CLOSE  );
//--- попробуем добавить индикатор на график 
AddIndicator();

   return(INIT_SUCCEEDED); 
  } 

//+------------------------------------------------------------------+ 
//| Функция проверки и добавления индикатора на график               | 
//+------------------------------------------------------------------+ 
bool AddIndicator() { if(MA_handle==INVALID_HANDLE) 
{ Print(__FUNCTION__,"  Создаем индикатор ");

 MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",  MA_Period,  MA_Shift, MA_Method,  PRICE_CLOSE  );
if(MA_handle==INVALID_HANDLE) 
{ 
 Print("Не удалось создать индикатор . Код ошибки ",GetLastError()); 
 } 
  }     
//--- сбросим код ошибки 
   ResetLastError(); 
//--- накладываем индикатор на график 
  
   Print("Mа построен "); 
//--- получим номер нового подокна, в которое добавим индикатор  
   int subwindow=(int)ChartGetInteger(0,CHART_WINDOWS_TOTAL); 
   PrintFormat("Добавляем индикатор на окно %d графика",subwindow); 
   if(!ChartIndicatorAdd(0,subwindow,MA_handle)) 
     { 
      PrintFormat("Не удалось добавить индикатор  на окно %d графика. Код ошибки  %d", 
                  subwindow,GetLastError()); 
     } 
   return(true); 
  } 
void OnDeinit(const int reason)
{
MA_handle=iCustom(NULL,0,"Examples\\Custom Moving Average",  MA_Period,  MA_Shift, MA_Method,  PRICE_CLOSE  );

Hola Vladimir.

Debo haber formulado mal mi pregunta.

No necesito una subventana, el indicador debe colocarse en el gráfico de precios, como un gráfico estándar

Lo considero un ejemplo y trato de entenderlo.

Quiero que el indicador montado en el gráfico tenga su propio número, para poder crear el número necesario de copias en el gráfico mediante el botón "Añadir" ..... Quiero borrar uno seleccionado por el botón "cruz" ........ (no quiero describirlos todavía))

Razón de la queja: