記事"MQL5入門: シンプルなExpert Advisorとカスタムインディケーターの書き方"についてのディスカッション - ページ 4

 

このExpertAdvisorはMT5ビルド712では動作しません。

Cant't copy indicator buffer」というエラーメッセージが表示されます。

また、インジケーターは警告なしにコンパイルされません、

53行目の 型変換によるデータ損失の可能性」、

54行目の "possible use on uninitialized varaiable 'day_n'"。

62行目の "uninitialized varaiable 'h_day' での使用の可能性"

63行目の "psosible use on uninitialized varaiable 'l_day'" (初期化されていない変数 'l_day' で使用可能)


これらの問題を修正していただけますか?

そうでなければ、MT5以外のソフトのバックグラウンドを持っている私たちにとって良い例です。

 
逆指値の売り注文を 5つ、逆指値の買い注文を5つ発注し、その間に10pipsのギャップを置きたい場合。どうすればいいですか?
Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5
 

これは、初心者やmql4からの移行者向けの優れた記事であり、優れた取引戦略の例を紹介している。

コードに若干の欠点(エラーチェックが必ずしも実装されていない)がありますが、著者が推奨するように分足で 使用すれば、EAは非常にうまく機能します。インジケータをコンパイルする際の警告は単なる警告であり、インジケータやEAの使用を妨げるものではありません。

Documentation on MQL5: Standard Constants, Enumerations and Structures / Chart Constants / Chart Timeframes
  • www.mql5.com
Standard Constants, Enumerations and Structures / Chart Constants / Chart Timeframes - Documentation on MQL5
 

これは、人々にmql5を説明する簡単な方法ではありません。(初心者がそれを理解するチャンスがあるような!) プログラミングの本と同じで、90%の人は何から始めたらいいのかわからない。例えばCプログラミングの本を開くと、最初の "簡単な例 "が小さなフォントで丸1ページにわたって書かれている。私のこれまでの人生で、誰にでもプログラミングを教えられるような優れたプログラミングの本は1冊しか読んだことがない。その理由は、おそらく優秀なプログラマーが書いているのだろうが、残念なことにとても下手な教師が書いているからだ。プログラミングは本当に簡単なもので、私は今よりもう少し時間があるときに、MQL4 プログラミング言語の 簡単なチュートリアルを作ってそれを証明するつもりだ。誰にでも-全くの初心者でも。最大の間違いは、言語の詳細を教えることだ。彼らの仕事のほとんどは、ctrl+Cとctrl+vで、コマンドはgoogleを使うべきだ。私は10以上のプログラミング言語を知っていますが(7歳からプログラミングをしています)、この11kb(!!)の「簡単な例」の説明の仕方にはいまだに恐怖を感じています。この例からMQL5を学んだ本当のプログラミング初心者はいるのでしょうか?もしいたとしても、その人たちは片手の指で数えることができるだろう。

Fast Dive into MQL5
  • 2012.08.02
  • MetaQuotes Software Corp.
  • www.mql5.com
You have decided to study MQL5 trading strategies' programming language, but you know nothing about it? We have tried to examine MQL5 and MetaTrader 5 terminal from the newcomers' point of view and have written this short introductory article. In this article, you can find a brief idea of the possibilities of the language, as well as some tips on working with MetaEditor 5 and the terminal.
 
angreeee:

これは、人々にmql5を説明する簡単な方法ではありません。(初心者がそれを理解するチャンスがあるような!) プログラミングの本と同じで、90%の人は何から始めたらいいのかわからない。例えばCプログラミングの本を開くと、最初の "簡単な例 "が小さなフォントで丸1ページにわたって書かれている。私のこれまでの人生で、誰にでもプログラミングを教えられるような優れたプログラミングの本は1冊しか読んだことがない。その理由は、おそらく優秀なプログラマーが書いているのだろうが、残念ながらとても下手な教師が書いているからだ。プログラミングは本当に簡単なもので、私は今よりもう少し時間があるときに、MQL4 プログラミング言語の 簡単なチュートリアルを作ってそれを証明するつもりだ。誰にでも-全くの初心者でも。最大の間違いは、言語の詳細を教えることです。彼らの仕事のほとんどは、ctrl+Cとctrl+vで、コマンドはgoogleを使うべきです。私は10以上のプログラミング言語を知っていますが(7歳からプログラミングをしています)、この11kb(!!)の「簡単な例」の説明の仕方にはいまだに恐怖を感じています。この例題からMQL5を学んだ本当のプログラミング初心者はいるのだろうか?もしいたとしても、片手の指で数えられるくらいだろう。

プログラマーが一般的に良い教師ではないというのはその通りだ。

しかし、MQL5を学ぶのはとても難しいという意見には同意できない。

 
私のようなmql5プログラミングの 初心者にとって、これは素晴らしい記事だ。
 

私の記憶では、SYMBOL_TRADE_STOPS_LEVEL パラメーターで指定された値よりも、変更されない値の方が現在価格に 近い場合であっても、ポジションのレベル(SL または TP)の 1 つを変更し、他のレベルを変更しないことは可能です。プログラムを作成する際、新しいポジション・パラメーター(レベル)がポジション・データの正しさをチェックするための要件を満たさないような方法でポジション・パラメーター(レベル)を変更することはお勧めしません。

削除済み  
Expert AdvisorをコピーペーストしてStrategytesterでテストしてみました。しかし、トレードができません。私はMQL5もプログラミングも初めてなので、もしかしたら私がバカなミスをしただけかもしれません。エラーなしでコンパイルできました。このストラテジーがとても欲しいのです!なぜstrategytesterで動かないのか、どなたかご存知ですか?
 

皆さん、こんにちは!

私の場合、以下の場合のみすべてうまくいきます。

request.type_filling=ORDER_FILLING_IOC;

request.type_time =ORDER_TIME_DAY

https://www.mql5.com/ru/forum/1156/page9#comment_2359257。

私のブローカーFxProの特殊性でしょうか?

Обсуждение статьи "Пошаговое руководство по написанию советников в MQL5 для начинающих"
Обсуждение статьи "Пошаговое руководство по написанию советников в MQL5 для начинающих"
  • www.mql5.com
Обсуждение статьи "Пошаговое руководство по написанию советников в MQL5 для начинающих". - Страница 9 - Категория: статьи и техническая библиотека по автоматическому трейдингу
 

mql5プログラミングの 初心者です。


この例で学ぼうとしていたのですが、インジケータ構築の最後のループで少し迷っています。どこでday_n変数に値を代入したのでしょうか?


ループはday_n<day_tを チェックします。プログラムはどうやってday_nの値を知ることができるのでしょうか?


for(i=prev_calculated;i<rates_total;i++)
     {
      day_t=time[i]/PeriodSeconds(ATRtimeframe);
      if(day_n<day_t)
        {
         day_n=day_t;
         h_day=high[i];
         l_day=low[i];
        }
        else
        {
         if(high[i]>h_day) h_day=high[i];
         if(low[i]<l_day) l_day=low[i];
        }
      bu[i]=l_day+atr[1];
      bd[i]=h_day-atr[1];
     }


また、どのように計算されているのでしょうか?rate_total = 10で、まだ計算されたバーがないとします。だからprev_calculated = 0


day_t=time[0](TODAY!)/PeriodSeconds...1970年から数え始めるので、10日前から数え始めると仮定する。

だからday_t=10。ここで、dayt>daynかどうかをチェックする。daynは知らないが、dayt=10は知っている。値がないので、daynは0だと仮定する。

するとdaynも10になる。オーケー。

prev_calculated + 1= 1.

dayT=time[1](昨日)/period...10日前からカウントを始める。

しかし、今はdayN < dayTは偽である。それからelse式を実行し始める。わかりました。わかりました。


そしてすべてのbu[]とbd[]を計算する。わかった。ループはprev < total rateが偽のときに終了する。

しかし、新しいバーが来て、それが再び真になったとき、私は再びゼロから始めるのか?それとも10から始まって、そのままelseの部分に行くのでしょうか?


ありがとうございます!