Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 663

 
Es ist so, als ob wir über eine 4 sprechen würden. Die Beispiele scheinen zu unterschiedlichen Zeiten geschrieben worden zu sein, daher die Verwendung unterschiedlicher Funktionen, was irreführend ist.
 
Artyom Trishkin:

Wo haben Sie eine Anleitung zu mql5 gefunden?

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

Und so, ja, auf MQL4 Metacquotes, wurde das Lehrbuch von Kovalev Sergey offiziell angekündigt. Programmierung in der Algorithmischen Sprache MQL4

 
psyman:
Es ist so etwas wie eine Diskussion über die 4. Es sieht so aus, als wären die Beispiele zu unterschiedlichen Zeiten geschrieben worden, daher die Verwendung unterschiedlicher Funktionen, was irreführend ist.

Forum für Handel, automatisierte Handelssysteme und Strategietests

Alle Fragen für Neulinge auf MQL4, Hilfe und Diskussion über Algorithmen und Codes

Artyom Trishkin, 2016.11.09 22:50

In diesem Zweig möchte ich damit beginnen, denjenigen zu helfen, die das Programmieren in der neuen MQL4 wirklich verstehen und lernen wollenund die leicht zu MQL5 wechseln wollen - die Sprachen sind sehr ähnlich.

Dieser Blog ist ein guter Ort, um Aufgaben, Algorithmen und alle anderen Fragen im Zusammenhang mit der MT-Programmierung zu diskutieren.

Ich hoffe, dass sich andere erfahrene Mitglieder unseres Forums an der Diskussion beteiligen werden und der Thread für alle interessant sein wird.


 
Igor Makanu:

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

Und so, ja, auf MQL4 Metacquotes, wurde das Lehrbuch von Kovalev Sergey offiziell angekündigt. Programmierung in der Algorithmischen Sprache MQL4

Wer von Ihnen kennt diesen Timur?

Schließlich schreibt der Mann ja auch:

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Alle Fragen, die Neulinge zu MQL4 haben, Hilfe und Diskussion über Algorithmen und Codes

psyman, 2018.10.15 19:56


Das sollte am Anfang des Tutorials geschrieben werden, wie Medwedew sagte: "In Granit gegossen" :-)

Welches Lehrbuch? Es gibt eine Referenz, es gibt Artikel, es gibt ein Forum, aber es gibt kein Lehrbuch. Und zu behaupten, dass es notwendig ist, dort, und in dem, was es zu gießen - es ist an den Autor des Lehrbuchs, die Sie noch brauchen, um zu suchen und zu finden, auf Ressourcen Dritter. Mit anderen Worten: Die Behauptung ist unbegründet, und zwar nicht gegenüber MetaQuotes.
 

= d.h.die Behauptung ist unbegründet


Ich glaube nicht, dass dieser Thread der richtige Ort ist, um irgendwelche Behauptungen aufzustellen, aber wenn Sie es genau wissen wollen, finden Sie das Wort Lehrbuch hier: https://book.mql4.com/ru

Gleich zu Beginn verwenden sie init https://book.mql4.com/ru/programm/structure , ohne etwas über OnInit zu sagen, und fahren in anderen Beispielen fort.

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

= d.h.die Behauptung ist unbegründet


Ich glaube nicht, dass dieser Thread der richtige Ort ist, um irgendwelche Behauptungen aufzustellen, aber wenn Sie es genau wissen wollen, finden Sie das Wort Lehrbuch hier: https://book.mql4.com/ru

Von Anfang an verwenden sie init https://book.mql4.com/ru/programm/structure , sagen nichts über OnInit und gehen in anderen Beispielen weiter.

Verstehe. Dieses Lehrbuch ist hundert Jahre alt :)

Ich verstehe, dass Sie das vielleicht nicht wissen.

Im Allgemeinen - es ist notwendig, (wahrscheinlich, jemand) für die einleitende Bekanntschaft. Es ist sehr viele Jahre her, dass es geschrieben wurde, und jetzt, nachdem ich es gelesen habe, ist es besser, hier im Forum nachzufragen.

Versuchen Sie es doch einmal ohne "sollte", "muss", "nicht getan", "nicht gemeldet" usw...

Alles, was Sie für ein vollständiges und vertieftes Wissen über mql4 und mql5 benötigen, finden Sie in dieser Ressource in Hülle und Fülle und für jeden Geschmack.

 

Hallo. Helfen Sie mir mit dem Indikator "Murray lines". (Ich möchte die Daten in meinem EA über die

Double Divb1=iCustom(Symbol(),PERIOD_CURRENT, "Murrey-levels-system",P,StepBack,1,1); " und verwenden Sie Divb1 als Markteintrittsbedingung, aber beim Testen wird die Position ohne Berücksichtigung dieser Linie eröffnet. (Anstelle von 1 können Sie einen beliebigen Index der Indikatorlinie angeben, die Orders werden an denselben Stellen eröffnet. Bedingung if(Angebot<=Divb1)

Vielleicht gibt es einen Fehler in den Funktionsparametern, aber ich kann nicht sagen, welche.

//| |
//| Copyright © 1999-2007, MetaQuotes Software Corp.
//| http://www.metaquotes.ru |
//+------------------------------------------------------------------+
#property 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];
string ln_txt[13],
buff_str="";
int
bn_v1 =0,
bn_v2 =0,
OctLinesCnt=13,
mml_thk=8,
mml_clr[13],
mml_shft=3,
nZeit=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] ="BOTTOM_CHANNEL [3/8]";
ln_txt[6] ="DREHUNG_DREHUNG [4/8]";
ln_txt[7] ="TOP_CHANNEL [5/8]";
ln_txt[8] ="DREHUNG_DREHUNG [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";// "extrem überschießend [+2/8]";
//----
mml_shft=25;
mml_thk =3;
//----
mml_clr[0] =Magenta;
mml_clr[1] =Pink;
mml_clr[2] =Blau;
mml_clr[3] =Orange;
mml_clr[4] =Rot;
mml_clr[5] =OliveDrab;
mml_clr[6] =Blau;
mml_clr[7] =OliveDrab;
mml_clr[8] =Rot;
mml_clr[9] =Orange;
mml_clr[10]=Blau;
mml_clr[11]=Rosa;
mml_clr[12]=Magenta;
//----
zurück(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int deinit()
{
Kommentar(" ");
for(i=0;i<OctLinesCnt;i++)
{
buff_str="mml "+i;
ObjectDelete(buff_str);
buff_str="mml_txt "+i;
ObjectDelete(buff_str);
}
//----
zurück(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
if((nTime!=Time[0])) || (CurPeriod!=Period()))
{
bn_v1=Lowest(NULL,0,MODE_LOW,P+StepBack,0);
bn_v2=Höchstwert(NULL,0,MODE_HIGH,P+StepBack,0);
//----
v1=Low[bn_v1];
v2=Hoch[bn_v2];
//----
if(v2<=250000 && v2>25000 )
fractal=100000;
sonst
if(v2<=25000 && v2>2500 )
fraktal=10000;
sonst
if(v2<=2500 && v2>250 )
fraktal=1000;
sonst
if(v2<=250 && v2>25 )
fraktal=100;
sonst
if(v2<=25 && v2>12,5 )
fraktal=12,5;
sonst
if(v2<=12,5 && v2>6,25 )
fraktal=12,5;
sonst
if(v2<=6.25 && v2>3.125 )
fractal=6,25;
sonst
if(v2<=3.125 && v2>1.5625 )
fractal=3.125;
sonst
if(v2<=1,5625 && v2>0,390625 )
fraktal=1,5625;
sonst
if(v2<=0,390625 && v2>0)
fractal=0,1953125;
Bereich=(v2-v1);
Summe=MathFloor(MathLog(Fraktal/Bereich)/MathLog(2));
octave=fractal*(MathPow(0.5,sum));
mn=MathFloor(v1/Oktave)*Oktave;
if((mn+Oktave)>v2 )
mx=mn+Oktave;
sonst
mx=mn+(2*Oktave);
if((v1>=(3*(mx-mn)/16+mn)) && (v2<=(9*(mx-mn)/16+mn)) )
x2=mn+(mx-mn)/2;
sonst x2=0;
if((v1>=(mn-(mx-mn)/8))&& (v2<=(5*(mx-mn)/8+mn)) && (x2==0) )
x1=mn+(mx-mn)/2;
sonst x1=0;
if((v1>=(mn+7*(mx-mn)/16))&& (v2<=(13*(mx-mn)/16+mn)) )
x4=mn+3*(mx-mn)/4;
sonst x4=0;
if((v1>=(mn+3*(mx-mn)/8))&& (v2<=(9*(mx-mn)/8+mn))&& (x4==0) )
x5=mx;
sonst 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;
sonst x3=0;
if((x1+x2+x3+x4+x5) ==0 )
x6=mx;
sonst x6=0;
finalH=x1+x2+x3+x4+x5+x6;
wenn (x1>0 )
y1=mn;
sonst y1=0;
wenn(x2>0 )
y2=mn+(mx-mn)/4;
sonst y2=0;
wenn(x3>0 )
y3=mn+(mx-mn)/4;
sonst y3=0;
wenn (x4>0 )
y4=mn+(mx-mn)/2;
sonst y4=0;
wenn(x5>0 )
y5=mn+(mx-mn)/2;
sonst y5=0;
if((finalH>0) && ((y1+y2+y3+y4+y5)==0) )
y6=mn;
sonst 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]);
}
sonst
{
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]);
}
sonst
{
ObjectMove(buff_str, 0, Time[mml_shft], mml[i]);
}
}
nZeit =Zeit[0];
CurPeriod= Zeitraum();
}
//----
zurück(0);
}
//+------------------------------------------------------------------+
 
Anatoliy Ryzhakov:

Hallo. Helfen Sie mir, den Indikator herauszufinden ...

Niemand wird sich diese Art von Tartan ansehen.


 

=Im Allgemeinen wird es (wahrscheinlich von jemandem) für eine Einführung benötigt.


Gibt es etwas Aktuelleres, mit guten Beispielen?


=Versuchen Sie es ohne "sollte", "muss", "hat nicht getan", "hat nicht gemeldet".


Sie scheinen mich mit jemand anderem zu verwechseln. Ich habe diese Worte hier nicht verwendet.

 

Ich verstehe nicht, wie man Indikatoren schreibt, was ist das Problem?

Ich brauche eine Linie, die den Preisunterschied zwischen active_1 und active_2 anzeigt

es funktioniert

Ich brauche auch eine durchschnittliche ma_period ma_period auf dieser Linie gezeichnet werden, gibt es ein Problem mit ihm, es ist nicht angezeigt

#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);
  }
//+------------------------------------------------------------------+
Grund der Beschwerde: