Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1019

 
Artyom Trishkin:
Print() en modo visual

¡Genial! Gracias. Todo salió bien. Comprobado todas las variables a la vez.

 
Roni Iron:

¡Buenas tardes!

Cuáles son las opciones para obtener datos de este tipo:

Hora (UTC), Ask, Bid, AskVolume, BidVolume

Pedir, Ofertar - es suficiente con especificar. No hay que complicarse demasiado, y sólo hay 1 Volumen en Forex.

iVolume

Devuelve el valor del volumen de ticks de la barra (especificada por el parámetro shift) del gráfico correspondiente.

long  iVolume( 
   string           symbol,          // символ 
   int              timeframe,       // период 
   int              shift            // сдвиг 
   );
 
Hola, podríais aconsejarme, cuando instalo un indicador personalizado en MQL4, todo funciona, pero cuando cambio a otro timeframe sólo funciona el deinit (del timeframe anterior), y el init no funciona en uno nuevo, es decir, el programa no se reinicia, sólo desaparece de la ventana. Cuando configuro manualmente el indicador en el nuevo marco temporal todo va bien. ¿Cuál puede ser el problema?
 

Este es exactamente el truco - forex tiene un volumen de ticks de una barra, pero no hay un volumen de comercio de ticks. Pero las fuentes de cotizaciones por ticks (Ducascopy, etc.) dan los valoresAskVolume,BidVolume después de los valores del precio en la forma 0.32,0.12 (y no está claro si son 2 dígitos con comas o 4.

Gracias.

 
¿Hay algún truco para crear un archivo CSV sin separadores?
 

Hola.

Porfavor, avisa, he reescrito mi código para MQL5, que fue escrito para MQL4.

Tengo dos EMAs, uno para uno.

No tengo errores al compilarlo, pero no muestra los mismos resultados que en MQL4.

He mirado el manual deMQL5, pero no entiendo nada.

//+------------------------------------------------------------------+
//|                                                           MA.mq5 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
//--- plot 1
#property indicator_label1  "MA 1"
#property indicator_type1   DRAW_LINE
#property indicator_color1  clrLime
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
//--- plot 2
#property indicator_label2  "MA 2"
#property indicator_type2   DRAW_LINE
#property indicator_color2  clrYellow
#property indicator_style2  STYLE_SOLID
#property indicator_width2  1
//
input int PER=8; //Period
//
double         MA_1[];
double         MA_2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,MA_1,INDICATOR_DATA);
      SetIndexBuffer(1,MA_2,INDICATOR_DATA);
         IndicatorSetInteger(INDICATOR_DIGITS,2);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   program(rates_total,prev_calculated,close);
   return(rates_total);
  }
//+------------------------------------------------------------------+
//+---EMA

double EMA(double N,double P,double EMA0=0)//формула
  {
   double  A=2/(N+1);                      //расчета
   return(A*P+(1-A)*EMA0);                 //ЕМА
  }
//+---
void program(int rates_total,int prev_calculated,const double &close[])
  {

   int Y=rates_total-prev_calculated;
   if(prev_calculated==0) Y=Y-PER-1;

   for(Y=Y; Y>=0; Y=Y-1)

     {
     
      MA_1[Y]=EMA(PER,close[Y],MA_1[Y+1]);//первая
      MA_2[Y]=EMA(PER,MA_1[Y],MA_2[Y+1]);//на неё вторая

     }
   return;
  }
//+------------------------------------------------------------------+
 
imknk:

Hola.

Porfavor, avisa, he reescrito mi código para MQL5, que fue escrito para MQL4.

Tengo dos EMAs, uno para uno.

No tengo errores al compilarlo, pero no muestra los mismos resultados que en MQL4.

Ya me he roto los ojos en el manual deMQL5, no entiendo nada.

En mql5, los búferes tienen que ser volteados, ya que van hacia atrás.

Añade una construcción y lee sobre ella

ArraySetAsSeries(MA_1,true);
Документация по MQL5: Пользовательские индикаторы / SetIndexBuffer
Документация по MQL5: Пользовательские индикаторы / SetIndexBuffer
  • www.mql5.com
[in]  Тип данных, хранящихся в индикаторном массиве. По умолчанию INDICATOR_DATA (значения рассчитанного индикатора). Может также принимать значение INDICATOR_COLOR_INDEX, тогда данный буфер предназначен для хранения индексов цветов для предыдущего индикаторного буфера. Можно задать до 64 цветов в строке #property indicator_colorN. Значение...
 
Vitaly Muzichenko:

En mql5 tienes que voltear los buffers, van hacia atrás y hacia adelante.

Añade una construcción y lee sobre ella

Gracias, lo probaré ahora.
 

Por favor, ayuda, ¿dónde está el error?

Por qué cuando se pasa una condición if a una función, ésta jura " 'all_clouse' - función no definida"

if(buy>=position)
 {
   All_clouse();  // 'All_clouse' - wrong parameters count

 }
..............
дальше код
..............
Уже за пределами OnTick
void All_clouse(int a,double x, double y)
  {
.............
   } к самой функции закрытия ордеров у него претензий нет.
 
Gilmor:

Por favor, ayuda, ¿dónde está el error?

¿Por qué en una condición if con un salto a una función dice " 'all_clouse' - function not defined"?

Porque necesitas introducir parámetros en la función y la estás llamando vacía All_clouse()

void All_clouse(int a,double x, double y)
Razón de la queja: