Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 663

 
É como se estivéssemos falando de um 4. Os exemplos parecem ter sido escritos em momentos diferentes, daí o uso de funções diferentes, o que é enganoso.
 
Artyom Trishkin:

Onde você encontrou um tutorial no mql5 ?

regras do google:Timur Sergeyevich Mashnin"MQL5 Programming Language: Advanced Use of the MetaTrader 5 Trading Platform".

E assim, sim, em MQL4 Metacquotes, o livro didático de Kovalev Sergey foi oficialmente anunciado. Programação na linguagem algorítmica MQL4

 
psyman:
É como uma discussão sobre o 4. Parece que os exemplos foram escritos em momentos diferentes, daí o uso de funções diferentes, o que é enganoso.

Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos

Qualquer pergunta para iniciantes em MQL4, ajuda e discussão sobre algoritmos e códigos

Artyom Trishkin, 2016.11.09 22:50

Neste ramo quero começar a ajudar aqueles que realmente querem entender e aprender programação na nova MQL4 e querem mudar facilmente para a MQL5 - as linguagens são muito semelhantes.

Aqui poderemos discutir tarefas, algoritmos de sua solução e quaisquer outras questões relativas à programação MT de uma forma ou de outra.

Espero que outros membros experientes do nosso fórum se juntem à discussão e que o tópico seja interessante para todos.


 
Igor Makanu:

regras do google:Timur Sergeyevich Mashnin"MQL5 Programming Language: Advanced Use of the MetaTrader 5 Trading Platform".

E assim, sim, em MQL4 Metacquotes, o livro didático de Kovalev Sergey foi oficialmente anunciado. Programação em linguagem algorítmica MQL4

Quem aqui sabe sobre este Timur?

Afinal de contas, o homem está escrevendo:

Que livro didático? Há uma referência, há artigos, há um fórum, mas não há um livro didático. E para afirmar que é necessário lá, e no que lançá-lo - é para o autor do livro didático, que você ainda precisa procurar e encontrar em recursos de terceiros. Em outras palavras, a alegação é infundada, e não para a MetaQuotes.
 

=i.e.a alegação é infundada


Eu não acho que este tópico seja o lugar para fazer qualquer reivindicação, mas se você quiser precisão, a palavra livro-texto é tirada daqui https://book.mql4.com/ru

Desde o início eles começam a usar o init https://book.mql4.com/ru/programm/structure , sem dizer nada sobre o OnInit, e continuam em outros exemplos.

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

=i.e.a alegação é infundada


Eu não acho que este tópico seja o lugar para fazer qualquer reivindicação, mas se você quiser precisão, a palavra livro-texto é tirada daqui https://book.mql4.com/ru

Desde o início eles começam a usar o init https://book.mql4.com/ru/programm/structure , não diga nada sobre o OnInit e continue em outros exemplos.

Estou vendo. Este livro tem cem anos :)

Entendo que talvez você não saiba disso.

Em geral - é necessário (provavelmente, alguém) para o conhecimento introdutório. Já se passaram muitos anos desde que foi escrito e agora, depois de lê-lo, é melhor perguntar sobre algo aqui no fórum.

Bem, tente sem "deve", "deve", "não fez", "não informou", etc...

Tudo o que você precisa para um conhecimento completo e profundo de mql4 e mql5 - tudo está disponível neste recurso em abundância e para todos os gostos.

 

Olá. Ajude-me com o indicador "Murray lines". (Quero usar seus dados em meu consultor especializado através do

iCustom. para retornar o valor da 1ª linha indicadora na primeira barra - " double Divb1=iCustom(Symbol(),PERIOD_CURRENT, "Murrey-levels-system",P,StepBack,1,1); " e usar Divb1 como condição de entrada no mercado, mas quando testada, a posição é aberta sem levar em conta esta linha.(Ao invés de 1, você pode colocar qualquer índice da linha indicadora, as ordens abrem nos mesmos lugares. Condição se(Bid<=Divb1)

Talvez haja um erro nos parâmetros de função, mas não consigo decidir quais.

//| |
//| Copyright © 1999-2007, MetaQuotes Software Corp. |
//| http://www.metaquotes.ru |
//+------------------------------------------------------------------+
#janela_do_cartão_indicador de propriedade
//----
int exterior P=64;
Externo interno 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];
string 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,
CurPeriodo=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] ="BOTTOM_CHANNEL [3/8]";
ln_txt[6] ="ROTATION_TURN [4/8]";
ln_txt[7] ="TOP_CHANNEL [5/8]";
ln_txt[8] ="ROTATION_TURN [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";// "extremamente exagerado [+2/8]";
//----
mml_shft=25;
mml_thk =3;
//----
mml_clr[0] =Magenta;
mml_clr[1] =Pink;
mml_clr[2] =azul;
mml_clr[3] =Orange;
mml_clr[4] =Red;
mml_clr[5] =OliveDrab;
mml_clr[6] =azul;
mml_clr[7] =OliveDrab;
mml_clr[8] =Red;
mml_clr[9] =Orange;
mml_clr[10]=azul;
mml_clr[11]=Pink;
mml_clr[12]=Magenta;
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int deinit()
{
Comentário(" ");
for(i=0;i<OctLinesCnt;i++)
{
buff_str="mml "+i;
ObjectDelete(buff_str);
buff_str="mml_txt "+i;
ObjectDelete(buff_str);
}
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
if((nTime!=Time[0]) ||| (CurPeriod!=Period()))
{
bn_v1=Lowest(NULL,0,MODE_LOW,P+StepBack,0);
bn_v2=Highest(NULL,0,MODE_HIGH,P+StepBack,0);
//----
v1=Baixo[bn_v1];
v2=Alto[bn_v2];
//----
if(v2<=250000 && v2>25000 )
fractal=100000;
senão
if(v2<=25000 && v2>2500 )
fractal=10000;
senão
if(v2<=2500 && v2>250 )
fractal=1000;
senão
if(v2<=250 && v2>25 )
fractal=100;
senão
if(v2<==25 && v2>12,5 )
fractal=12,5;
senão
if(v2<=12,5 && v2>6,25 )
fractal=12,5;
senão
if(v2<=6,25 && v2>3,125 )
fractal=6,25;
senão
if(v2<=3,125 && v2>1,5625 )
fractal=3,125;
senão
if(v2<=1,5625 && v2>0,390625 )
fractal=1,5625;
senão
if(v2<=0,390625 && v2>0)
fractal=0,1953125;
range=(v2-v1);
sum=MathFloor(MathLog(fractal/range)/MathLog(2))
oitava=fractal*(MathPow(0,5,soma));
mn=MathFloor(v1/octave)*octave;
if((mn+octave)>v2 )
mx=mn+octave;
senão
mx=mn+(2*octave);
if((v1>=(3*(mx-mn)/16+mn)) && (v2<=(9*(mx-mn)/16+mn)) )
x2=mn+(mx-mn)/2;
senão x2=0;
if((v1>=(mn-(mx-mn)/8))&& (v2<=(5*(mx-mn)/8+mn)) && (x2==0) )
x1=mn+(mx-mn)/2;
senão x1=0;
if((v1>=(mn+7*(mx-mn)/16))&& (v2<=(13*(mx-mn)/16+mn)) )
x4=mn+3*(mx-mn)/4;
senão x4=0;
if((v1>=(mn+3*(mx-mn)/8))&& (v2<=(9*(mx-mn)/8+mn))&& (x4==0) )
x5=mx;
senão 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;
senão x3=0;
if((x1+x2+x3+x4+x5) ==0 )
x6=mx;
senão x6=0;
finalH=x1+x2+x3+x4+x5+x6;
if(x1>0 )
y1=mn;
senão y1=0;
if(x2>0 )
y2=mn+(mx-mn)/4;
senão y2=0;
if(x3>0 )
y3=mn+(mx-mn)/4;
senão y3=0;
if(x4>0 )
y4=mn+(mx-mn)/2;
senão y4=0;
if(x5>0 )
y5=mn+(mx-mn)/2;
senão y5=0;
if((finalH>0) && ((y1+y2+y3+y4+y5)==0) )
y6=mn;
senão 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]);
}
senão
{
ObjectMove(buff_str, 0, Time[0], mml[i]);
}
buff_str="mml_txt "+i;
if(ObjectFind(buff_str)==-1)
{
ObjectCreate(buff_str, OBJ_TEXT, 0, Tempo[mml_shft], mml_shft;)
ObjectSetText(buff_str, ln_txt[i], 8, "Arial", mml_clr[i]));
ObjectMove(buff_str, 0, Time[mml_shft], mml[i]));
}
senão
{
ObjectMove(buff_str, 0, Time[mml_shft], mml[i]));
}
}
nTime =Time[0];
CurPeriod= Período();
}
//----
retorno(0);
}
//+------------------------------------------------------------------+
 
Anatoliy Ryzhakov:

Olá. Ajude-me a descobrir o indicador ...

Ninguém vai olhar para este tipo de tartan.


 

=Em geral - é necessário (provavelmente por alguém) para uma introdução.


Há algo mais atual, com bons exemplos?


=Bem, tente sem "deve", "deve", "não fez", "não informou".


Você parece ter me confundido com outra pessoa. Eu não usei tais palavras aqui.

 

Eu não entendo como escrever indicadores, qual é o problema?

Preciso que uma linha seja desenhada mostrando a diferença de preço entre active_1 e active_2

funciona

Eu também preciso de um ma_period médio ma_period para ser plotado nesta linha, há um problema com ele, ele não é exibido

#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);
  }
//+------------------------------------------------------------------+