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

 
Climber:
SK「大規模プログラムにおけるオーダーブッキング」 による複雑なオーダーブッキングについて、素晴らしい記事を見つけました。
正直なところ、この件は詐欺なんじゃないかと疑っているんだ。
この ページからのKoreyの 投稿を読むと、より明確になります。そして、私の最初の "grail " を見てください。
 
以前、聖杯の 話を読んだことがあるのですが :)
しかし、grailの記事に書かれているキャラクターと違って、私は彼のような考え方はしないんです。"自分だけ!"みたいな。ここがおかしいというか、今は運がいいというか。とはいえ、選手権の結果を見ると、3ヶ月でかなり良い結果が出ているので、基本的には不可能はないということですね。それにしても、このような「急展開」を現実の世界で実現するのは誰なのだろうか、と考えずにはいられません。
 
Climber:
それなのに、現実の世界では誰がこのような「急速な」発展を許すのだろうかと疑問に思う。

素朴な疑問である。そして、答えは明白で、正直に働く者である(ブローカーはここでは論じない)。

もっと難しいのは、Expert Advisorが安定した高い成果を上げているかどうか?それとも、単なるはめ込み話、まぐれ当たりなのでしょうか?

 
SK. писал (а):
もっと難しい問題は、アドバイザーが実際に一貫性を与えているかどうかだ。
高い成果?それとも、ストーリーに合わせたのか、たまたまなのか。
まあ、まだ持っていないのですが、もし持っていたら、かなり理解できると思います。 チャンスに傾倒しているのもありますしね。以上、とりあえずデモを手動でやってみました。

ただ、以前はもっと控えめな結果だったんですけどね。そして、一般的に、あなたの本(ほぼ1ヶ月間)と言語全体を勉強しながら、私は2年間のFXの勉強で知らなかったし、疑わなかった取引について多くのことを学びました。そこまで知らなくても、どうやって稼げばいいんだろうと、今さらながら考えています))ただ、最初にデモトレードをしたときは、月に300ドルも稼げないと感じました。特に、あらゆる種類のボスに対する私のアレルギーを考慮すると、それも悪くはありません:) 私は以前、自分のブログで最初のExpert Advisorを書きました。

最初に読んでから1週間で、最初の顧問を書きました。しかし、私が書いたのではなく、トレード基準のブロックだけを置き換えてコピーしたもので、あとはMAを使ったEAの例から引用したものです。でも、書いてみると、こういう風にしたらどうなんだろうということだけを知りたかったんです。長時間手動でチェックすることなく、単純にテスターの機能を使うという意味です。grailの 記事のような発想はありませんでした。この点では、私はもっと地に足がついている:)デポジットが完全になくなった(バリアントが1つ減った)ので、結果的に満足しています。発想が単純なので、確認しないのは罪なことでした。しかし、最後の戦略は、MQL4のツールを使った記述の方が(私にとっては)難しいので、自分の手を動かしています。しかし、マニュアルモードでのその結果は、Expert Advisorのさらなる開発が必要です。だから、ゆっくりだけど、書こうとしているんだ。
 
Climber:
ただ、以前はもっと控えめな結果だったんです。そして、総じて、先生の本(ほぼ1ヶ月)と言語全般を勉強している間に、2年間のFXとの付き合いの中で、知らなかったこと、疑わなかったことを、トレードについてたくさん知ることができました。今、自分がどうすれば何も知らずに稼げるか考えているくらいです)。
ただ、最後のストラテジーはMQL4による記述が(私にとっては)複雑なので、手動で作業しています。しかし、マニュアルモードでの結果は、Expert Advisorのさらなる開発を必要とするだけです。だから、ゆっくりですが、書いてみています。
私の考えでは、強固な利益を生む戦略を作るための労力は、言語を学ぶための労力よりも2桁(100倍)ほど高いと思うのです。要するに、プログラミングは技術的なツールに過ぎず、ほぼ予測可能であるため、ストラテジー作成者の意思に従うことになる。しかし、プログラミングを突き詰めていくと、マーケット・トレーディングの戦略という現象が見えてくることも事実です。だから、自動売買にこだわった開発者の判断は百歩譲って正しい。
 

からSK

変数、.

以下のように書かれていますね。

" すべての配列は、初期化時に明示的に指定されていなくても、本質的に静的である、すなわち静的な形式を持つ "

ただし

インジケータがあり、呼び出し側のサブルーチンが配列を持っているとします。

1)

double summ[]; //標準関数 ...................................................................................................

i=ArrayMinimum(sum,iter,0); // 2回目の呼び出しでエラー。<ArrayMinimum関数の開始位置0をインクルード>。

2) 誤差のバリアント

static double summ[];

//..............................................

i=ArrayMinimum(sum,iter,0); // 2回目の呼び出しで同じエラー。<ArrayMinimum関数の開始位置0をインクルード>。

3)エラーフリーバリアント

double summ[1000];

..............................................

i=ArrayMinimum(sum,iter,0); // 通常の実行例

4)エラーフリーバリアント

static double summ[1000];

..............................................

i=ArrayMinimum(sum,iter,0); // 通常の実行例



例1、2から、配列は動的に確保されることがわかる。

例2は、次元のない配列が静的配列として初期化されていないことを示唆しています(これは当然ですが、コンパイラのエラーには現れません)(

例 3 4 は,定義済み配列のみが静的割り当てを持つことを意味します.

興味深いことに、実行システムは、例1、例2のErrorと判定をキャッチしており、よく考えられたリアルタイム端末システムであることがわかります。つまり、配列はオブジェクトのように振る舞います。開発者に拍手

しかし、単純な変数ですべてがうまくいっているわけではありません。

double instik(int &t) // この関数は、呼び出し側のプログラムの変数を変更します。

{

t++;

}

この呼び出しは、以下の場合、すべてのティックにカウントされます。

//...........................................

静的 int tik;


instik(ティック)です。

Print (" tick=",tik);

//...............................

そして、これはメモリ割り当てが動的で、2回目の呼び出しのリンク先アドレスが一致しないため、カウントされないのです。

int tik;


instik(ティック)です。

プリント(" tick=",tik)。

// instikサブルーチンは未知のバイトにインクリメントを与えるが、ターミナルはクラッシュしない!!!!改めて、開発者の方々に敬意を表します。

 
SK. писал (а):

しかし、公平に見て
また、プログラミングの詳細に踏み込むことで
トレーダーは、マーケット・トレーディング・ストラテジー全体の現象を見るようになる。
を、よりクリアな視界で見ることができます。そして、経験を積むことで、ふるいにかけていくのです。
そして、経験を積み重ねることで、間違った考え方はふるい落とされ、有望な考え方は見極められるのです。
100%同意します。最初はプログラミングを学ぼうとしているのかと思うくらいで、今まで知らなかったトレードのことを知ることができました。ということで、とりあえず経験を積んでいこうと思います:)
 
Korey:

からSK

変数、静的変数。

...


特殊な機能は1tick ごとに再実行されることを見落としているのではないでしょうか。静的変数はその値を保持し初期化されませんが、非静的変数はコードに従って初期化されます。あなたのコードでは、整数型変数tikはデフォルトでゼロに初期化されています。

//----------------------------------------------------------------------------------
int start()
   {
   int tik;                // Инициализация нолём на каждом тике
   instik(tik);            // Вызов функции, передача параметра по ссылке
   Alert (" tick=",tik);   // Всё время выводит 1, как и ожидается
   return;
   }
//----------------------------------------------------------------------------------
double instik(int &t)      // Функция изменяет переменную в вызывающей программе
   {                       // При каждом обращении заходит 0
   t++;                    // Увеличение значения на 1, как и заказано, т.е.
   }                       // ..при каждом исполнении уходит 1
//----------------------------------------------------------------------------------

instik()では、すべてが意図したとおりに行われます。start()では、Alert()の時点で、変数tikの値が1になっており、Alert()が出力していることになります。

しかし、これは真実のすべてではありません。変数tikはstaticとして宣言されていないため、その値は保存されません。つまり、次に特殊関数 start() が実行されたとき、変数 tik は再びゼロで初期化される。そして、すべてが再び始まるのです。そのため、アラートも安全に次々と出力されます。

 
セルゲイ・コバレフ選手、おめでとうございます。

MQL4言語チュートリアルの リリースは2月1日を予定しており、すでにMQL4.communityのウェブサイトに統合されています。英語への翻訳も順調に進んでいます。
 
セルゲイ!
Expert Advisorにカウンターオーダーで注文をクローズする機能を実装するにはどうしたらいいですか? チュートリアルで見つけられませんでした...