Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 663

 
È un po' come se stessimo parlando di un 4. Gli esempi sembrano essere stati scritti in tempi diversi, da cui l'uso di funzioni diverse, il che è fuorviante.
 
Artyom Trishkin:

Dove hai trovato un tutorial su mql5?

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

E così, sì, su MQL4 Metacquotes, il libro di testo di Kovalev Sergey è stato ufficialmente annunciato. Programmazione nel linguaggio algoritmico MQL4

 
psyman:
È un po' come una discussione sul 4. Sembra che gli esempi siano stati scritti in tempi diversi, da cui l'uso di funzioni diverse, il che è fuorviante.

Forum sul trading, sistemi di trading automatico e test di strategia

Qualsiasi domanda per i neofiti su MQL4, aiuto e discussione su algoritmi e codici

Artyom Trishkin, 2016.11.09 22:50

In questo ramo voglio iniziare ad aiutare coloro che vogliono veramente capire e imparare la programmazione nel nuovo MQL4 e vogliono passare facilmente a MQL5 - i linguaggi sono molto simili.

Questo blog sarà un buon posto per discutere di compiti, algoritmi e qualsiasi altra domanda relativa alla programmazione MT in un modo o nell'altro.

Spero che altri membri esperti del nostro forum si uniscano alla discussione e che il thread sia interessante per tutti.


 
Igor Makanu:

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

E così, sì, su MQL4 Metacquotes, il libro di testo di Kovalev Sergey è stato ufficialmente annunciato. Programmazione in linguaggio algoritmico MQL4

Chi conosce questo Timur?

Dopo tutto, l'uomo sta scrivendo:

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Tutte le domande dei neofiti su MQL4, aiuto e discussione su algoritmi e codici

psyman, 2018.10.15 19:56


Questo dovrebbe essere scritto all'inizio del tutorial, come diceva Medvedev "Cast in granite" :-)

Quale libro di testo? C'è un riferimento, ci sono articoli, c'è un forum, ma non c'è un libro di testo. E per sostenere che è necessario lì, e che cosa per lanciare in - è per l'autore del libro di testo, che è ancora necessario cercare e trovare su risorse di terze parti. In altre parole, l'affermazione è infondata, e non a MetaQuotes.
 

=i.e. l'affermazione è infondata


Non credo che questo thread sia il luogo per fare delle affermazioni, ma se volete la precisione, la parola libro di testo è presa da qui https://book.mql4.com/ru

Fin dall'inizio iniziano a usare init https://book.mql4.com/ru/programm/structure , senza dire nulla di OnInit, e continuano in altri esempi.

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

=i.e. l'affermazione è infondata


Non credo che questo thread sia il luogo per fare delle affermazioni, ma se volete la precisione, la parola libro di testo è presa da qui https://book.mql4.com/ru

Fin dall'inizio iniziano a usare init https://book.mql4.com/ru/programm/structure , non dicono nulla di OnInit e vanno avanti in altri esempi.

Capisco. Questo libro di testo ha cento anni :)

Capisco che lei possa non esserne a conoscenza.

In generale - è necessario (probabilmente, qualcuno) per la conoscenza introduttiva. Sono passati molti anni da quando è stato scritto e ora, dopo averlo letto, è meglio chiedere qualcosa qui sul forum.

Beh, provate senza "dovrebbe", "deve", "non ha fatto", "non ha riportato", ecc...

Tutto il necessario per una conoscenza completa e approfondita di mql4 e mql5 - tutto è disponibile su questa risorsa in abbondanza e per tutti i gusti.

 

Salve. Aiutami con l'indicatore "linee Murray". (Voglio usare i suoi dati nel mio Expert Advisor attraverso il

iCustom. per restituire il valore della prima linea dell'indicatore sulla prima barra - " double Divb1=iCustom(Symbol(),PERIOD_CURRENT, "Murrey-levels-system",P,StepBack,1,1); " e usare Divb1 come condizione di entrata a mercato, ma quando viene testata, la posizione viene aperta senza prendere in considerazione questa linea.(Invece di 1, potete mettere qualsiasi indice della linea dell'indicatore, gli ordini si aprono negli stessi posti. Condizione if(Bid<=Divb1)

Forse c'è un errore nei parametri della funzione, ma non riesco a decidere quali.

//| |
//| Copyright © 1999-2007, MetaQuotes Software Corp.
//| http://www.metaquotes.ru |
//+------------------------------------------------------------------+
#proprietà indicator_chart_window
//----
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];
stringa 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_ENTER [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";// "estremamente overshoot [+2/8]";
//----
mml_shft=25;
mml_thk =3;
//----
mml_clr[0] =Magenta;
mml_clr[1] =Rosa;
mml_clr[2] =Blu;
mml_clr[3] =Orange;
mml_clr[4] =Rosso;
mml_clr[5] =OliveDrab;
mml_clr[6] =Blu;
mml_clr[7] =OliveDrab;
mml_clr[8] =Rosso;
mml_clr[9] =Orange;
mml_clr[10]=Blu;
mml_clr[11]=Rosa;
mml_clr[12]=Magenta;
//----
ritorno(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int deinit()
{
Commento(" ");
for(i=0;i<OctLinesCnt;i++)
{
buff_str="mml "+i;
ObjectDelete(buff_str);
buff_str="mml_txt "+i;
ObjectDelete(buff_str);
}
//----
ritorno(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=Low[bn_v1];
v2=Alto[bn_v2];
//----
se(v2<=250000 && v2>25000 )
frattale=100000;
else
se(v2<=25000 && v2>2500 )
frattale=10000;
else
se(v2<=2500 && v2>250 )
frattale=1000;
else
se(v2<=250 && v2>25 )
frattale=100;
else
se(v2<=25 && v2>12.5 )
frattale=12,5;
else
se(v2<=12,5 && v2>6,25 )
frattale=12,5;
else
se(v2<=6.25 && v2>3.125 )
frattale=6,25;
else
se(v2<=3.125 && v2>1.5625 )
frattale=3,125;
else
se(v2<=1,5625 && v2>0,390625 )
frattale=1,5625;
else
se(v2<=0,390625 && v2>0)
frattale=0.1953125;
gamma=(v2-v1);
sum=MathFloor(MathLog(fractal/range)/MathLog(2));
octave=frattale*(MathPow(0.5,sum));
mn=MathFloor(v1/ottava)*ottava;
se((mn+ottava)>v2 )
mx=mn+ottava;
else
mx=mn+(2*ottava);
if((v1>=(3*(mx-mn)/16+mn)) && (v2<=(9*(mx-mn)/16+mn)) )
x2=mn+(mx-mn)/2;
altrimenti x2=0;
if((v1>=(mn-(mx-mn)/8))&& (v2<=(5*(mx-mn)/8+mn)) && (x2==0) )
x1=mn+(mx-mn)/2;
altrimenti x1=0;
if((v1>=(mn+7*(mx-mn)/16))&& (v2<=(13*(mx-mn)/16+mn)) )
x4=mn+3*(mx-mn)/4;
altrimenti x4=0;
if((v1>=(mn+3*(mx-mn)/8))&& (v2<=(9*(mx-mn)/8+mn))&& (x4==0) )
x5=mx;
altrimenti 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;
altrimenti x3=0;
se((x1+x2+x3+x4+x5) ==0 )
x6=mx;
altrimenti x6=0;
finalH=x1+x2+x3+x4+x5+x6;
se(x1>0 )
y1=mn;
altrimenti y1=0;
se(x2>0 )
y2=mn+(mx-mn)/4;
altrimenti y2=0;
se(x3>0 )
y3=mn+(mx-mn)/4;
altrimenti y3=0;
se(x4>0 )
y4=mn+(mx-mn)/2;
altrimenti y4=0;
se(x5>0 )
y5=mn+(mx-mn)/2;
altrimenti y5=0;
if((finalH>0) && ((y1+y2+y3+y4+y5)==0) )
y6=mn;
altrimenti 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]);
}
else
{
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]);
}
else
{
ObjectMove(buff_str, 0, Time[mml_shft], mml[i]);
}
}
nTime =Time[0];
CurPeriod= Periodo();
}
//----
ritorno(0);
}
//+------------------------------------------------------------------+
 
Anatoliy Ryzhakov:

Salve. Aiutami a capire l'indicatore ...

Nessuno guarderà questo tipo di tartan.


 

=In generale - è necessario (probabilmente da qualcuno) per un'introduzione.


C'è qualcosa di più aggiornato, con buoni esempi?


=Bene, prova senza "dovrebbe", "deve", "non ha fatto", "non ha riportato".


Sembra che mi abbia confuso con qualcun altro. Non ho usato tali parole qui.

 

Non capisco come scrivere gli indicatori, qual è il problema?

Ho bisogno di tracciare una linea che mostri la differenza di prezzo tra active_1 e active_2

funziona

Ho anche bisogno che una media di ma_periodo ma_periodo sia tracciata su questa linea, c'è un problema con essa, non viene visualizzata

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