fc2ブログ

while無限ループ ~ リアルでは動いてもバックテストできない話。 MetaTrader4プログラミング

「くるり♪♪♪のFX珍道中」のくるりさんURLですが、PCの特定の分野にくわしかったりします。

しばらく前に、MSのSkyDriveをおそわりました。URL
使ってみるとすごく便利です。ありがとうございます。

アップロードするに300MBまで可能
条件によっては無料で25GB保存可能なので、便利です。
アップローダーとして使って知人にデータを渡すには便利です。



ところで、類似サービスとしてgoogleも同様のgoogledriveを始めたようです。
URLそれをするに関係でgoogle+の登録を試してみました。

googleでもsaru999は同名で数年使っているので、まずはsaru999でやりました。
結果は、だめでした。数字や特殊文字は不可です。
当て字を探して、猿休休休= saru 9 9 9 ですが、これも駄目。
そして、猿  =saru 9 は、いったん通りまして喜んでいたのですが、翌日メールが来ました。
内容は「4 日以内に名前を編集しないとプロフィールは停止する」という話。
こんどは、猿算休=saru+3*9として再提出。さてどうなるのだろうか。..
うまく審査が通ってくれるといいのですが。..
来週開けに答えは出るみたいですが。。。
駄目ならば、googledriveでの共有や、サークルなど、一部使えない機能がでるそうです

まるで、外国人が日本に帰化するときに、日本の漢字を当て字にして悩むのを連想してしましました。
漢字は、音や意味や文字数など、選ぶとなるとなかなか難しいです。
一方、こういう経験はあまりないことなのでおもしろかったりする部分もあったりします。










・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・
話は変わります。

MetaTaderでEAを書いていて出会ったデバッグの話の記事です。

・・・・・
プログラムが正常稼働しないバグには段階があります。
aコンパイルエラー
bエラーコード。  コンパイルは通っている。
c思い通りに動かない。プログラム自体は正常稼働。
dバックテストとリアルトレードで異なる動きをする
となっています。
制作者側からみて、簡単な順序で並べると
a<b<c<d
です。
もっとも難しいのは、dです。
プログラム修正前に、同じバグを発生させること事態が難しかったりします。
dでは、リアルトレードの特定の通信障害で起こる不具合などあります。。。


さて、今回はd類似の分野の話です。
バックテストとリアルトレードで共同が異なる話。
今回は、バックテストで不具合がでて、リアルトレードではうごいてしまうプログラムです。




・・・・・
まず基本知識から始めます。
プログラムとしては、while文の話。
while文はループの命令文です。
条件式が成り立ったらループを抜け出すと書くわけです。
無限ループにすると思い通りの動きにならないのでそれ避けるわけです。

ということで、、、
今回使用のEAファイルのダウンロードはこちらURLから。




・・・・・
ループを抜ける命令文は以下の3つがあります。
return
break
continue

###
Quiz 1
ここでクイズです。
3つプログラムA,B,Cのうちで動かないものは?

(画像)20120523ABC



###
Ans1 (A B C)
とあって、for文と違いwhile(true)では回数制限がないので、returnとbreakは予定通り動きますが、continue文は無限ループになってだめですね。





・・・・・
で、こんどは
今回であったバグはreturnとbreakでも無限ループになる話。
さきほどうまくいった、if(条件式)return(0);でも無限ループになる訳です。
正確には、バックテストでは無限ループになってダメ。リアルトレードでは無限ループにならないのでOK。ということ。
おもしろいのは、バックテストとリアルで異なる動作をする点ですね。




###
Quiz2 (D E)
正常稼働と、うまくバックテストでうごかないものは?
20120523DE

Ans2
Dが正常稼働で、Eがうまく動きませんね
Eのうまく動かないほうでも、リアルではうまく動くんです ^^;
解説は記事の末で。。。


・・・・・
最後です。
###
Quiz3 (F G)
正常稼働と、うまくバックテストでうごかないものは
20120523FG

Ans3
Fがバックテストで正常稼働しません。これもFはリアル口座では正常稼働するんです ^^;
Gは正常稼働です。


解説
MetaTrader4は、tickが動くごとにstart()関数が計算されるわけです。違う見方ではreturn(0);文によってstart()に帰ってこないといけないんです。バックテストで正常稼働しなかったE・Fは,while文のループを抜け出すif(条件式)の条件文に問題があります。ここに、BarsやBidというロウソク足が進まないと変化しないものが書き込まれています。最初の1回に引っかかるとwhile文が無限ループに入るために正常稼働しないんです。
では、リアルでなぜ動くのかというと、リアルでは時間が過ぎると自動的にチャートのロウソク足は増えて、Bidは変化します。while文から抜け出すことができるんです。

バックテストできないと、EA製作上は非常に不便です。
よって、whileループを抜け出す条件式に、BarsやBidはつかわないほうがいい
という話でした。


コメント

No title

☆猿産休☆ですと、すんなり通る気がします。

コメント返し

こじろうさんへ
「猿産休」 考えてみます♪
ネーミングの産みの苦しみですねw

No title

グーグルプラスが実名登録を基本に考えていたんだと思うんですよね。フェイスブックに対抗したいのでしょう。

僕も、昔から使ってたアカウントで登録したら、はじかれました。

コメント返し

ぶちょーさんへ
はじかれましたか。..
実名登録ですね。たしかに、猿休って実名の人いないですよねw

こんばんは

何度読んでも・・・
ちんぷんかんぷんです・・・・・

Google+ 登録できたのか・・・できてないのか・・・
イマイチよくわからないままです・・・・

No title

[バックテストとリアルトレードで異なる動き]
今回の記事の内容は、難しかったです。
まだまだ、お休みしています^^;

No title

難しい内容ですね。
私はPC苦手でトレードだけです。

PC使いこなせる方は素晴らしいです。

今週も宜しくお願いします。^^

コメント返し

くるり♪♪♪さんへ
>何度読んでも
何度も読んでくれてありがとうございます^^

>Google+ 登録できたのか
たぶん正常に出来ているでしょうね。
なぜならば、うまくいかないときはGoogleから警告メールが来ます。
私にはそれが来ましたので経験談です(恥


窮鼠さんへ
while文ってあまりつかわないのでわかりにくいですよね。
あるEAで「含み益になったらOCO」と書くときに、この文体を書いていて気がついた話です。
単なるOCO注文と、含み益OCOって書き方が違うんですよね。


mocoさんへ
PC分野って広いですよね。私もMT4はわかりますが、一般のPCはよくわからなかったりします(汗
こちらこそ今週もお願いします。



No title

デバックの意味すらわかりませんでした・・・

今度の仕事でよく使う単語なのにw

コメントが返し

ゆうみさんへ
うまく動かないのがプログラムのバグ。
それを動くように、バグを取るのがデバッグです。

No title

結局、そのトラブルに陥って、横で見ていたsaruさんが、こうこうと説明するとなるほど!となるんでしょうね。

自分でやったことのない人は、ティックとstart()の関係で既に?マークでしょう。

No title

うお~~~頭がオーバーヒート寸前です><
プログラミング??FX??って人なので。w
旨いラーメンが作れるシステムをsaruさんにお願いしようかな。w

コメント返し

masaruさんへ
たしかに2人でPC並べて話した方が早いですね。
最近はプログラム初心者へは動画解説をつくって送っています。
この後はTeamViewerを使用するか思案中です。

伊達猫さんへ
うまいラーメンのつくりかたですか?
それは伊達猫さんに教わりたいです ^^

コメントの投稿

管理者にだけ表示を許可する

トラックバック


この記事にトラックバックする(FC2ブログユーザー) URL

最近のコメント
FC2カウンター
先輩FXトレーダー
最近の記事
プロフィール

saru999

Author:saru999
(投資との出会い)
若い頃から投資に興味は持っていました。当時は個別株の本を読んでいました。
そんなときに、外貨預金の発展形としてFXに出会いました。
当時はまだ為替投資が一般に始まったばかりでした。
いろんな人が、他市場の商品相場の手法、株式相場の手法、オプションの手法をFXに持ち込みそれを学びながらトレードしました。

(投資経歴 )
私自身はもいろんなトレードをしました。
シストレ逆張りトレード、裁量トレードやトレンドフォローから始めました。
うねりとり、つなぎうりもしました。
高金利通貨売り等大衆と逆のポジションを取るトレードもしました。
保有期間も日足・中期足・短期足等色々やりました。
さらに、数年前からは自動売買プログラムで資金を運用するようになりました。
MT4/EAを使うようになってトレードの精神的負荷は少なくなりました^^


(現在)
3つの時間軸と手法で運用をしています。
短期はFX。MT4・自作系EA(自動売買プログラム)で為替・金・銀を運用しています。
中期は225オプションです。サヤトリ系トレードを研究しています。
長期は人民元積立投資+つなぎトレードです。
投資を始めて約10年になりますが、投資は奥深く興味が尽きません。
使用プログラム言語はMQL,EXCELVBA,pythonなど。

全記事表示リンク

全ての記事を表示する

有益なリンク集
FXトレード関係
IMMポジション 外為.com
経済指標カレンダーURL
統計資料店頭FX月次速報URL
チャート データ マーケット関係URL
中央銀行 URL国家機関 URL
重要指標の過去チャートURL
債券長中短期URL月10更新
為替レートと2国間金利差の相関チャートURL
トレード用の情報源URL
期間違い相関係数URL 通貨別相関係数URL
過去のスワップ金利URL
トレード英語URL
ポジション売買データURL
OANDAURL
JimRogersBlogURL
建玉数量クリック365 URL


債券・株式・商品
世界の株価URL
債券の利回り比較URL
225出来高日経225
株/外国人投資家の動向URL
日本株外人売買データURL
オプションCDSURL
グロソブウィークリーレポート木曜公表
株・株式優待URL
金建玉URLURL
商品・金銀WTIURL



MT4/MT5/FT2/シストレ系
MT4日本語リファレンスURL
MT4情報BBS等URL
VPSmemoURL
FT2 URL
MT5URL

Windows7 URL
Perl C++ java APIURL
統計解析等URL
4本値データURL
プログラム用英単語URL
WEBラーニングPROGURL
オブジェクト指向/デザインパターンURL


ニュース
動画日経 URL
bloombergURL
nikkeiURL
reutersURL
ラジオTV動画 URL




その他 トレード以外
Google翻訳URL
ThesaurusURL
Skype CommunityURL
かわいい動画URL
みずほ仲値データURL
日米経済調和対話2011.3(年次改革要望書)URL
無料ワクチンMS URL

ブログ関連 挿絵画像URL