MQL4プログラミングに関するオンラインブックのベータ版 - Sergey Kovalev (SK.)著 - ページ 3

 
Climber:
Meta Traderを1週間前に初めて使ってみて、今まで使っていたターミナル(RumusとForex Trader)よりもずっと便利だということがわかりました。2年ほど前、FXを知り、初めてデモ口座を開設したとき、「どうすればすべてを自動化できるのだろう?そして、端末を開くと、メール欄に「Autotrading」というメッセージが表示されていた。そして、ここにいる)))この本を真剣に読み、近いうちに私が開発した戦略のために最初のExpert Advisorを書くことを望んでいます。それまでプログラミングとは全く無縁で、自分がプログラミングを勉強することになるとは想像もつかないほどでした)))読んでいるうちに疑問が湧いてきたり、逆に疑問が消えていったり。問題が出て、先を見て、2章ほどで答えが見えたので満足して、また順番に全部読みました。 特に、過去のデータで戦略をテストして、その結果戦略を調整できることに惹かれました。
とにかく、本を買ってくれてありがとうございました。


素晴らしいです。あなたは新しいMTユーザーです。そして、あなたは今、プログラミングについて実質的に何も知らないのです。

少なくとも月に2、3回は様子を報告することを提案させてください(希望すればもっと頻繁に)。それは非常に面白いことだと思います。

とりあえず、もし許されるなら、質問があるんだけど。という疑問が湧いたということですが、これについては以下の項目でお答えしています。そのような事態を避けるために、まとめようとしたのです。どのような質問なのか、明確にしていただけますか?

 
SK. писал (а):
Climber:
1週間前、初めてMeta Traderをインストールして試してみました。今まで使っていた端末(RumusやForex Trader)よりもはるかに便利であることがわかりました。2年ほど前、FXを知り、初めてデモ口座を開設したとき、「どうすればすべてを自動化できるのだろう」と考えました。そして、端末を開くと、メール欄に「Autotrading」というメッセージが表示されていた。そして、ここにいる)))この本を真剣に読み、近いうちに私が開発した戦略のために最初のExpert Advisorを書くことを望んでいます。それまでプログラミングとは全く無縁で、自分がプログラミングを勉強することになるとは想像もつかないほどでした)))読んでいるうちに疑問が湧いてきたり、逆に疑問が消えていったり。疑問が湧き、2章ほどで答えが見えたので先を読んで納得し、また順番に全部読み返しました。特に、過去のデータでストラテジーをテストし、その結果修正することができる点に惹かれました。
とにかく、この本をありがとうございました


素晴らしいです。あなたは新しいMTユーザーです。そして、あなたは今、プログラミングについて実質的に何も知らないのです。

月に2、3回、近況を知らせてください。とても興味深いことだと思います。

とりあえず、もし許されるなら、質問があるんだけど。という疑問が湧いたということですが、それについては以下の項目でお答えしています。そのような事態を避けるために、まとめようとしたのです。どの質問のことを指しているのか、明確にしていただけますか?

プログラミングを知らなくてもプログラムが書 ける「Sign of Misery」を使って、仕事を楽にしたことがあります。アクションを実行する順番に指定するだけでした(私は主にオートメーターとして使用しましたが、もっと多くの可能性があります)。例えば、エクセルに4列でたくさんの値(地球物理学の電気探査データ、20cmごと)があったとします。このデータをさらに処理するために、0、1、2、3、4......と、メーターからだけデータを取る必要がありました。このプログラムは、キーをエミュレートするコマンドとマウスの座標を変更するコマンドで、動作を自動化するために作りました。エヘにまとめました。でも、それは余談に過ぎない。プログラムは、ラベルを作り、そのラベルに移行するための条件を設定し、つまり、このサイクルを終了するための条件を設定し、操作のサイクルを作る必要がありました。EAを構築するという問題に至ったとき、コード構造の大まかな見方はある程度わかっていました。しかし、私がこの本を読み始めたとき、私はプログラムの構築の構造に少し混乱し、次に各ティックで繰り返される関数int start()によって、その実行時に私は入札の価格を見つけた場合、それは変数に書き込まれ、その実行を通じて格納されている、次に私は価格が変化したときに知っていて、プログラムは新しい価格に基づいて他のアクションを実行できるのだろうか。私のプログラムでは、何らかのループコードによって価格が更新され、常にそれを要求していると考えていました。また、もう一つ疑問があったのですが、関数を呼び出してその実行の際、次の関数が実行されると想像していたのですが、最初に関数を呼び出した関数に続いて、制御が戻ってくることが分かりました。しかし、この事実は、私にとって特に喜ばしいことでした(この機能に続く他のアクションは、このようにスキップされているのだろうかと考えたからです)。今、私はこんな疑問を抱いています。私は、init関数を実行する際に、私の注文に適した開始価格を計算する関数と、私の口座の残高データに基づいてロットサイズを計算する関数を呼び出すことを理解しました。initが終了すると、start関数の実行が始まり、それには「待機」のためのコードが含まれることになります。取引に必要な価格は、それが来るとすぐに、注文の開始が実行されます(テイクプロフィットは、値ТРを飛び越えるジャンプがある場合、それはトリガされませんので、置くことを前提としていない、とジャンプこれは潜在的に値ТРよりも有利な、したがって、私は現在の価格が等しいか、<、または>指定したときに最後の既知の価格での注文を閉じるために形成したいと思います。というのは、注文の「終値」を待って、また最初に戻る、つまり、決済された価格をもう一度計算して、注文の「終値」を使うというコードをどこに書けばいいのかが、私にとって最も謎なのです。つまり、オープニングに設定する価格を計算し、この価格まで待つ必要がある、などです。タイトルの中に何か書いてあったと思うので、それが私の質問の答えになると思います。オープニングとセッティング・オーダーのセクションを読み終えているところ。昨日の朝から読み始めました。
もちろん、私のような状況や通信がなくても経過をお知らせします))。建設的なご意見を期待しています。
お忙しい中、ありがとうございました。
 

以下のメッセージは、内容がわかりにくいので段落分けしてください。

Climber:
しかし、この本を読み始めてから、プログラムの構造、そしてint start()関数に少し戸惑いました。この関数は1ティックごとに繰り返され、その実行時に入札価格を知っていれば、それを変数に書き込み、実行時間中その変数に保存します。私のプログラムでは、何らかのループコードによって価格が更新され、常にそれを要求していると考えていました。

プログラムがリアルタイムに動作するためには、新しい価格の事実と価格そのものを定期的に通知する必要があるというのは、ご指摘のとおりです。

実は、2つの方法があるんです。

第一の方法は、ある関数をエンドレスループで実行し、そこから定期的に価格を要求する方法です。
しかし、この方法にはデメリットがあります。
- 問い合わせが頻繁に行われると、結果的に通信経路に大きな負荷がかかり、PCのリソースを浪費することになります。
- 問い合わせの頻度が少ないと、問い合わせの間に新しい価格を見落とす可能性があります。

2番目の方法(MQ技術では基本的な方法として認められている)は、必要なコードの起動が端末に属するという点で全く異なる。端末はサーバーから情報を受け取り、新しいティックが来たこと(新しい価格という事実と価格そのもの)を理解し、この情報に基づいて端末は()関数を開始します。これら全ては、MQL4でのプログラム セクションで説明されています。

クライマー です。
init関数を実行する際に、私の口座の残高データに基づいて、私の注文の開始価格とロットサイズを計算する関数を呼び出すことに気づきました。init実行後、start関数の開始が始まります...

不正確です。init()とstart()は特殊な関数です。これらは、自身の特性に従って(より簡単に言えば、実行のために呼び出されるルール、条件に従って)、クライアント端末によって呼び出される。これについては、「特殊機能」の項で説明します。init()関数は、プログラムがウィンドウにロードされたときに一度だけ実行されます。そして、start()は各ティックで呼び出されます。これはとても便利です。ティックが来て新しい価格をもたらした=ターミナルが実行されるまで実行されるstart()を起動する。ロット数の計算、始値・終値注文の条件など、すべての計算をそこに挿入しなければならない。

クライマー です。
それから、私にとって最も不可解なことは、注文の "クローズ "価格を期待するコードをどこに書くか、すなわち、再び、オープニング価格をカウントし、この価格を待つなど、最初に戻ることです。タイトルの中に何か書いてあったと思うので、それが私の質問の答えになると思います。Opening and Setting Ordersの項を楽しく読ませていただきます。

質問内容から判断すると、プログラムを書く必要はありませんし、今読んでいるものを読む必要もありません。このような場合は、もう一度読み始めることを強くお勧めします。一貫して、先走ることなく。そして、そのまま、提示された例をすべてMEに入力し、PC上で実行してみてください。そして、コードのすべての文字が完全に理解されるまで、次のセクションに進んではいけません。Tick、Control、Function、Special Function、Operatorの概念を調べ、一般的には「用語辞典」を 随時確認する。

クライマー です。
私の立場上、通信がなくても必ず経過を報告します))建設的なご意見を期待しています。
ご感想をお寄せいただきありがとうございました。

アドバイスを正しく受け止めて、その通りに行動してほしい。

 
SK.は(a)を書いた。
<br / translate="no">

クライマー です。
それから、私にとって最も不可解なことは、「終値」を待つコードと最初に戻るコード、つまり始値を再度カウントしてこの値を待つコードなどをどこに書けばいいのかということです。タイトルの中に何か書いてあったような気がする、つまり私の疑問に対する答えのような気がする。オープニングとセッティング・オーダーの項をまだ読んでいるところです。

質問内容から判断すると、まだプログラムを書く必要はないし、今読んでいるものも読む必要はないでしょう。

うっ、エキスパートの構造がわかったような気がします。
早速、vdpに走り書きしてみました、どうぞ。

イニシャル

スタート

未決済注文の最大数=1に設定しました。

注文の受付状況を確認する。

が開いていれば、注文を閉じる関数を呼び出す。

注文が出なければ、「価格とロット数を計算する」という関数を呼び出します。

--------------------------

有利な売買価格の算出およびロット数の算出に必要です。

--------------------------

現在の価格を問い合わせる。

現在値≧売値の場合。

で、決定したロット数と同数の売り注文を出す。

でない場合は、現在の価格と落札価格を比較します。

現在の価格が入札価格より低い場合。

がそれぞれ買い注文を出す。

--------------------------

注文を確定するための関数を 呼び出す。

もどる

ディニット


そうなのか?
 
Climber:
正しく理解できたか?

まあ、全体としては正しいのですが :)おめでとうございます。他のものを理解するのは、いつでもうれしいものです。

それでも、私からのアドバイスです。チュートリアルで提案されたコードをすべてPC上で計画的に実行し、飛ばしたり、読み飛ばしたりせずに、最初から行ってください。

 
Parabellum:

この本の中には、ROC指標という面白い指標があります。価格変動率指標(https://book.mql4.com/ru/samples/iroc)です。この本は教科書であり、著者は半グレや四グレのソースコードを渡す義務はないことは理解していますが、インジケータのアイデアは非常に優れているので、少し手を加えてラグをさらに弱くしました。

ちなみに、ページで公開されているインジケータのテキスト自体には、コードに2つのミスプリントがあるため、コンパイル不能になっています。
      Line_4[i]=(Line_1[i]+Line_2[i]+Line_3[i])3;// Суммарный массив
      //-------------------------------------------------------- 17 --

      Line_5[i]= Sum(Aver_Bars+1); // Индик. массив сглаженной линии
分割文字が2回欠落している(htmlファイル作成時に消えた?)
本文中にリンクされているインジケーターファイルは正常です。
 
SK. писал (а):

まあ、全体としては正しいのですが :)おめでとうございます。他のものを理解するのは、いつでもうれしいものです。

それでも、私のアドバイスに従ってください:チュートリアルで提案されたすべてのコードをPC上で整然と実行し、スキップやスキップせずに最初から戻って行く必要があるのです。


そうですね、読んだことの結果を見たり感じたりすることは非常に重要です。それが長期記憶に固定されると、感情的な内容の影響を受けて、より多くの関連性が現れます:)ちなみに、興味を喚起するためには、一番重要な章を遡ったり使ったりすることが必要で、そうすれば、興味自体が目標につながり、知識の輪が広がっていくということも強調したかったのです。私たちの状況で一番難しいのは、所有しているすべてのものの効果を見ながら、何が面白いかを理解し、最も効果的な順序を考えていくことです。私は、連想記憶の動作を誘導記憶と関連づけ、分散した領域は少なくとも1つのリンク(関連付け)がある限り存在し、リンクが多いほど領域が解放されないため、その使用とその後の有用性が確保されると考えています。そのため、読んだ内容を定着させるために、常にアソシエーションのストックを補充しておく必要があります。

追伸:言い過ぎたならごめんなさい:)

 
timbo: ちなみに、ページで公開されているインジケーターテキスト自体には、コードに2つのタイプミスがあるため、コンパイル不能になっています。
      Line_4[i]=(Line_1[i]+Line_2[i]+Line_3[i])3;// Суммарный массив
      //-------------------------------------------------------- 17 --

      Line_5[i]= Sum(Aver_Bars+1); // Индик. массив сглаженной линии
分割記号が2回消えている(htmlファイル作成時に消えた?)
本文中にリンクされているインジケーターファイルは正常です。


そう、そういうものがあるんです。ソースコードではまだエラーは検出されませんが、テキストコードがなぜかところどころ狂っています。私たちはそれを解決します。
 
xnsnet:

追伸:大袈裟だったらごめんなさい:)

:)うん、ちょっとだけね)))
 
また、この本についての小さなメモがあります。実例を使ったほうがいい。猫の話ではなく、お金や物事に関連した話という意味です。例えば、ループ演算子の話になった時、羊の例で少し気が散ると、我々の条件でどう使えるかを考え始めてしまい、知覚のプロセスから外れてしまう。

もう、ループに苦労しています(この部分は何度も出直します)。それに、あの羊ですからね。

私の意見ですが、もしトレード(ほとんどレイド:)の具体的な例を考えた場合、OK、トレード、そして読者が自分のアイデアに似た例(どうやって実装したらいいかわからない)に出会ったら、その人は大きな関心を持ってこの例を考え、自分のアイデア(私が言いたいことはわかると思いますが)を実装するためにどう修正・カスタマイズしたらいいかを考えるはずです。)

そのような例があり、残高の1/3の注文を出す方法に興味を持った。1/3をドルに換算して、ロット単位(0.1とか3.5とか)で合計するために、頭の中でどんな数学的演算が行われたかは想像もつかないだろう。そして、openbuy.mq4の 例では、ストップオーダーをいくつか指定した上で、利用可能な資金の35%分の買い注文を開くのですが、これを見たときは、どんなに嬉しかったことでしょう。私はそれに目を通し、何を、なぜ、どこで、と一行一行勉強しました。その中で使われている標準関数(MathFloor、MarketInfo......)を見てみました。