東京システムトレーダーの開発日記

MT4のEA開発者のブログ

MQL4プログラミング入門(番外編1)

◇プログラムを書く時に、頭の隅に置いていなければならないこと◇

1.安定性の問題
ウィンドウズでもLINUXでもOSは何でもいいのですが、エラーが起こった時に実行するエラー処理(プログラム上の後始末)は書かなければなりません。
MT4でも同じで、オーダーが通らなかったり、何か予期せぬエラーがあるときはエラーコードをMT4側からEAに返してきます。
適切にエラー処理をするコードを書きましょう。

2.実行中にバグった時
EAがバグっているときは、MT4側の方が真っ先にとんでいます。
実行環境に問題がある場合は、EA側ではどうしようもないので実行環境を正常化するしかないです。
EAが異常終了する場合は、実行環境(WindowsかMT4)が部分的に故障している可能性が高い。
故障している可能性があるなら、修正しなければ致命的な事故につながる場合がある。
朝起きたらバグってロスカットになっていましたなどというのは、シャレになりません( ;∀;)

3.安定動作が確認できていない技術は積極導入しない。
新テクノロジーが発明されたのであれば、それを使うことは悪ではない。
時々、新テクノロジーへのアンチテーゼをテーマにしている文学。もしくは漫画などの作品を見かけるが、彼ら(作者)は、「なぜ新しい技術ばかりがダメなのか」を本当にわかっているわけではないという感想を私は持っている。

新しいテクノロジーがダメなのではなくて、新しいテクノロジーは、登場初期は欠陥やバグが潰されていない場合が多いので、(人命などの)重大事故につながる危険のある分野での積極利用がリスクにつながる恐れが大きいというだけなのである。
Windowsもアップデートでバグを潰しているが、とにかく始めの頃はたくさんアップデートさせられる。
十分不具合が潰れたことを確認してから、新テクノロジーは適応すべし。

Beatrice-07も大幅アップデートしたばかりだが、正直気が進まなかったのは、正常に動作していることが確認できている(システムがわかる第3者的にも)もののコードをいじることで、不安定化する危険があったからである。
コンピューターの素人は、このあたりがわかっていないよう見受けられる。

[ 2016/12/10 19:58 ] 未分類 | TB(-) | CM(0)

近況その他雑記

EAを動かすには、健全なOSと正常な設定、壊れていないMT4が必要。
と、いうのはアタリマエのことなのですが出来ない人っていうのはいるみたいです。
VPSも提供する業者によってはウィルス対策ソフトもインストールされていますが、全く無い場合もありますし、サーバ側でやるからインストールしないでくださいっていうのは結構多い。
私は、さくらインターネットのwindows版VPSを使っているけど、これはいい。
定評のあるサーバ版ESETが予め入っていて、サクサク動く。
ただ、玄人向けかもしれない。
 
さて、MT4もウィンドウズ上で動作するわけだから(MACとかLINUX+wineで使う人もいますが・・・)、壊れることもたまにはある。
メンテナンスが必要。
壊れた環境でEAを動かして何かあっても、それは(法的に)EA開発者の責任になることはないので、各自しっかり管理する必要があるわけです。

キチンとシステムを運用出来る自信がない人は、シストレ24を使うべきなのだと思う。
取引高キャンペーン
 
安い製品群は、クレーマーも多いので取り扱いたくはなかったのですが・・・・((((;´・ω・`)))
普通のクレームなら改善に応じなければなのですが、
相手が悪質な場合、あとで弁護士使ってこっちから民事訴訟したりとか面倒なわけですよ・・・・・。(販売会社は関係なし)
事業関係だと与えられた(イメージなどの)損害によっては、請求する金額もとんでもない額※(普通のお家くらい・・・・・)になります。
※事業相手は個人の10倍以上覚悟が常識
で、やっておいて大体は払えないわけです・・・・・( ノД`)。
※個人限定でふっかけてメチャメチャにして潰すのが大好きなので

高額の顧客しか相手にしたくなくなるのは、こういう背景があったりします。
安い商品は売りやすいかもしれませんが、苦労の割には儲かりません・・・・・。
 
 
 
◇トランプ相場◇

トランプ相場では、痛い目にあった人も多かったのではないかと思う。
私の場合は、いつものことで現実逃避モード(気絶投資法)を実践していたわけで、少なくとも”精神的には”痛手を負わなかったわけです。ちなみに、口座は数ヶ月間見たくありません。。。
 
テレビ・新聞での報道と現実の結果が、かけ離れている話をいまだにする人が多いのが、今回のアメリカ大統領選挙なのですが。
テレビ・新聞は民間企業なので、自分たちの利益に相反するような報道をすることはありませんね。
「壁の通り」のような大スポンサーの機嫌を損ねたら大変ですから。。。。。
調査のサンプリングも、思い通りの結果が出やすいところのエリアなどに限定して行おうとか、そういうことはしていないと信じたい人も多いのではないでしょうか。。。
 
私が、何年も前に新聞の購読を解約して、テレビをハードオフに売っぱらった理由も見て取れるのではないでしょうか。
[ 2016/12/01 23:03 ] FXと関係ないこと | TB(-) | CM(0)

トランプ相場にご注意を!

いつものことになりますが、ファンダメンタル的に荒れる相場ですとBeatriceは負けますので、資金管理にご注意くださいませ。
私はいつもの様に、自分の口座を見ないようしています。
胃が痛いですから・・・・・・。
そろそろ食べたもの戻してもいいでしょうか・・・・・。※食事中の方ごめんなさい。

早く、いつもの相場に戻るといいのですが。。。。
[ 2016/11/24 12:57 ] 未分類 | TB(-) | CM(0)

MQL4プログラミング入門(1)

MQL4はC言語の様式に似せて作られている。
だから、C言語でのプログラミングが出来る人にとって基礎部分の習得はすぐである。
教育心理学が何なのかはさっぱりわからないが、実力のある、出来る人はすぐできるようになる。
正直、出来る人は放っておいても勝手に出来るようになる。
 
しかし、MQL4はイベント的な概念が加わるので、ただC言語が出来ると言うだけの人に分かりにくい部分もあるかもしれない。
これは、どちらかと言えば、C++やC#的な要素だろう。
 
新MQL4はMQL5への橋渡しとして、MQL5のプログラミング要素を取り入れている。
旧MQL4から、オブジェクトというものは存在したがMQL5は、オブジェクト指向が何となくでも分かっていないと、取っ付きにくいかもしれない。
どうせMT4からMT5へ移行させられるのだろうから、MQL5は出来たほうが良いのだが、多くの人は、まず新MQL4から覚えたほうが良いかもしれない。

新MQL4は旧MQL4と若干違う。MQL5に似せられている。
普通のC言語と違って、イベントという概念をまず分からなければならない。

例えばWindowsマシンでマウスをクリックする、キーボードを押すという「イベント」が発生する。
OSは、イベントに合わせて該当するプログラムを呼び出す。
古いC言語の概念からは、難しいかもしれない。
例えば、左下のウィンドウズボタンを押すとイベントが発生して、必要なプログラムをウィンドウズが実行する。
プログラムはマウスを監視していない。
マウスの操作がイベントを発生させて、所定のプログラムが実行された。
初めにイベントありき。
旧世代プログラミングとは順序立場が逆。

MQL4ではMT4がOSみたいなものということだろう。
MQL4では、初期化(EA起動時)、終了、チャートにtickが発生
他にもあるけど、まずこの3つが基本になる。
基本、ループでグルグル回すということはしない。
あくまで、イベント発生時にだけワンタイム処理をするように組んで、終わったらMT4へ制御を返すようにしなければならない。

//////////////////////////
初期化イベント (起動した一番初めにだけ実行される)
int OnInit()
{
//---
Print("Initialization");
//---
return(INIT_SUCCEEDED);
}

終了イベント
void OnDeinit(const int reason)
{
//---
Print("Deinitialization with reason",reason);
}

チャートにtickが発生(チャートが動く度に実行される)
void OnTick()
{
//---

}

//////////////////////////
 
これらの関数は、mainから呼び出されるということはない。
各々が完全に独立していて、イベントに合わせてMT4から呼び出して実行する。
 
詳細は次のホームページに書いてある。(注、日本語なし)
https://docs.mql4.com/runtime/running
読めない人は、日本語に約したものを自分のサイトに載せている方々がいるようなので、そちらを参照しても良いかもしれない。
ただ、プログラミング例を載せていない場合は、分かりにくいかもしれない。
 
ならば、C言語が分かる人はコードベースからフリーのコードがダウンロードできるので、そちらを解析して慣れたほうが早いと思われる。
https://www.mql5.com/en/code/mt4
これらはプログラムの組み方を学ぶのには最適だが、トレード用のアルゴリズムとしては参考にならない場合のほうが多い。
 
一般の書店で売っているような投資本の理屈をプログラムにしてあるレベルなので、これは実戦では使い物にならない。
世の中の人は、どれだけ儲からない手法を教える詐欺に引っかかっているのかと思うと、残念でならない。
本当に儲かる方法をただで教える理由はないのだろうが、FXでも同じで巷のトレードテクニックを実践すればたちまち丸裸にされてしまう。
自分が儲からないので役に立たないテクニック(普通のゴールデンクロス・デッドクロスとか)を投資手法として安売りしている。
なら、なんたら翼ではないですが、情報商材の何十万円するトレードテクニックのほうが幾倍もマシなのだと思う。
ただより高いものはない。。。
安物買いの銭失いという言葉もある。。。

関係ないことですが、あまり裕福ではない人は、こういう役に立たないテクニックを拾ってくるのが大好きなものらしい。
そして、役に立たないテクニック(近々大損失を出すような)をドヤ顔で、あなたにも推奨してくる。
貧乏はこうやって伝染する。。。。。
貧乏関係と縁を切らないと自分が裕福になれないのはこういうことと深い関係がある。
アメリカの大富豪が口を揃えて言うことには。。。。
続く)
[ 2016/11/23 00:33 ] 未分類 | TB(-) | CM(0)

現代的プログラムの面倒臭さ(^^) オブジェクトなMQL5

メタトレーダー4のEAやインジケータはMQL4言語で書くわけですが、MT4 Built600以降のMQL4の仕様はMT5のMQL5の要素をふんだんに取り入れています。

MQL4と違って、決済の処理が面倒くさいとか。
※英文リファレンス読んでも決済という概念が見当たらない。
インジケータの読み込みもMQL4では関数で読んでいただけでした。
MQL5ではバッファを用意してMT5にインジケータの値を書き込ませてからバッファを読み出すとか、全体的に違ってくるわけです。
試しにMQL4からMQL5へのコンバートを試みたEAがありますが、MQL4のときより長いプログラムの記述がいるようです。

ただ、インターフェイスの利便性を上げるためか、MT5はEAがマウスからの入力も受け付けることが出来るようになっています。
Windowsプログラミングで言うところのイベント処理ですね。

近代的なプログラムは、全世代的なプログラムと違ってイベント処理や画面描画処理を個別に行うという概念があります。
旧世代プログラミングでは、マウスやキーボードの入力をプログラムが監視し、逐次画面描画も更新していました。(プログラムが支配している)
現代的なプログラミングでは、マウスやキーボードの入力がプログラムを呼び出します。(プログラムが支配されている)
画面の描画に関しても、あえて更新処理命令を出さなければ、Windowsは画面の内容を更新することはありません。
内部データが変化していても・・・・・・。
大昔の古いプログラムしかわからない人には、理解が難しいところかもしれない。

プログラミングに対する世代間の考え方の格差もそうだし、概念的なものの変化もそうだし。
なにより、プログラミングのスタイルはメタトレーダープログラムの世界でも変化があるのだから、なんとも忙しいものです。

[ 2016/11/22 20:22 ] 未分類 | TB(-) | CM(0)
 
システムトレードランキング