すなわち、コピーする要素の数。あなたのデザインでは、要素の数は無制限です。大雑把に言えば、非現実的なことですが......)そしておそらく、これが仕事中に起こることで、常にメモリを使い切らないように再分配しているのでしょう。TerminalInfoInteger(TERMINAL_MAXBARS)ではなく、より具体的な値を使用してみてください。 MQL5 Reference /Access to timeseries and indicators / Bars
input int iPeriod = 13; // период input int iMode = 1; // тип сглаживания input int iPrice = 5; // цена input int iBars = 480; // количество баров для просчета, если это возможно в принципе ограничить
for(i=limit;i<rates_total && !IsStopped();i++){ newData[i]=(High[i]+fmax(Open[i],Close[i]))/2; } // и дальше чего? как мне индикатор то заполнить используя iMA ? самому сглаживать вторым циклом? или что? outBuffer=????????????
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
フォーラム検索(mql5のヘルプでday_of_week, dayofweekを検索しても何も出て こない...)
MQL5 リファレンス / 標準定数、列挙、構造体 / データ構造 / 日付構造体。
考えてみよう。CopyRates()関数の場合、最後のパラメーターは以下の通りです。
すなわち、コピーする要素の数。あなたのデザインでは、要素の数は無制限です。大雑把に言えば、非現実的なことですが......)そしておそらく、これが仕事中に起こることで、常にメモリを使い切らないように再分配しているのでしょう。TerminalInfoInteger(TERMINAL_MAXBARS)ではなく、より具体的な値を使用してみてください。 MQL5 Reference /Access to timeseries and indicators / BarsOK、ありがとうございます
なぜ、このTerminalInfoInteger(TERMINAL_MAXBARS) が必要なのか、まだわかりません。
...になる!?:-))
mql4の関数を置き換えるにはどうしたらいいのでしょうか? ヘルプにはどこを掘ればいいのかヒントすらありません。
もちろん、その言語を丸暗記している、つまりリファレンスブックで簡単に検索できるのであれば、リファレンスブックは必要ありません。
しかし、暗記していない場合、あるいはmql4から乗り換えた場合、リファレンスブックで検索してもほとんど役に立たない((
sss。3から4になったときよりも、mql5に入りにくくなった;-)誰がなんと言おうと。
OK、ありがとうございます
なぜこのTerminalInfoInteger(TERMINAL_MAXBARS) が必要なのかが不明なままです。
...になる!?:-))
これは例えば、指標となるバッファを どの程度の深さまで計算するのかを知るためである。また、「不経済なプログラム」や「過剰なTERMINAL_MAXBARS 値」によってリソースが過剰に使用されているかどうかを把握することができます。 TERMINAL_MAXBARSは今のところ手動でしか変更しないので、そのサイズをコントロールし、必要であれば、あなたのプログラムの外部のユーザーにバーを下げるように通知 することができます。
mql4の関数を置き換えるにはどうしたらいいのでしょうか? ヘルプを見てもヒントすらありません。
もちろん、その言語を心得ていれば、Referenceで探すのは簡単です。
しかし、暗記していない場合、あるいはmql4から乗り換えた場合、リファレンスブックで検索してもほとんど役に立たない((
実は「day_of_week」という検索ワードで見つけたんです。7つのリンクのうち、上のリンクがそうです。
sss。3から4になったときよりも、mql5に入りにくくなった;-)誰がなんと言おうと。
ここでは何も言えません。
これは例えば、指標となるバッファを どの程度の深さまで計算するのかを知るためである。また、「無駄な」プログラムが原因でリソースが過剰に消費されているのか、TERMINAL_MAXBARSが 高く設定されているためなのかを把握することができます。 TERMINAL_MAXBARSは今のところ手動でしか変更 されないので、その大きさを制御し、必要であれば、あなたのプログラムの外部のユーザーにバーを下げるように通知 することができます。
実は「day_of_week」という検索ワードで見つけたんです。7つのリンクのうち、上のリンクがそうです。
ここでは何も言えません。
つまり、1つはアップロードされたバーの数で、もう1つは表示されたバーの数です。唯一の奇妙なことは、識別が非常に異なっている理由です - 1は、ストレートとシンプルなバーです。
もうひとつは、何もないところを通って。
特にdayOfWeek関数そのものについては何も見つからず、最初のリンクのday_of_week(どうしてこのように書くべきだと思ったのか)は無関係なナンセンスでした :-)。
もう一つ質問させてください。
インジケーターの描画方法がわかりません。すべてのインジケーターに異なる説明があり、たくさんのコードがありますが、光りません。
上下の影を描き、さらに自分なりの方法でなめらかにしたい。
が、せめて標準的なものは自分で実装したい。
簡単だと思うのですが、抽象的だとmql4に飽きてしまいます:-)))
もしかしたら、誰かが解説付きでやってくれるかも?
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots 1
#property indicator_type1 DRAW_LINE
#property indicator_color1 Red
input int iPeriod = 13; // период
input int iMode = 1; // тип сглаживания
input int iPrice = 5; // цена
input int iBars = 480; // количество баров для просчета, если это возможно в принципе ограничить
double iBuffer[];
void OnInit(){
SetIndexBuffer(0, iBuffer, INDICATOR_DATA);
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime& time[],
const double& open[],
const double& high[],
const double& low[],
const double& close[],
const long& tick_volume[],
const long& volume[],
const int& spread[])
{
//---- проверка количества баров на достаточность для расчёта
return(rates_total);if (rates_total < 2*iPeriod) return(0);
// ????? :-)
}
double calcPrice(int type){
switch (type){
case 1: return(high); ??
case 1: return(high - fmax(open,close)); ??????
}
}
冒頭はクリア))))))))))))))))))))))、あとはどうでしょうか?
ありがとうございました。
ごきげんよう。
ロシアでFORTSとMICEXを操作するための端末としてMetatraderを提供しているブローカーがあるかどうか教えていただけませんか?
インジケーターの描き方が全くわかりません。どれも説明が違うし、たくさんのコードがつながっていて、光が見えません。
学習のために、上下の影からマを作り、さらに自分なりの平滑化計算をしたいのです。
どのように?とても簡単なのですが、抽象化するとmql4に飽きてしまうのです :-))
誰か説明してください。
冒頭はクリアー ))) ですが、あとは......
よろしくお願いします。
エディタでNavigator => Indicatorsフォルダ => Examplesフォルダを開いてください。そして、インクルードファイルを使用せずに書かれた、動作するインジケータ(ParabolicSAR、Custom Moving Averageなど)のコードを見つけることができます。いくつもこなしていくうちに、いろいろなことが見えてくるはずです。あとは、フォーラムで説明します。多くのトレーダーは、他人のインジケータを書くのが億劫なのです。
しかし、私はそうする)。直感的にわかるコードであれば...山のようなコードを見ても...まだよくわからない((
とか、「サンプルを開いて、飽きるまでいじり倒せ」みたいなアドバイスはできるんですが、「アドバイス」じゃなくて「ヘルプ」を求めたんです...。
例えば、2つのインジケーターフォームについて。
最初のフォームには4つのパラメータがありますが、その目的を明らかにしたいのです。
重要なデータはどこから来るのか」ということの本質は何なのか、このパラメーターの物理的な意味は何なのか、私たちはそれをとてもグローバルなものにしているのか?
また、計算のための配列についての質問です。リストはタブのパラメータに設定されていますが、私の理解では、それは最初のフォームのみで、このリストは変更不可能ですか? それとも、あなたの配列(上記の問題の文脈で-例えば、平均的な影の配列)を追加することは可能ですか?って
第二の形式は、すべてが明らかになっているわけではなく、より多くの可能性があるようです。
ENUM_APPLIED_PRICEは、データの設定で使用できます。一方、(最初のフォームのように)前のインジケータデータの選択がありません。
改めて、自分のデータをどう設定するか?
double newData[];
double outBuffer[];
for(i=limit;i<rates_total && !IsStopped();i++){
newData[i]=(High[i]+fmax(Open[i],Close[i]))/2;
}
// и дальше чего? как мне индикатор то заполнить используя iMA ? самому сглаживать вторым циклом? или что?
outBuffer=????????????
一方では - iMA()ハンドルはonInitで準備されるが、そのためのデータはまだ定義されていない、それらはonCalculateで定義される... 私は混乱した( 説明してください、誰が理解しているのですか?
今回は、自分の経験を話しただけです。あなたは私よりもコードを掘り下げるのが好きではないことがわかりましたね :)まあ、いいや。
例えば、2種類のインジケーターについて。
なぜ、第一形式にはあって、第二形式にはないのか、それは、必要ないということなのか。
重要なデータはどこから来るのか」ということの本質は何なのか、このパラメーターの物理的な意味は何なのか、私たちはそれをとてもグローバルなものにしているのか?
ここを見てください(beginというキーワードで見つけました - 検索エンジンを使ってください):MQL5 Reference / Custom Indicators
また、計算のための配列についての質問です。リストはタブのパラメータに設定されていますが、私の理解では、それは最初のフォームのみで、このリストは変更不可能ですか? それとも、あなたの配列(上記の問題の文脈で-例えば、平均的な影の配列)を追加することは可能ですか?って
MQL5リファレンス / 言語の基礎 / 変数 / 入力変数をご覧ください。
グローバルな勉強の仕方についてですが、もしここで質問に対する回答がなく、コードを掘ってもそれほど面白くない場合は、サイトの検索エンジンで「初心者」と入力し、「記事」の項目を選び、指標に関する「初心者」の記事に目を通すとよいでしょう。わかります、面倒くさそうですよね。しかし、適切な記事をいくつか見ていくと、まず簡単な線が引けるようになり、次にバーの高値と安値の平均値の線[(high[i]-low[i]/2)]が引けるようになり、そして初歩のMAが作れるようになって、最後に自分のアイデアが実現することになるのです。
この場合は、自分の経験を話しただけです。あなたは私よりもコードを掘り下げることが好きではないことがわかりました :)でも、気にしないでください。
ここを見てください(beginというキーワードで見つけました - 検索エンジンを使ってください):MQL5リファレンスガイド / Custom Indicators
手始めに、MQL5 Reference / Language Basics / Variables / Input variablesを参照してください。だから、それを得意とするモンスターの人たちに、例を書いてもらっているんです。
だから、その中にいるモンスターの人たちに、例を書いてもらうんです。
2.調べてみたが、なぜ第2形態で使われないのか(というか、なぜ第1形態で使われるのか?)
なぜ、最初のフォームの入力パラメータに含める必要があるのでしょうか? 任意の変数とどう違うのでしょうか?
3.調べたところ、入力パラメータのリストを設定する方法ではなく、自分のデータに対して計算を実行する方法を尋ねたのですが、それについては一言もありませんでした(((
でも、フォーラムではみんな「OOPは簡単だ」と傲慢に言っているんです。
そんなことは誰も主張していない。少し手間がかかりますが
2.見てみたが、なぜ2番目のフォームで使われないのか(というか、なぜ1番目のフォームで使われるのか)理解できなかった。とにかくユーザー定義である(タブで定義されないのですね)。
なぜ、第一形式の入力パラメータに入れる必要があるのか、任意の変数とどう違うのか。
うーん、どうなんだろう。そこの例から、すべて納得がいきました。
3.調べたところ、私は自分のデータに対して計算を実行する方法を尋ねたのであって、入力パラメータのリストを設定する方法を尋ねたのではありませんでした。
問題は、「どのようにデータを設定するか」でした。一つの方法として指摘した。
他の指標のデータを元に計算したい場合は、以下の方法で行うことができます。まず、独自のデータ計算方法を持つ新しいインディケータを作成し、このインディケータのハンドル(MQL5 Reference / Technical Indicators / iCustom)を取得し、新しいインディケータでハンドルを使用します。例をよく見てください。例題についてご質問がある場合