新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 663

 
这有点像我们在谈论一个4。这些例子似乎是在不同时期写的,因此使用了不同的函数,这是一种误导。
 
Artyom Trishkin:

你在哪里找到关于mql5的教程?

google规则:Timur Sergeyevich Mashnin"MQL5编程语言: MetaTrader 5交易平台的高级使用"。

于是,是的,在MQL4 Metacquotes上,科瓦列夫-谢尔盖的教科书被正式宣布。用MQL4算法语言编程

 
psyman:
这有点像关于4号的讨论。看起来这些例子是在不同时期写的,因此使用了不同的函数,这是一种误导。

关于交易、自动交易系统和策略测试的论坛

对MQL4新手的任何问题,对算法和代码的帮助和讨论

Artyom Trishkin, 2016.11.09 22:50

在这个分支中,我想开始帮助那些真正想了解和学习新的MQL4 ,并想轻松切换到MQL5的编程的人--这些语言非常相似。

这个博客将是一个讨论任务、算法和任何其他与MT编程相关的问题的好地方,以这种或那种方式。

我希望我们论坛的其他有经验的成员能加入讨论,这个话题会让大家感兴趣。


 
Igor Makanu:

google规则:Timur Sergeyevich Mashnin"MQL5编程语言: MetaTrader 5交易平台的高级使用"。

于是,是的,在MQL4 Metacquotes上,科瓦列夫-谢尔盖的教科书被正式宣布。算法语言MQL4的编程

这里有谁知道这个帖木儿?

毕竟,这个人在写作。

关于交易、自动交易系统和交易策略测试的论坛

新手对MQL4的任何问题,对算法和代码的帮助和讨论

psyman, 2018.10.15 19:56


这句话应该写在教程的开头,正如梅德韦杰夫所说的 "铸在花岗岩上" :-)

什么课本?有参考资料,有文章,有论坛,但没有教科书。而要声称它在那里是必要的,以及在什么地方铸造它--这是对教科书的作者,你仍然需要在第三方资源上搜索和寻找。换句话说,这种说法是 毫无根据的,而且不是针对MetaQuotes。
 

=i.e.索赔无凭无据


我不认为这个主题是提出任何主张的地方,但如果你想要准确,教科书这个词取自这里 https://book.mql4.com/ru

从一开始他们就开始使用init https://book.mql4.com/ru/programm/structure ,没有说任何关于OnInit的事情,并在其他例子中继续。

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

=要求没有得到证实


我不认为这个主题是提出任何主张的地方,但如果你想要准确,教科书这个词取自这里 https://book.mql4.com/ru

从一开始他们就开始使用init https://book.mql4.com/ru/programm/structure ,没有说任何关于OnInit的事情,并在其他例子中继续。

我明白了,这本教科书已经有一百年的历史了 :)

我理解,你可能不知道这件事。

在一般情况下 - 这是必要的(可能,有人)的介绍性的认识。这本书已经写了非常多的年头了,现在看完了,还是在论坛上问一些事情吧。

好吧,试试没有 "应该"、"必须"、"没有做"、"没有报告 "等等。

你所需要的关于mql4和mql5的完整而深入的知识--所有的东西都可以在这个资源上得到,而且很丰富,适合各种口味。

 

你好。帮助我解决 "Murray lines "指标。(我想在我的专家顾问中使用其数据,通过

iCustom.返回第一根指标线的值 - " double Divb1=iCustom(Symbol(),PERIOD_CURRENT, "Murrey-levels-system",P,StepBack,1,1); " 并使用Divb1作为入市条件,但测试时,开仓时不考虑此线。(代替1,你可以把任何指标线指数,订单在相同地方打开。条件 if(Bid<=Divb1)

也许在函数参数中存在错误,但我无法确定是哪一个。

//||
//| Copyright © 1999-2007, MetaQuotes Software Corp.
//| http://www.metaquotes.ru |
//+------------------------------------------------------------------+
#property indicator_chart_window
//----
Extern int P=64。
外部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=""。
䵮䵮
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] ="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";//"极度过冲[+2/8]"。
//----
mml_shft=25。
mml_thk =3。
//----
mml_clr[0] =Magenta;
mml_clr[1] =Pink;
mml_clr[2] =Blue;
mml_clr[3] =Orange。
mml_clr[4] =Red;
mml_clr[5] =OliveDrab;
mml_clr[6] =Blue。
mml_clr[7] =OliveDrab;
mml_clr[8] =Red。
mml_clr[9] =Orange。
mml_clr[10]=Blue。
mml_clr[11]=Pink。
mml_clr[12]=Magenta。
//----
return(0);
}
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
int deinit()
{
评论(" ")。
for(i=0;i<OctLinesCnt;i++)
{
buff_str="mml "+i;
ObjectDelete(buff_str)。
buff_str="mml_txt "+i;
ObjectDelete(buff_str)。
}
//----
return(0);
}
//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
int start()
{
如果((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=高[bn_v2]。
//----
如果(v2<=250000 && v2>25000 )
fractal=100000。
否则
如果(v2<=25000 && v2>2500 )
fractal=10000。
否则
如果(v2<=2500 && v2>250 )
fractal=1000。
否则
如果(v2<=250 && v2>25 )
fractal=100。
否则
如果(v2<=25 && v2>12.5 )
分形=12.5。
否则
如果(v2<=12.5 && v2>6.25 )
分形=12.5。
否则
如果(v2<=6.25 && v2>3.125 )
分形=6.25。
否则
如果(v2<=3.125 && v2>1.5625 )
fractal=3.125。
否则
如果(v2<=1.5625 && v2>0.390625 )
分形=1.5625。
否则
如果(v2<=0.390625 && v2>0)
fractal=0.1953125。
范围=(v2-v1)。
sum=MathFloor(MathLog(fractal/range)/MathLog(2))。
octave=fractal*(MathPow(0.5,sum))。
mn=MathFloor(v1/octave)*octave。
如果((mn+octave)>v2 )
mx=mn+octave。
否则
mx=mn+(2*octave)。
if((v1>=(3*(mx-mn)/16+mn))&& (v2<=(9*(mx-mn)/16+mn)))
x2=mn+(mx-mn)/2。
否则 x2=0。
if((v1>=(mn-(mx-mn)/8))&& (v2<=(5*(mx-mn)/8+mn))&& (x2==0) )
x1=mn+(mx-mn)/2。
否则 x1=0。
if((v1>=(mn+7*(mx-mn)/16))&& (v2<=(13*(mx-mn)/16+mn)))
x4=mn+3*(mx-mn)/4。
否则x4=0。
if((v1>=(mn+3*(mx-mn)/8))&&(v2<=(9*(mx-mn)/8+mn))&&(x4==0) )
x5=mx。
否则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。
否则x3=0。
如果((x1+x2+x3+x4+x5) ==0 )
x6=mx。
否则x6=0。
finalH=x1+x2+x3+x4+x5+x6;
如果(x1>0 )
y1=mn。
否则y1=0。
如果(x2>0 )
y2=mn+(mx-mn)/4。
否则y2=0。
如果(x3>0 )
y3=mn+(mx-mn)/4。
否则y3=0。
如果(X4>0 )
y4=mn+(mx-mn)/2。
否则y4=0。
如果(x5>0 )
y5=mn+(mx-mn)/2。
否则y5=0。
如果((finalH>0) && ((y1+y2+y3+y4+y5)==0) )
y6=mn。
否则y6=0。
finalL=y1+y2+y3+y4+y5+y6;
for( i=0; i<OctLinesCnt; i++)
{
mml[i]=0。
}
dmml=(最终H-最终L)/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;
如果(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])。
}
否则
{
ObjectMove(buff_str, 0, Time[0], mml[i])。
}
buff_str="mml_txt "+i;
如果(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])。
}
否则
{
ObjectMove(buff_str, 0, Time[mml_shft], mml[i])。
}
}
nTime =Time[0];
CurPeriod= Period()。
}
//----
return(0);
}
//+------------------------------------------------------------------+
 
Anatoliy Ryzhakov:

你好。帮助我弄清楚指标...

没有人会去看这种格子呢。


 

=一般来说--需要(可能是有人)做介绍 性的介绍。


是否有更现代的东西,有好的例子?


=Well, try without "should", "must", "did not do", "did not report".


你似乎把我和别人搞混了。我在这里没有使用这样的字眼。

 

我不明白如何写指标,问题出在哪里?

我需要画一条线来显示active_1和 active_2 之间的 价格差异。

它的作用

我还需要一个平均的ma_period ma_period 来绘制在这条线上,有一个问题,它没有被显示。

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