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

 
Es como si estuviéramos hablando de un 4. Los ejemplos parecen haber sido escritos en momentos diferentes, de ahí que se utilicen funciones distintas, lo que resulta engañoso.
 
Artyom Trishkin:

¿Dónde has encontrado un tutorial sobre mql5?

reglas de google:Timur Sergeyevich Mashnin"Lenguaje de programación MQL5: uso avanzado de la plataforma comercial MetaTrader 5".

Y así, sí, en MQL4 Metacquotes, se anunció oficialmente el libro de texto de Kovalev Sergey. Programación en el lenguaje algorítmico MQL4

 
psyman:
Es como una discusión sobre el 4. Parece que los ejemplos se escribieron en momentos diferentes, de ahí que se utilicen funciones distintas, lo que induce a error.

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Cualquier pregunta para los novatos en MQL4, ayuda y discusión sobre algoritmos y códigos

Artyom Trishkin, 2016.11.09 22:50

En esta rama quiero empezar a ayudar a aquellos que realmente quieren entender y aprender a programar en el nuevo MQL4 y quieren cambiar fácilmente a MQL5 - los lenguajes son muy similares.

Este blog será un buen lugar para discutir las tareas, los algoritmos y cualquier otra cuestión relacionada con la programación de la MT de una manera u otra.

Espero que otros miembros experimentados de nuestro foro se unan a la discusión y el hilo sea interesante para todos.


 
Igor Makanu:

reglas de google:Timur Sergeyevich Mashnin"Lenguaje de programación MQL5: uso avanzado de la plataforma comercial MetaTrader 5".

Y así, sí, en MQL4 Metacquotes, se anunció oficialmente el libro de texto de Kovalev Sergey. Programación en lenguaje algorítmico MQL4

¿Quién de aquí conoce a este Timur?

Después de todo, el hombre está escribiendo:

¿Qué libro de texto? Hay una referencia, hay artículos, hay un foro, pero no hay un libro de texto. Y para afirmar que es necesario allí, y lo que para echar - es al autor del libro de texto, que todavía tiene que buscar y encontrar en los recursos de terceros. En otras palabras, la reclamación es infundada, y no a MetaQuotes.
 

=esdecir,la afirmación no está fundamentada


No creo que este hilo sea el lugar para hacer afirmaciones, pero si quieres precisión, la palabra libro de texto está sacada de aquí https://book.mql4.com/ru

Desde el principio empiezan a usar init https://book.mql4.com/ru/programm/structure , sin decir nada de OnInit, y siguen en otros ejemplos.

Учебник по MQL4
Учебник по MQL4
  • book.mql4.com
В настоящее время персональный компьютер стал незаменимым помощником в жизни каждого человека. Благодаря развитию Интернета и увеличению мощности современных компьютеров открылись новые возможности во многих областях деятельности. Ещё десять лет назад торговля на финансовых рынках была доступна только банкам и узкому кругу специалистов. Сегодня...
 
psyman:

=esdecir,la afirmación no está fundamentada


No creo que este hilo sea el lugar para hacer afirmaciones, pero si quieres precisión, la palabra libro de texto está sacada de aquí https://book.mql4.com/ru

Desde el principio empiezan a usar init https://book.mql4.com/ru/programm/structure , no dicen nada de OnInit y siguen en otros ejemplos.

Ya veo. Este libro de texto tiene cien años :)

Comprendo que quizá no lo conozca.

En general - es necesario (probablemente, alguien) para el conocimiento introductorio. Han pasado muchos años desde que se escribió y ahora, después de leerlo, es mejor preguntar sobre algo aquí en el foro.

Bueno, inténtalo sin "debería", "debe", "no hizo", "no informó", etc...

Todo lo que necesita para un conocimiento completo y profundo de mql4 y mql5 - todo está disponible en este recurso en abundancia y para todos los gustos.

 

Hola. Ayúdame con el indicador de "líneas de Murray". (Quiero utilizar sus datos en mi EA a través del

iCustom. para devolver el valor de la 1ª línea del indicador en la primera barra - " double Divb1=iCustom(Symbol(),PERIOD_CURRENT, "Murrey-levels-system",P,StepBack,1,1); " y utilizar Divb1 como condición de entrada al mercado, pero cuando se prueba, la posición se abre sin tener en cuenta esta línea. (En lugar de 1, se puede poner cualquier índice de la línea del indicador, las órdenes se abren en los mismos lugares. Condición if(Oferta<=Divb1)

Tal vez haya un error en los parámetros de la función, pero no puedo decidir cuáles.

//| |
//| Copyright © 1999-2007, MetaQuotes Software Corp.
//| http://www.metaquotes.ru |
//+------------------------------------------------------------------+
#propiedad ventana_del_gráfica_del_indicador
//----
extern int P=64;
extern inttern StepBack=0;
//----
double dmml=0,dvtl=0,sum=0,v1=0,v2=0,mn=0,mx=0,x1=0,x2=0,x3=0,x4=0,x5=0,x6=0,y1=0,y2=0,y3=0,y4=0,y5=0,y6=0,octave=0,fractal=0,range =0,finalH =0,finalL =0,mml[13];
cadena ln_txt[13],
buff_str="";
int
bn_v1 =0,
bn_v2 =0,
OctLinesCnt=13,
mml_thk=8,
mml_clr[13],
mml_shft=3,
nTime=0,
CurPeriod=0,
nDigits=0,
i=0;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
ln_txt[0] ="[-2/8]P";
ln_txt[1] ="[-1/8]P"; ln_txt[2] ="STOP [0/8]";
ln_txt[3] ="STOP_ADVANCED [1/8]";
ln_txt[4] ="ROLL_TURN [2/8]";
ln_txt[5] ="CANAL_FONDO [3/8]";
ln_txt[6] ="Giro_de_rotación [4/8]";
ln_txt[7] ="CANAL SUPERIOR [5/8]";
ln_txt[8] ="Giro_de_rotación [6/8]";
ln_txt[9] ="STOP_circle [7/8]";
ln_txt[10]="СОПРОТИВЛЕНИЕ [8/8]";
ln_txt[11]="[+1/8]P";//"overshoot [+1/8]";
ln_txt[12]="[+2/8]P";// "extremadamente sobrepasado [+2/8]";
//----
mml_shft=25;
mml_thk =3;
//----
mml_clr[0] =Magenta;
mml_clr[1] =Rosa;
mml_clr[2] =Azul;
mml_clr[3] =Naranja;
mml_clr[4] =Rojo;
mml_clr[5] =OliveDrab;
mml_clr[6] =Azul;
mml_clr[7] =OliveDrab;
mml_clr[8] =Rojo;
mml_clr[9] =Naranja;
mml_clr[10]=Azul;
mml_clr[11]=Rosa;
mml_clr[12]=Magenta;
//----
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int deinit()
{
Comentario(" ");
for(i=0;i<OctLinesCnt;i++)
{
buff_str="mml "+i;
ObjectDelete(buff_str);
buff_str="mml_txt "+i;
ObjectDelete(buff_str);
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int inicio()
{
if((nTime!=Time[0]) | (CurPeriod!=Period())
{
bn_v1=Más bajo(NULL,0,MODE_LOW,P+StepBack,0);
bn_v2=Highest(NULL,0,MODE_HIGH,P+StepBack,0);
//----
v1=Bajo[bn_v1];
v2=Alto[bn_v2];
//----
if(v2<=250000 && v2>25000 )
fractal=100000;
si no
if(v2<=25000 && v2>2500 )
fractal=10000;
si no
if(v2<=2500 && v2>250 )
fractal=1000;
si no
if(v2<=250 && v2>25 )
fractal=100;
si no
if(v2<=25 && v2>12.5 )
fractal=12,5;
si no
if(v2<=12,5 && v2>6,25 )
fractal=12,5;
si no
if(v2<=6,25 && v2>3,125 )
fractal=6,25;
si no
if(v2<=3.125 && v2>1.5625 )
fractal=3,125;
si no
if(v2<=1,5625 && v2>0,390625 )
fractal=1,5625;
si no
if(v2<=0.390625 && v2>0)
fractal=0,1953125;
rango=(v2-v1);
suma=MathFloor(MathLog(fractal/rango)/MathLog(2));
octave=fractal*(MathPow(0.5,sum));
mn=MathFloor(v1/octava)*octava;
si((mn+octava)>v2 )
mx=mn+octava;
si no
mx=mn+(2*octava);
if((v1>=(3*(mx-mn)/16+mn)) && (v2<=(9*(mx-mn)/16+mn)) )
x2=mn+(mx-mn)/2;
Si no, x2=0;
if((v1>=(mn-(mx-mn)/8))&& (v2<=(5*(mx-mn)/8+mn)) && (x2==0) )
x1=mn+(mx-mn)/2;
Si no, x1=0;
if((v1>=(mn+7*(mx-mn)/16))&& (v2<=(13*(mx-mn)/16+mn)) )
x4=mn+3*(mx-mn)/4;
Si no, x4=0;
if((v1>=(mn+3*(mx-mn)/8))&& (v2<=(9*(mx-mn)/8+mn))&& (x4==0) )
x5=mx;
Si no, x5=0;
if((v1>=(mn+(mx-mn)/8))&& (v2<=(7*(mx-mn)/8+mn))&& (x1==0) && (x2==0) && (x4==0) && (x5==0) )
x3=mn+3*(mx-mn)/4;
Si no, x3=0;
si((x1+x2+x3+x4+x5) ==0 )
x6=mx;
Si no, x6=0;
finalH=x1+x2+x3+x4+x5+x6;
si(x1>0 )
y1=mn;
si no y1=0;
si(x2>0 )
y2=mn+(mx-mn)/4;
si no y2=0;
si(x3>0 )
y3=mn+(mx-mn)/4;
si no y3=0;
si(x4>0 )
y4=mn+(mx-mn)/2;
si no y4=0;
si(x5>0 )
y5=mn+(mx-mn)/2;
si no y5=0;
if((finalH>0) && ((y1+y2+y3+y4+y5)==0) )
y6=mn;
si no y6=0;
finalL=y1+y2+y3+y4+y5+y6;
for( i=0; i<OctLinesCnt; i++)
{
mml[i]=0;
}
dmml=(finalH-finalL)/8;
mml[0] =(finalL-dmml*2); //-2/8
for( i=1; i<OctLinesCnt; i++)
{
mml[i]=mml[i-1] + dmml;
}
for( i=0; i<OctLinesCnt; i++ )
{
buff_str="mml "+i;
if(ObjectFind(buff_str)==-1)
{
ObjectCreate(buff_str, OBJ_HLINE, 0, Time[0], mml[i];
ObjectSet(buff_str, OBJPROP_STYLE, STYLE_SOLID;)
ObjectSet(buff_str, OBJPROP_COLOR, mml_clr[i]);
ObjectMove(buff_str, 0, Time[0], mml[i]);
}
si no
{
ObjectMove(buff_str, 0, Time[0], mml[i]);
}
buff_str="mml_txt "+i;
if(ObjectFind(buff_str)==-1)
{
ObjectCreate(buff_str, OBJ_TEXT, 0, Time[mml_shft], mml_shft;)
ObjectSetText(buff_str, ln_txt[i], 8, "Arial", mml_clr[i]);
ObjectMove(buff_str, 0, Time[mml_shft], mml[i]);
}
si no
{
ObjectMove(buff_str, 0, Time[mml_shft], mml[i]);
}
}
nTime =Time[0];
CurPeriod= Período();
}
//----
return(0);
}
//+------------------------------------------------------------------+
 
Anatoliy Ryzhakov:

Hola. Ayúdame a averiguar el indicador ...

Nadie va a mirar este tipo de tartán.


 

=En general - se necesita (probablemente por alguien) para una introducción.


¿Hay algo más actualizado, con buenos ejemplos?


=Bueno, intenta sin "debería", "debe", "no hizo", "no informó".


Parece que me has confundido con otra persona. No he utilizado esas palabras aquí.

 

No entiendo cómo se escriben los indicadores, ¿cuál es el problema?

Necesito que se dibuje una línea que muestre la diferencia de precio entre active_1 y active_2

funciona

También necesito que el promedio de ma_period ma_period se trace en esta línea, hay un problema con ella, no se muestra

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 5
#property indicator_plots 2
#property indicator_type1 DRAW_COLOR_LINE
#property indicator_color1 clrGreen, clrRed
#property indicator_style1 STYLE_SOLID
#property indicator_type2 DRAW_LINE
#property indicator_color2 clrWhite
#property indicator_style2 STYLE_SOLID
#property indicator_width1 1
#include <MovingAverages.mqh>

input string active_1 = "GBPNZD.m";
input string active_2 = "GBPAUD.m";
input ENUM_TIMEFRAMES timeframe = PERIOD_H1;
input int ma_period = 30;

double firstBuffer[], secondBuffer[], colorBuffer[], dataBuffer[], maBuffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0, dataBuffer, INDICATOR_DATA);
   SetIndexBuffer(1, maBuffer, INDICATOR_DATA);
   SetIndexBuffer(2, colorBuffer, INDICATOR_COLOR_INDEX);
   SetIndexBuffer(3, firstBuffer, INDICATOR_CALCULATIONS);
   SetIndexBuffer(4, secondBuffer, INDICATOR_CALCULATIONS);
   PlotIndexSetInteger(1, PLOT_DRAW_BEGIN, ma_period);
   IndicatorSetString(INDICATOR_SHORTNAME, "DifferenceCurrency "+active_1+"  "+active_2);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//---

   CopyClose(active_1,timeframe,0,rates_total,firstBuffer);
   CopyClose(active_2,timeframe,0,rates_total,secondBuffer);
   int first, bar;
   if(prev_calculated == 0) first = begin; else first = prev_calculated - 1;
   for(bar = first; bar<rates_total; bar++){
      dataBuffer[bar] = firstBuffer[bar]-secondBuffer[bar];
      maBuffer[bar] = SimpleMA(bar, ma_period, dataBuffer);
   }
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+