スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

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はつかわないほうがいい
という話でした。


スポンサーサイト

アウトプットのためにインプットの時間~近況報告

近況報告
・・・・・

私にとっては、作成してたEAが一つの節目となり、次回作のEA準備の時間です。
EAつくりはアウトプット。しかし、自分の中にある物を出すだけでは、次回作が同レベルの物しかできないわけで、進化が出来ません。そのために、次回作のためにインプットをする時間を作っています。
今はインプットの時間です。具体的にはチャートのN値をMT4で書く途中です。結論だけ書くとMT4ではN値・E値は書けます。その表現方法が複数ありどれがいいのかを研究中です。インジケーター用と、EA用と、それぞれ使い勝手がいい方法を思案しています。
そのほかにも、準備しなければいけないことがあるのですが、、、
とりあえず、来月になったら新EAつくり開始予定です。..






・・・・・
・ブログ
ブログを書いて数年がたちました。
おもしろさと難しさと常に共存しています。
私のブログで最もアクセス数が多かったのは下記の記事。

SendMailでyahooメールに送信する~MetaTrader4 URL
これは MT4でメール送信する設定方法です。
情報系記事です。

情報系記事は書けるんですが、MT4ばっかりだとブログ訪問者が限定されて、一般人からはコメントがしにくいという欠点があります。
ですから、他の日常近況報告などの記事とバランスを取りながらアップしています。
このそれぞれの頻度のバランスというのが難しかったりします。
理由は、私が日常MT4にどっぷりの時はブログもMT4どっぷりになってしまったりして、ほどほどの頻度というのが難しかったりします。
ブログは何年たっても難しいです ><;

とりあえず、今回は近況報告というのんびりブログ記事です。







・・・・・
株主優待券でプリンタインクが買えた話(嬉
masaさんURLから終わった株主優待の話があります。
MT4でつかうVPSが株主優待で半年5000円安くなるという話。URL
この会社はFXのGMOクリック証券の親会社なんですが、上記特典と同時に別の2000円の金券がもらえます
GMOとくとくポイント2000円分は、ひとことでいうとお買い物できるポイント金券です。
正直初めて使ったんですが、無事プリンタ互換インクを購入できました(嬉
ちなみに、メーカー純正インクの方が高くて、互換インクの方が4割引ぐらいで安いですw








MT4 1分足から各時間足を作成する~バックテストのためのperiod_converter Allの使い方

MT4の有効な機能にバックテストがあります。
しかし、
・バックテストでエラーが出たとき。
・過去の4本値がない期間のバックテストをしたいとき。
等のときに、新しく4本値を作るという方法があります。
今回はそのノウハウの記事です。

やり方を要約すると
・1分足を入手する
・MT4で1分足から5M/15M/30M/1H/4H/日足を作成する

というものです。




//
1,
道具・材料の準備
FXDDから1分足データのダウンロード>解凍
ダウンロードは下記URLから。
http://www.fxdd.com/mt/jp/forex-resources/forex-trading-tools/metatrader-1-minute-data/
FXDD4本値画像20121025
http://global.fxdd.com/jp/mt1m-data.html





//
2,
period_converter All.mq4 を入手する。
入手は下記から
http://ux.getuploader.com/509/download/3/period_converter+All.mq4
・それを、C:\MT4\experts\scriptsフォルダに入れる




//
3
MT4を開く
ツール>オプション>チャート>ヒストリー内の最大バーの数「99999999999999」9を14個入れる
ツール>オプション>チャート>チャート表示バーの最大数「99999999999999」9を14個入れる
開かれているチャートをすべて閉じる
20120505039999999999999




4
MT4を閉じる。

PC上ファイルから、C:\MT4\historyを開く。
そして、以下の各hstなどを削除する
2012050604del





MT4を再起動する。

ツール>ヒストリーセンター>AUDJPY>1Minute(M1)>インポート>Browse>(データの目視確認)>OK20120505import




MT4を閉じる


MT4を再起動


ファイル>オフラインチャート>AUDJPY1M>開く
20120506オフライン




ナビゲーター>Scripts>period_converter_Allをチャート上にドロップ
20120509Periodcov



10
ターミナル>Expertsで、各時間足の形成を確認

11
すべてできたらMT4を閉じる。

PC上のファイルから、C:\MT4\historyをみる。
そうすると下記画像のように各時間足ができてる
2012050611完成


以上で完成です。

それでは、バックテストをお楽しみくださいね♪








にほんブログ村 為替ブログへ
できましたらクリックお願いします

EAはマウスクリックで作れちゃいます! ~無料EAジェネレーターの使い方


EAは作りたいが、自分でプログラムは書けません。EA有料業者は高額だし。..
そんな人にお勧めなのが、EAジェネレーター。
EAジェネレーターとは、マウスクリック程度でEAがつくれてしまう物。
有料版は多数ありますが、今回紹介するのは無料版のEAジェネレーター。

・今回の記事は、無料EAジェネレーターの使い方の説明です。
まず、こちらをクリックしてください。
URL
http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/#Sell
2012050500




早速始めます。
今回のEAのロジックは
//
売りエントリー
指数移動平均線(EMA21)が、単純移動平均線(MA25)を、下抜けたら、売りエントリーサイン発生。
決済
+100PIPS利食い
-80PIPS損切り
とします。



売りエントリーですが、
「指数移動平均線(EMA21)が、単純移動平均線(MA25)を、下抜けたら」
というのは、プログラム上、下記2条件が必要です。
1本前のEMA21 > 1本前のMA25 第一条件
0本前のMA25 > 0本前のEMA21 第二条件 
※ 現在のロウソク足を0本前と呼び、その1本前のロウソク足を1本前と呼ぶことにします。
2012050501




売りエントリー 第一条件
1本前のEMA21 > 1本前のMA25
2012050503




売りエントリー 第2条件
0本前のMA25 > 0本前のEMA21 第二条件 
2012050504





決済
+100PIPS利食い
-80PIPS損切り
2012050505
最後に、Complete!ボタンを押すとEA完成!





出来たファイル.mq4をMT4に入れる。
C:\MT4\experts フォルダに、出来たファイル.mq4をいれる。
MT4をいったん閉じる。そしてMT4の再起動。
これはコンパイルと同じ効果。
そして、バックテストをすると
下記のように成功!です。
2012050507

完成品のEAは下記におきました。
http://ux.getuploader.com/509/download/10/YourExpertAdvisorNo1_20120505.mq4


EAは作ったことないけれど、、興味はあるという人はやってみてくださいね♪







・・・・・・

///////
ところで、自分で作る手法でFX自動売買の魔法使いさんブログの話です。
ロジックも同ブログから公開し、完成したEAも読者に無料一般配布されています。
本日私にも、魔法使いさんから同EAをメールにていただきました
魔法使いさん、EA配布ありがとうございます m(_ _)m
5/5の現在も「二回目の募集」で配布中の魔法使いさんブログはこちらからURL



...........
///////
話は変わって
FX情報ブログに、FXミリオネアを夢見る日記URLがあります。
すでに、2000年中頃から続く老舗ブログです。

著者のcarriebbさんは無料メルマガを約5年弱継続して発行されています。
登録はこちらからURL

今回のメルマガで素敵な音楽が紹介されていたので、当ブログでも紹介させていただきます。
carriebbさんありがとうございました。

最近のコメント
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
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。