MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 663

 
なんだか、4の話になってしまいましたね。この例は、書かれた時期が異なるため、異なる機能が使われているようで、誤解を招きやすい。
 
Artyom Trishkin:

mql5のチュートリアルはどこにあったのですか?

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

そうそう、MQL4メタクオーツで、コバレフ・セルゲイの教科書が正式に発表されました。MQL4アルゴリズム言語によるプログラミング

 
psyman:
なんだか4についての議論みたいになってしまいましたが。例題が書かれた時期が違うようで、それ故に異なる機能が使われており、誤解を招く。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

MQL4初心者のための質問、アルゴリズムやコードに関するヘルプとディスカッション

アルチョム・トリシキン さん 2016.11.09 22:50

このブランチでは、 新しいMQL4 での プログラミングを本当に理解し学びたい、そしてMQL5へ簡単に 切り替えたい、そんな人たちの手助けを始めたいと思います - 言語はとてもよく似ています。

このブログでは、タスクやアルゴリズム、その他MTプログラミングに関連するあらゆる疑問について、一方的に議論していきます。

当フォーラムの他の経験豊富なメンバーも議論に加わって、このスレッドが皆にとって興味深いものになることを期待しています。


 
Igor Makanu:

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

そうそう、MQL4メタクオーツで、コバレフ・セルゲイの教科書が正式に発表されました。アルゴリズム言語MQL4によるプログラミング

このティムールという人物を知っている人はいるのだろうか?

なんといっても、この人が書いているのだから。

どんな教科書?リファレンスや論文、フォーラムはあっても、教科書はない。そして、それはそこに必要であると主張するために、それをキャストするために何を - それはあなたがまだサードパーティのリソースで検索して見つける必要があり、教科書の著者にある。つまり、この主張は 根拠がなく、MetaQuotesにはない。
 

=i.e. 根拠のない主張 である。


このスレッドはクレームをつける場所ではないと思いますが、正確さを求めるなら、教科書という言葉はここから引用しています https://book.mql4.com/ru

彼らは最初から、OnInitについて何も言わずに、init https://book.mql4.com/ru/programm/structure を使い始め、他の例で進んでいます。

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

=i.e. 根拠のない主張 である。


このスレッドはクレームをつける場所ではないと思いますが、正確さを求めるなら、教科書という言葉はここから引用しています https://book.mql4.com/ru

最初からinit https://book.mql4.com/ru/programm/structure を使い始め、OnInitについては何も言わず、他の例で進めています。

なるほど、この教科書は100年前のものなんですね :)

ご存じない方もいらっしゃるかと思います。

一般的に - それは導入の知人のために必要(おそらく、誰か)である。書かれてから非常に年月が経っていますが、今、読んでみると、何かとこの掲示板で質問した方が良いですね。

まあ、「すべき」「しなければならない」「しなかった」「報告しなかった」等々を抜きにして考えてみてください。

mql4とmql5の完全かつ詳細な知識を得るために必要なすべてのもの - すべてがこのリソースに豊富にあり、すべての好みに合わせて利用できます。

 

こんにちは。Murray lines "のインジケータを助けてください。(そのデータをEAで使いたいので

iCustom.最初のバーの1番目の指標線の値を返すように - " double Divb1=iCustom(Symbol(),PERIOD_CURRENT, "Murrey-levels-system",P,StepBack,1,1); " Divb1を市場参入条件として使用するが、テスト時にはこの線を考慮せずにポジションを開く。(1の代わりに、指標線の任意のインデックスを入れて、注文は同じ場所で開かれます).条件 if(Bid<=Divb1)

おそらく、関数のパラメータに誤りがあるのでしょうが、どれが誤りなのか判断できません。

//||
//| 著作権 © 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];
文字列 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()
{
Comment(" ");
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()
{
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=High[bn_v2]とする。
//----
if(v2<=250000 && v2>25000 )
fractal=100000とした。
さもなくば
if(v2<=25000 && v2>2500 )
fractal=10000です。
さもなくば
if(v2<=2500 && v2>250 )
fractal=1000 とする。
さもなくば
if(v2<=250 && v2>25 )
fractal=100とした。
さもなくば
if(v2<=25 && v2>12.5 )
fractal=12.
さもなくば
if(v2<=12.5 && v2>6.25 )
fractal=12.
さもなくば
if(v2<=6.25 && v2>3.125 )
fractal=6.25とした。
さもなくば
if(v2<=3.125 && v2>1.5625 )
fractal=3.125とした。
さもなくば
if(v2<=1.5625 && v2>0.390625 )
fractal=1.5625です。
さもなくば
if(v2<=0.390625 && v2>0)
fractal=0.1953125です。
range=(v2-v1)とする。
sum=MathFloor(MathLog(fractal/range)/MathLog(2));
octave=fractal*(MathPow(0.5,sum));
mn=MathFloor(v1/octave)*オクターブ。
if((mn+octave)>v2 )
mx=mn+octaveです。
さもなくば
mx=mn+(2*オクターブ);
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です。
else x1=0;
if((v1>=(mn+7*(mx-mn)/16))&& (v2<=(13*(mx-mn)/16+mn)))
x4=mn+3*(mx-mn)/4です。
else x4=0;
if((v1>=(mn+3*(mx-mn)/8))&& (v2<=(9*(mx-mn)/8+mn))&& (x4==0) )
x5=mxとする。
else 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となります。
else x3=0;
if((x1+x2+x3+x4+x5) ==0 )
x6=mxとする。
さもなければ x6=0;
finalH=x1+x2+x3+x4+x5+x6;
if(x1>0 )
y1=mnとする。
else y1=0;
if(x2>0 )
y2=mn+(mx-mn)/4となります。
さもなければy2=0。
if(x3>0 )
y3=mn+(mx-mn)/4となります。
else y3=0;
if(x4>0 )
y4=mn+(mx-mn)/2です。
else y4=0;
if(x5>0 )
y5=mn+(mx-mn)/2。
else y5=0;
if((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=(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]);
}
さもなくば
{
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]);
}
さもなくば
{
ObjectMove(buff_str, 0, Time[mml_shft], mml[i]);
}
}
nTime =Time[0];
CurPeriod= Period()。
}
//----
return(0)です。
}
//+------------------------------------------------------------------+
 
Anatoliy Ryzhakov:

こんにちは。インジケーターを把握するのを手伝ってください ...

こんなタータン、誰も見向きもしませんよ。


 

=一般的に - 入門的な紹介のために(おそらく誰かが)必要な ものです。


もっと現代的で、良い事例があるものはないのでしょうか?


=まあ、「すべき」「しなければならない」「しなかった」「報告しなかった」を抜いてみて ください。


誰かと勘違いしているようですね。ここでは、そのような言葉は使っていません。

 

インジケーターの書き方がよくわからないのですが、何が問題なのでしょうか?

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