2016年6月30日木曜日

fx-onのメールにAMSERがのりました♪

FX-ONからのパートナーメルマガにAMSERが載っていました♪
メールのタイトルは
「partner:まだ誰も購入していない注目EAは、2ヶ月後どうなった?」
何気なく読んでいると



うわ!!「WhiteBearZ」や「一本勝ち」と並んでいます!!

衝撃です!うれしいです!

Tera様 ありがとうございます!

EA 配色君 あなたのEAはチャートの色をあなた色に染めれますか?

あなたのチャートの色は何色ですか?
私は青バックの赤白カギが一番好きですが、
夏には夏色、秋には秋色と結構気まぐれです。

暇さえあればプロパティから色をいじっております。

ふと気になることがありました。
チャートの色や背景色はEAでコントロールできないのでしょうか?

取引はVPSがしていますので家PCは裁量専門です。

EAでチャートの色がコントロールできれば
日本時間は赤、白(国旗の色)、ロンドン時間は青、赤、白(国旗の色)、アメリカ時間は赤、白、青(国旗の色)と色を変えれば使いやすいのではないでしょうか・・・あれ?おんなじ色だ・・・

もしくはシグナルによって色が変わったりするのも面白いかもしれません。

そこでEA 配色君
デフォルトでは5秒ごとに色が変わります。
設定で時間は変更できます
OnTick()を使わずOnTimerを使用しました。
つかってみて気が付いたのですが、OnTimerは精度が悪すぎます。
10%以上は無視されますw
エントリーにはむきませんね

色を変えるのは
ChartSetInteger( A , B , C);です。
Aはチャート番号 現在のチャートの場合は0
Bはどこの色を変えるか21背景色、22前景色・・・・ ENUMされています
CHART_COLOR~を探してみましょう
Cは色です いろもENUMされているのでclr~で探してみましょう
0X000000 でも clrBlack でも 0 でも大丈夫です

#property strict
int i,d,X[9],C;
extern int T=5;//色変更時間(秒)
void OnInit(){d=EventSetTimer(T);}
void OnDeinit(const int reason){EventKillTimer();}
void OnTimer(){
C++;if(C>2){C=0;
X[0]=clrWhite;//0CHART_COLOR_BACKGROUND   背景色
X[1]=clrBlack;//1CHART_COLOR_FOREGROUND   前景色
X[2]=0x808080;//2CHART_COLOR_GRID         グリッド
X[3]=clrBlack;//3CHART_COLOR_VOLUME       ボリューム
X[4]=clrBlack;//4CHART_COLOR_CHART_UP     上昇ローソク足
X[5]=clrBlack;//5CHART_COLOR_CHART_DOWN   下降ローソク足
X[6]=clrBlack;//6CHART_COLOR_CHART_LINE   ラインチャート
X[7]=clrWhite;//7CHART_COLOR_CANDLE_BULL  上昇バー
X[8]=clrBlack;//8CHART_COLOR_CANDLE_BEAR  下降バー
}
if(C==1){
X[0]=clrRoyalBlue;
X[1]=clrWhite;
X[2]=clrRed;
X[3]=clrWhite;
X[4]=clrRed;
X[5]=clrWhite;
X[6]=clrRed;
X[7]=clrRed;
X[8]=clrWhite;
}
if(C==2){
X[0]=clrPink;
X[1]=clrWhite;
X[2]=clrYellow;
X[3]=clrWhite;
X[4]=clrDeepSkyBlue;
X[5]=clrPaleGreen;
X[6]=clrWhite;
X[7]=clrDeepSkyBlue;
X[8]=clrPaleGreen;
}
for(i=0;i<9;i++){d=ChartSetInteger(0,i+21,X[i]);}
}

2016年6月29日水曜日

【EA高速化】バックテスト時間を短くしよう IFの複数条件

【EA高速化】バックテスト時間を短くしよう IFの複数条件は分けたほうがいいか?
というブログを書きました。くわしくはこちら 

if( 条件A && 条件B )

if( 条件A ){if( 条件B )

この二つのどちらが速いか検証をしました。

MT4では上の&&のケースの場合
条件Aが正しくないfalseでも条件Bを確認すると思っていました。

各ホームページでも同様の記述があります。

結果も条件Aが false の時は下(ifの二重)が速く true の時は&&のほうが早い結果でした。

トータルするとあまり時間差が無かったので&&のほうがいいと結論づけたのですが、

実は&&では条件Aがfalseの時は条件Bをパスするとの事。

ビルド600くらいから仕様が変更になったようです。

やはり&&でいいということですね♪

条件Aが圧倒的にfalseの時はifの二重がいいかもしれませんが。


【告知】FX-ON  記事掲載   〔第8回〕実は福利系EAのバックテストは補助線や定規を使うと見やすい

いよいよ記事も大詰めです。

第八回これを含めて残り三回

長い道のりでした。

EAを作っているとよく思うのですが、単利のEAは私にはあいません。

10万円をつかって毎月数千円もらっても燃えません。

まあ銀行の金利よりかははるかにいいのですが、やはりもとめるのは複利系です。

10万円が最初の月は500円、それが750円になり1000円になり

気が付けば給料を超えて仕事を辞めているというのが理想的なEAです。


今回は複利系の残高グラフの見方を紹介します。

TACAブランドで透明な定規を売り出したら売れるでしょうか???





使えるねっと 半額キャンペーン終了間近!!! ~6/30   

一宿一飯の恩義に報いる為

最後のアナウンスをさせていただきます。

使えるねっと社の御担当者様には本当に次から次へと無理難題をお願いしてしまいました。

しかし、怒ることもなく丁寧にいつもご対応していただき本当に感謝しております。

一宿一飯どころでは無いかもしれません。


VPS試験ではOANDA社に対しては使えるねっと社(米国)が最適と結果が出ました。

VCPUとサーバーの人数制限が功を奏したのでしょうか

未試験ですがおなじエクイニクスNY4にある XMやFXCMなどなど各社に対しても速いことが予想されます。

そして、半額キャンペーンを行っているので、私もちゃっかり一年契約してしまいました♪



「半額は安い!!」

しかし、明日までです。ご関心のある方はお早めに♪




2016年6月27日月曜日

EA EdelWeiss  エーデルワイス こちらもこっそりキャンペーン!


エーデルワイスはアルプスの高原に咲く白い花

険しい大自然の中で生き抜く姿はシステムトレーダーたちの生き様のようです

以前よりボリンジャーバンドの探求を行っていました

ボリンジャーバンドの最終的結論、過酷な環境を生き抜くシステムトレーダの到着すべき点

それがこのエーデルワイスです!

極秘の未発売EAリンクはこちらです。


本日よりフロントテストに入りました。

西方にある島国のおかげでUSDJPYのスプレッドが6で固まっているために、

まだ動かないと思いますが・・・

2~4週間でテスト終了利益が出れば販売開始です。

そしてこちらもこっそりキャンペーンです。

フロントテストで利益がでるまで10%単位で値段を調整します。

発売開始1万円 
最高の利益が10%を超えたら2万円・・・・90%を超えたら10万円です。

もしかするとフロントテスト開始時には10%を超えているかもしれませんが・・・
















2016年6月24日金曜日

新作 ALCHEMY FX-ONでテスト開始!!こっそりディスカウント!

BREXITいかがでしたでしょうか?BREXIT は Britein + Exit の造語ですが、EXITを予言するような単語ですね。
知人に負けていないかLINEで聞いたところ「あかん」の一言しか返信がありません・・・

月曜日の窓と電車の運行状況が気になるところです。


わたしはチキンですので全EAを停止していたのですが、フロントテスト中のAMSERは頑張っていたようです♪
ちょうど二カ月で12カ月実現損益なんと一位になりました♪

御購入者様は現在5名 価格設定に難があるようですが、私を信じて購入して下さった方がいますので値下げはしません!!



最近うれしくて仕方がないのでAMSERネタばかりですみませんmm


そこで!!!
次作ALCHEMY(錬金術)

(近日発売予定たぶん再来週)
発売記念ディスカウント実績が出るまで半額25,000円キャンペーンをします。

※実績が出たかどうかは私の独断と偏見で決めます♪


記事 + アフィリエート + EAが売れたお金を活用して作りたいブログがあります!

すこしお金儲けに走っていますがご容赦ください!
ジャッジの公平性は守ります。










2016年6月23日木曜日

【告知】FX-ON  記事掲載   〔第7回〕残高レポートはこう見る!2タイプから読み解くEAの運用

今日はBIGイベントが二つ!!
ひとつはBREXIT 英国欧州共同体離脱国民投票 です。
北欧でトラブルがあったようで世界中のネットが重いようですが大丈夫でしょうか・・・

そしてもう一つは記事を投稿しました。

すこし前回との間隔が短いのですが、頑張って書いているという事でご容赦ください♪

私は自作派ですが、アイデアが浮かばない時にいろいろなEAのバックテストを狂ったように見る時があります。

はじめにチャートを見て、結構な数を除外します。

そんなチャートの見方を6,7,8回は書いています。



是非ご覧ください!!







そして最近AMSERが好調です。
今日でフロントテスト開始からちょうど二カ月ですが
135%の利益です。このペースが続けば年利7000%ですが、どうでしょうか?


BREXITが終われば新しいEAを出品します。
この1-5までを独占したいものですね!!

2016年6月21日火曜日

【告知】FX-ON  記事掲載   〔第6回〕資金を守る!ストラテジーレポートの傾向と対策

FX-ONに次の記事を出しました。

6,7,8回は典型的な残高グラフを紹介します。

残高グラフを探したのですがいいものがなかなか見つからず、
過去に作ったEAをテストし続けました。
なかなかいいのが見つからず、結局はEAを作成しました。

是非ご覧ください!!


そして、写真は私ではありません
自称:もうすこし男前です♪

2016年6月20日月曜日

サーバー試験 結果発表!!!

集計しました!!

いよいよ結果発表です!!!

その前にお詫びが二つ!!

ひとつ目は使えるねっとのご担当者様へ
ネットの接続エラーが出るとメールでクレームを入れたのですが、エラーが出るのは週末の市場クローズ時間でした。大変申し訳ございませんでした。
いま書きながら赤面しています・・・

しかし、結果は公平に行かせていただきます!!

そしてもう一つは皆様に順位あてクイズをしていましたが、
何の順位か決めてませんでした。収益、誤差時間?
ごめんなさい。

まずは10万円スタートの三日弱の収益結果です。

第五位
使えるねっとUS プラチナ  13,064円

第四位
使えるねっとUS ゴールド  13,110円

第三位
BEEKS                           13,204円

第二位
お名前.COM                    13,272円

そして第一位は

使えるねっとUS シルバー
                                        23,559円!!

日利5% みなみの帝王を越えました♪(たまたまですがw)

そして次は個別に見て行きたいと思います。
赤色は他と違ったところです。


お名前.COM(日本)
時間ずれ 6か所
金額ずれ 10か所

日本からNYのハンディがあります。
一番ずれが多かった割に結果はなぜかよく稼いでいます。
しかし長期になるとこのずれの積み重ねが莫大な損失になりそうです。

BEEKS
時間ずれは0 
流石同じ建屋と言うだけのことがあります。
価格のずれは4か所
時間が秒単位でしか見れないのでどちらが正しいかはわからないのですが
よく見ると価格のずれているところがお名前.COMと似ています。
しかも二か所は金額も同じ・・・
VPSの処理時間が遅いという事なのでしょうか??

唯一、市場オープン時間中に接続エラーがありました。




使えるねっとUS シルバー
収益は一番だったのですが、
20分以上のクローズの大きなずれがありました。
しかしそれが、大きく収益に貢献しました。



使えるねっとUS ゴールド
送信テストでは遅かったのですが、
時間ずれは一回一秒 価格のずれも軽微です。



使えるねっとUS プラチナ
流石です。
ずれ0 100点です!!
収益は最低でしたがこれこそ求める姿ではないでしょうか!!!


結論ですがわたしは使えるねっとに乗り換えようと思います。
①PING(通信時間)はBEEKSが速かったが応答のトータル時間(VPS処理時間+通信時間+MT4サーバー処理時間)は使えるねっとUSが速かった。
②VCPUがシルバープランでも8個使える。
③他サーバーはMT4一枚で500MB程度使用するが使えるネットは200MB
(推奨はMT4一枚ですが15枚はいけそうな気がします)
④OANDA BEEKS BRONZE 3,210円/月
 使えるネットUS プラチナ キャンペーン(6/30まで)一年契約 3,000円/月
⑤サポートが日本語

FX専用 米国設置VPSキャンペーン!
サーバーを貸してくださいました使えるねっとのご担当者様には心から御礼申し上げます。
あれやこれや無理難題、誤解を押し付けてしまった事深くお詫びいたします。

無料期間中のお名前.COM、そしてBEEKS社もありがとうございました。



あれ?なにか重大なことを忘れているような・・・・・




そうそう、タイトルは「結果発表!!」でした!!!!!




EA SUNNYの当選者を決めなければなりません!




順番はよくわからなくなったので、一位に使えるねっとのどれかのコースを書いてくださった方全員とします。

当選者(たぶん全員)はこちらにメールをください。

「EA SUNNY当選!」とコメントの名前(コードネーム?)そして最近あった面白かったことを書いてください!




そして、怒られてはいませんがかなり反省しています・・・
















2016年6月17日金曜日

サーバー試験 EA SpeedTest 中間試験発表!!

以前作成して皆様にご協力いただきましたEASpeedTestでいま測定中の5VPSを測定しました。

あの時の皆様のご協力のおかげでサーバー試験までたどり着けました。
ありがとうございます!!

さて、その前にちょいと報告を!
私の作ったAMSERが実現損益1,3ヵ月で一位となりましたw
英国欧州共同体離脱でごちゃごちゃになる前に一位になれたのは本当にうれしいですね♪

ポンドが落ち着いたらまた何作か販売してみようと考えています。
SUNNY(仮称)、MOON(仮称)、OMOMOM(開発中)、est(開発中Highestの改良)、Hustler1958BRICs(開発中)
この辺を考えているのですが、これが売り出されると、実現損益は
SUNNY,MOON,AMSER、OMOMOM,Hustler1958BRICs,estの順になると思います。
と厚かましい妄想をしていますが首題に戻ります。


EA SPEED TEST 結果発表です
途中ですが予想の参考になればと思います。

第五位

お名前.COM(日本)
290,586
日本からNYまでの物理的距離があるので仕方ないところですね。
機会があれば お名前.COM(US)で試してみたいところです。




第四位

使えるネット ゴールド
114,809
原因不明ですがゴールドはシルバーやプラチナに比べると動作も少し重い気がします。
同居人に酷使する人でもいるのでしょうか



第三位

BEEKS
77,188
ある程度までPINGの時間が短くなればあとはCPUの影響なのでしょうか




第二位

使えるネット シルバー
69,018
これはだいすけ様のご報告と同様の結果です。




第一位

使えるネット プラチナ
65,533
まぁ、そらそうでしょうw
しかし、CPUが同条件でもメモリーが多いプラチナのほうが速いのですね。
メモリーをたくさん使うと同じサーバーに同居できる人間が減るということなのでしょうか




総評
使えるゴールド以外は想定のままです。
同居人による使用量が個別のサーバーのスピードに影響を与えるのでしょうか
そう考えると長期のプランは申し込み辛いところですね。

一年コースで申し込み、重い時は同じコースのままサーバーを
変更してもらうことはできるのでしょうか?



さて、週明けもしくは火、水にはテスト結果を発表したいと思います。

発表直前までは何度でも予想変更可能ですよ!









2016年6月16日木曜日

EA OMOMOM ボーダー理論 ※ソース詳細付き♪ これはいい~♪

USDJPYが105円を切りました。

節目のボーダーを超えると一気に伸びることがよくあります。

切りのいいところでSLやTPを入れるのは人の心

では、価格の節目を超えたところでエントリーすればいいのではないでしょうか

USDJPYの円単位が変わった時にエントリーします。
※通貨ペア縛りはありませんが5桁ペアはほとんど動かないと思います。

期間は2005-2015の10年 取引数は1,762 勝率は57.32%
平均勝トレード27.63 敗トレード-7.29

総取引数が少ないのは難点ですが実に優秀です!!!(自己満足w)

ソースコードになんとなく解説を入れています。
参考になればいいのですが・・・

#property copyright "Copyright 2016/6/16,TACA"
#property link      "http://mt4kyoto.blogspot.jp/"
input int MAGIC=1;//マジックナンバー シャンデリアストップで決済するので本当は不要
input int TS=10;//シャンデリアストップの幅
input double Lots=0.01;//ロット数
double S,T,O,P,N;//S:StopLoss T:エントリー価格 O:ひとつ前のエントリー価格 P:Point N:double Close[0]
int C,D,I;//C:int Close[0] D:ダミー I:ループ用BASICの時代からなぜかIを使う
void OnInit(){C=Close[0];P=Point;}//初期設定 int CにClos[0]を入れると整数だけ入るex106.541をint Cに入れるとCは106になる。
void OnTick(){N=Close[0];//ティックが動くたびにdouble NにClose[0]をいれる106.541までしっかり入る
if(OrdersTotal()==0){//ポジションを持っていない確認
if(C+1<N){C=N;E(0);}//現在の価格が基準ラインを超えるとエントリーCが106の場合107を超えるとLONG Cを107に更新
if(C-1>N){C=N;E(1);}//逆もまたしかり
}//10行目ポジション確認の閉じカッコ
else{TS();}//ポジションを持ってるときはシャンデリアストップする。
}//OnTickの閉じカッコ
void E(int B){if(B){T=N;S=T+TS*P;}else{T=Ask;S=T-TS*P;}//エントリー,E(0)はLong,E(1)はShort
D=OrderSend("",B,Lots,T,0,S,0,"",MAGIC,0,0);}//発注
void TS(){D=OrderSelect(0,0);//シャンデリア関数オーダーを選んで
if(OrderType()){if(T>N){T=N;S=T+TS*P;}}else{if(T<N){T=N;S=T-TS*P;}}//Long,Shortにあわせて価格の移動を確認し定数設定
if(T!=O){O=T;D=OrderModify(OrderTicket(),OrderOpenPrice(),S,0,0,0);}}//SLを変更





サーバー試験 CPUについて 

昨日はサーバー試験用のEAを何回か取り替えました。
取引回数が多いほうがデーターの信用性が増すと思ったのですが、
なかなか取引をしないEAを待ちきれない子供のようでした。
@反省 I must consider my sins


EAが動き出しました。
昨夜のFOMCの影響か面白いようにずれています。
どれがどのVPSかはまだ秘密です。





そして気になることが、PingはやはりBeeksが速いようです。
OANDAと同じサーバー会社の同じ建屋のBeeksと
NYから40km以内の使えるネットの違いかと思います。

MT4サーバーは同じOANDAです。
VPSの速さの違いが使えるネットの速さの秘密なのでしょうか。
速さの要はCPUです。
そこでタスクマネージャをみてみる事にしました。









左からBEEKS お名前.COM 使えるネットです(シルバー)

BEEKSと名前.COMのCPU(VCPUかな?)はひとつですが、

使えるネットは8個出ています♪

これが速さの秘密のような気がします。
CPUについての記述をみてみます。

お名前.COM FXプランではCPUの記述がありません。
メモリーを増やすとCPUは増えるのか増えないのかわかりません。
FXプラン以外では増える記述がありました。見つけらなかっただけかもしれません。



 BEEKSのプラン
プランごとにVCPUは増えています。しかし値段は高いです。自信の表れというところでしょうか


使えるねっとです
CPUはフェアシェア・・・ お世話になっているので言いにくいのですが、もっと強調すべきポイントと思います。
そして、ここから半額は素敵ですねw



CPU(VCPU)に関しては
使えるネット    プランにかかわらず8個
お名前.COM 記述がありません。1GBは1個です。
Beeks              プランによって1,2,4個


今のところ日本語サポート、半額キャンペーン、CPU8個と考えると 使えるネットのゴールド1年に気持ちが向いています。

なお、スピード順位予想は発表までいつでも何回でも変更可能ですよw




追記)なぜ使えるネットのメモリー使用量は200MBなのか不思議です。
起動時間の長さでしょうか?土日に同時に再起動してチェックしたいと思います。














2016年6月15日水曜日

EA MARTIN ナンピン無しの固定ロットマーチンゲール

ルーレットで赤黒に倍々と掛けていくのはマーチンゲール法です。
この場合ナンピンの手法は使われておりません。

FXで損失が出た時に2倍ロットを追加するのはナンピン+マーチンゲール法です。

マーチンゲールを標榜するほぼ100%のEAはこのナンピン+マーチンゲールの手法を取っています。
ナンピン+マーチンゲールの手法の欠点としてエントリーロットが加速度的に増えていくことです。
いつの日にか破たんすると口をそろえてみんな言います。

しかし、ナンピンもマーチンゲールも素晴らしい手法と私は思っています。

そこで今回は固定ロットのマーチンゲールです。

初めにストップロス、テイクプロフィットともに1PIPSでエントリーします。
負けたらストップロス、テイクプロフィット共に2PIPSで再エントリー
勝った時は1PIPSに戻し、負けた時は幅を倍々に増やしていきます。

必要なロットは常に固定で決済幅によってマーチンゲールをします。

ナンピン+マーチンゲールでは負け続けるとエントリーできなくなるか、破たんしますが
このシステムの場合連敗しても決済までの時間がかかるだけで被害は劇的に抑えることができます。



三年ほどのバックテストです。実際の残高グラフは見たことのない曲線を描きます。
ここに、Vシステムとシャンデリアストップを載せてみたいところですね。


#property copyright "Copyright 2016/6/15,TACA",version "1.0"
input int MAGIC=7;
input int MAPeriod=16;
input int SLTP=90;
int Count=1,D,Ticket,Ty,E;bool Flag;double EC,SL,TP;
void OnTick()
{if(OrdersTotal()==0)
{if(Flag){Flag=False;D=OrderSelect(Ticket,SELECT_BY_TICKET);
if(Ty==0){if(OrderOpenPrice()<OrderClosePrice()){Count=1;}else{Count*=2;}}
if(Ty==1){if(OrderOpenPrice()>OrderClosePrice()){Count=1;}else{Count*=2;}}}
if(iMA("",0,MAPeriod,0,0,0,1)>Close[1]){E(1);}else{E(0);}}}
void E(int T){Ty=T;
if(T){EC=Bid;SL=EC+Count*SLTP*Point;TP=EC-Count*SLTP*Point;}
else {EC=Ask;SL=EC-Count*SLTP*Point;TP=EC+Count*SLTP*Point;}
Ticket=OrderSend("",T,0.01,EC,0,SL,TP,"",MAGIC,0,0);Flag=True;}





サーバー試験 EA変更とPING

サーバー試験ですがEAをSUNNYから◎×▲◇に変更します。

SUNNYは一日の取引量が平均3回程度ですが、◎×▲◇は5回あるというのが理由です。

順位あての懸賞はSUNNYです!
(SUNNYはFX-ONの実現損益1位を取るために開発したEAで、取れるEAです。)

さて、すきを見てPINGを測定しました。
5回やったベストを取っています。

BEEKS(NY4)    1    TTL:123
使えるシルバー    2   TTL:115
使えるゴールド  2-3   TTL:115
使えるプラチナ  2-3   TTL:115
お名前東京  162-168 TTL:107

お名前は東京を使っているので遅いのは仕方ないところです。
他は以前だいすけ様に教えていただいた時と同じような結果ですね。





すこし意味深にEA名を伏せてみました( ̄ー ̄)ニヤリ



イギリス EU離脱総選挙 ゼロカットバスター!!

23日はイギリスのEU離脱国民投票です。

EU離脱の話が出てからGBPは下がりっぱなしです。
23日までにすべてのポジションを引き上げるのが正解でしょう。

スイスショックの時には急激な変動でストップロスも効かず破産した人もかなりいたようです。
また、FX会社自体が倒産してポジション強制清算などもあったことは記憶に新しいところかと思います。

Bidが下がっているのにAskが上がるという摩訶不思議な現象もみられました。

しかし、これはチャンスかもしれません!!!

海外ではよくあるのですがゼロカット保証 追証なしを謳っているブローカーがあります。
例えばAXIORY社ゼロカット保証を約束しています。
LAND-FXやXMもゼロカットとの情報がありますが公式HPでは見つけられませんでいた。
※もう少しよく読めば出てくるかもしれません・・・

レバレッジ上限400ですから10万程度捨てるつもりでどちらかにベットすれば
負けても10万の損失 1円勝てば26万円 5円勝てば130万円スイスショックと同じ規模であれば1,600万円←あってるかなw

上下セットすれば♪

妄想が膨らみます^^

なお実際はどうなるかわかりませんので自己責任でお願いします



EA SUNNY

使えるネット サーバー試験で使用するEA SUNNYです。

わたしも実運用しているものなのですが概要だけ紹介させていただきます。
1分足で細かく取引するEAはバックテストで驚異的な数字を出すにも関わらず、フロントテストでは数字が出ないことがあります。
調べてみるとVPSからMT4サーバーまでの遅延の結果でした。
遅延を無くすにはより高速なVPSを選ぶこととEA自体を高速化することです。

このSUNNYは徹底した高速化を図り実運用でも数字が出せるEAとなりました。

EURJPYスプレッド7でのバックテストです。年間で1080%の利益を出しています。



続いて、過酷試験です。(単位は0.1Pips)
一週間程度の試験で遅延を見たところ平均1.5程度の加算が適切と考えています。
かなり過酷めにスプレッド7+過酷評価4の11で試験をしました。
こちらでも、年利530%程度出ています。

総取引数約1,000 × 4ですので8万円程度の減と思ったのですが、複利は恐ろしいですね。 
55万円減っています・・・

使えるネット サーバー試験 では順位あてクイズをやっています。

懸賞はこのEA SUNNYとなっていますのでご興味のある方は応募をよろしくお願い致します!!

2016年6月14日火曜日

使えるネット サーバー試験開始!! 

既述なのですが先日BEEKS社のVPSを契約し浮かれていたところ、
使えるネットはもっと速いよと教えていただいたのです。

同じ建屋より速いなんてことがあるのだろうかと驚きの瞬間でした。

使えるネット社に問い合わせてみました。なぜ速いのですか?サーバーはどこですか?
しかし使ってもいないのに質問ばかり、考えてみたら失礼な話です。
ところが、使えるネット社の担当様から驚愕の申し出がありました。

試しに少しつかってみますか?

大変驚きました!正直うれしかったです。
そして、ついお願いしてしまったのが、「ブロンズ、ゴールド、プラチナ3つ貸してください!

自らの厚かましさに恐怖しました。

しかし、即日OKの返事がそしてサーバーの試験を開始です。

使えるネット(US)ブロンズ、ゴールド、プラチナ、BEEKS(NY4) お名前.COM(日本) 

開発中のEA SUNNY 10万円スタートです。ブローカーはOANDA 金曜のNYクローズで区切りたいともいます。

どこが一番早いでしょうか?

そして、コース差はあるのでしょうか?

さらに、この話を書いて怒られないでしょうか?

予想をコメント欄にお書きください。
一位~五位までの順番と「怒られるor怒られない」です。

ドンピシャの方にはEA SUNNYをプレゼントします。
ド本命の①プラチナ②ゴールド③ブロンズシルバー④BEEKS⑤お名前そして「怒られる」は無しとしますw



そして、ご担当者様には恩返しをしなくてはなりません。

右上に使えるネット様のリンクを張らせていただきました。
使えるネットに申し込まれる方はこちらからお願いします。

6末までキャンペーンで半額のようです。
毎月払いにすると、初めの一月が半額
一年分先払いにすると、一年分半額との事です。


因みにリンクはアフィリエートになっております。
私にも2,000円?くらい入るそうです。


【告知】FX-ON 記事五回目掲載!!  ↑記事のリンクを付けました↑

FX-ONの記事は折り返し地点五回目です。                                             
                                                      
ブログの上に動くリンクを付けてみました。 

本当は写真入りのかっこいいやつをFX-ONの担当者様が作ってくださったのですが、
CPUに負荷がかかるので、文字だけにしました。
担当者様、それから作成者様 ごめんなさい。

さて、今回はメンタル面からみてみました。
バックテストは半年、一年単位で実施するけれども実運用は一週間であきらめる。
そんな人は結構多い気がします。
ストラテラジーテスターレポートから未来のイメージを持ち、心構えをして挑もうと行った話です。

是非ご一読下さい!!







2016年6月13日月曜日

スピードテスト結果 BEEKS vs お名前.COM 日本

ボランティアでお願いしておりました、データーをご提供いただきました皆様
本当にありがとうございます。
たくさんデーターを頂いたのですが、ほとんどの方がお名前.COM(国内サーバー) OANDAをお使いだったのが衝撃でした。

OANDAへの時間で見ますと
使えるネット > BEEKS Bronze >> お名前.COM USサーバー >>> お名前.COM日本
       56ms                    69ms                                           100ms                  207-550ms


お名前.COM日本はメモリーが2Gで207msが最速でした。
1Gでは230-550ms幅があります・・・  

速さ=VPSの処理時間+送受信時間+MT4サーバーの時間です。

だいすけ様からの情報ですが送受信時間はPingで計測できます。
MT4サーバーは今回はOANDAに的を絞りましたので同じかと思います。
VPSの処理時間はEAを高速化することで多少は速くできます。

PingはBeeksが速かったのですが合計時間は使えるネットが速いという逆転現象が起こりました。使えるネットのVPS処理時間が短いという事かと思います。





BEEKS(計測 69ms)とお名前.COM(計測 292ms)の同じEAでのテストです。
30取引ありました。
両VPS共に欠けがありません。
時間が遅れたところ、価格が不利にずれたところが赤色です。

時間に関しては100%BEEKSが速いという結果です。
エントリーで6秒、クローズで10秒遅れています。一回約0.5秒の遅れです。
秒以下は表示されてないのでわかりませんが同じ秒で価格が違うのはコンマ何秒の遅れと思われます。

価格は速ければ絶対いいという事ではないようですが
エントリーでBEEKSは0.5Pipsお名前は3.0Pips クローズはBEEKS無し、お名前2.0PipS損をしています。
0.15Pips/取引損している計算です。
200ms違うとこれだけ違うのですね。

1Lots x 1取引で 150円!
非常に大きな取引コストです。

今回はBEEKSで比較しました。
使えるネットも期待できそうですね。



2016年6月12日日曜日

複数通貨ペア、期間のバックテストの自動化3

複数条件の複数バックテストを自動で行う事を模索していましたが、
MT4のスプレッドが変更できないとこで頓挫しました。

隠しコマンドでスプレッドを指定しても、画面のスプレッドは変更されるのにレポート上は変更されていないという難題です。

半日かかってやり方を見つけました。
①オフラインにします
②数字がたくさんあるフォルダーのconfigフォルダーにあるterminal.iniのSpreadを0以外に変更
設定用のtxtファイルにTestSpread=7と入れると7に変更できます。


terminal.iniの変更が面倒な時にはMT4を起動しスプレッドを現在値以外に変えてMT4をシャットダウンするとterminal.iniも変更されています。0は現在値と言う意味のようですね。

隠しコマンドTestSpreadはすべてのtxtファイルに入れる必要があります。
ひとつでも抜けるとそれ以降は現在値になってしまいます。


私の様にEAを作成するたびに同じ期間でバックテストをする場合には、
一度作ればいいのですが条件が変わるたびにファイルを作るのが面倒ですね。
条件を入れてボタンを押せば自動でtxtファイルとバッチファイルを作成し、
バッチファイルを起動するとtxtを消すようにVBあたりで作成するのもいいかもしれませんね。

たくさん要望があればつくろうかなw

VISUAL BASIC 6 紛失しました。
先日廃棄したXPのPCには入っていたのですが・・・・・

VB6発見!! むかしDJらしからぬことをしていた時のCDが何百枚かあるのですが、その中から出てきました!! たくさんのご要望と時間があれば作成してみます。





2016年6月11日土曜日

EA Highest 過去一定期間の最高値ボーダー超過エントリー

東京市場に比べロンドン市場は取引量が非常に多くなります。
ロンドン時間には東京の高値が一つのボーダーになると聞いたことがありました。
オリンピック以降は経済の流れが変わりその傾向が顕在化したそうです。
東京の高値を超えたらショートエントリーというEAを作ったのですが全くダメでした。

そんな話しは全く忘れていたある日、EAを紹介してもらいました。
一定期間の高値を超える、もしくは安値を下回るとエントリー。
勝率が非常に高く、稼いでくれる素晴らしいEAでした。
あえて欠点を上げるとすると取引回数が少ないことくらいです。

取引回数を増やすために自分でも作ってみました。
一定期間を極端に短くし、エントリーはLONGのみです。
大きめの幅のシャンデリアを付けたのも特徴てす。


結果はよさそうです♪

作っていて気になったのは
同様のShortエントリーはなぜか利益が出ない。

LONG&SHORT両方にすると純益は下がり、
ボラティリティが高いと儲かり低いと損失が出る。

クローズ時間は14時以降(GMT+3)は確実に利益が出るが、
エントリー時間別の損益の傾向にはばらつきがある。

スプレッドを上げても耐久性がある。
いかがでしょうか?


#property copyright "Copyright 2016/6/7,TACA",
#property link "http://mt4kyoto.blogspot.jp/"
double i,d,T,S,C,P,O;
extern double TS=200,MaxSpread=5,Lots=0.01;
void OnTick(){C=Bid;P=TS*Point;O=OrdersTotal();
if(T<C){T=Ask;S=T-P;
for(i=O-1;i>=0;i--){d=OrderSelect(i,0);d=OrderModify(OrderTicket(),OrderOpenPrice(),S,0,0,0);}}
if(MarketInfo("",13)<=MaxSpread){if(O==0){
if(High[iHighest("",0,2,12,1)]<C){T=Ask;d=OrderSend("",0,Lots,T,5,T-P,0,"",1,0,0);}}}}





複数通貨ペア、期間のバックテストの自動化2

前回はtxtファイルを作成しドラッグアンドドロップで起動、終了ができました。

今回は1.txtをこんな内容にしました。

  TestExpert=a
  TestSymbol=EURUSD-a01
  TestPeriod=M5
  TestModel=0
  TestSpread=5
  TestRecalculate=false
  TestOptimization=false
  TestDateEnable=true
  TestFromDate=2010.01.01
  TestToDate=2010.06.30
  TestReport=a2010010120100630
  TestReplaceReport=false
  TestShutdownTerminal=true


EA名をaにしました。テストしたいEA名をaにすれば変更する必要はありません。
setファイルの行は削除
TestSpread(隠しコマンド)を5に設定 設定をしないと現在値になるのですが土日はスプレッドが高くなっていますので変更します。
TestReportをEA名+開始日+終了日に変更

これを2010.01.01から2016.06.30まで半年ずつ13個作成しました。
面倒ですが一回行えばOKですのでw

そしてバッチファイルを作成します。
適当な場所にtxtファイルを作成してください。
拡張子を.batに変更します。
私の場合start.batです。

中身は(少し伏字)

"C:\Program Files (x86)\OANDA - MetaTrader\terminal.exe" "C:\Users\USERNAME\AppData\Roaming\MetaQuotes\Terminal\123456789abcdef0123456789abcdef0\tester\1.txt"


"C:\Program Files (x86)\OANDA - MetaTrader\terminal.exe" "C:\Users\USERNAME\AppData\Roaming\MetaQuotes\Terminal\123456789abcdef0123456789abcdef0\tester\2.txt"


初めの"~~~exe"は起動するプログラムを次の"~~~.txt"はオプションです。
Terminal.exeに1.txtをドラッグしたのと同じになります。

次は同様に2.txtです。

start.batをwクリックすると黒いコマンドプロンプト画面が出てきます。
上の文字が出てきてしばらくするとMT4が起動しバックテストをして閉じます。
しばらくするとまたMT4が起動しバックテストをして閉じます。
もう少しすると黒い画面も消えます。

そして数字がいっぱいのフォルダーに二個ファイルができています。
バックテストの結果です。これを13個作れば完成ですね。

しかし!!ここで問題発生です。
先程の隠しコマンドTestSpreadをつかうと画面上はスプレッドが変わりますが、
テスト結果には反映されていません。
Spreadが高い時は発注しないEAですと全く動きがありません。
今日は土曜日ですから・・・・

MT5フォーラムを見ると最近のビルドはこのコマンドが壊れているとの事です。
平日しか使えません。平日でもスプレッドが変わるタイミングでスタートしたテストは結果がおかしくなります。

う~ん 直るまで御預けのようです。頑張って勉強したのですが・・・





複数通貨ペア、期間のバックテストの自動化 

複数通貨ペアや複数期間でバックテストをすることがあります。

終わるのを待って、通貨ペアを変えて、また実行という流れですが、30分待って通貨ペアを変えてでは非常に時間がかかってしまいます。
そこで、自動で次々とバックテストを繰り返させる方法を模索します。
MT4を立ち上げキーボード左上の「F1」を押してHELPを出してください。


「Tools」の「起動時の構成」をご覧ください。

クライアントターミナルでは、起動時の設定をあらかじめ決めておくことができます。そのために、構成ファイル名がパラメータとして、クライアントターミナルに渡されます。
例 :
  terminal.exe config\start.ini
  terminal.exe test1.txt
  terminal.exe "C:\Program Files\MetaTrader 4\config\settings25.ini"
こんなことが書かれています。
要約すると、設定ファイルを作成し、MT4のアイコンにドラッグ & ドロップするとオプション設定ができるという事のようです。

一番下まで進むとテスターの起動設定と言うところがあります。
そこで実験です。
EA200を使います。ファイル名が200で簡単という理由です!

数字がたくさん並んでいるフォルダーの下の「tester」フォルダーの中で
右クリック ⇒ 新規作成(x) ⇒ テキストドキュメント
今回はファイル名をtest.txtにしています

こんなものを作りました。↓


  TestExpert=200
  TestExpertParameters=200.set
  TestSymbol=USDJPY-a01
  TestPeriod=M1
  TestModel=0
  TestRecalculate=false
  TestOptimization=false
  TestDateEnable=true
  TestFromDate=2015.01.01
  TestToDate=2015.12.31
  TestReport=200
  TestReplaceReport=false
  TestShutdownTerminal=false

上から見て行きます
ファイル名                     200
設定                             200.set バックテスト画面の設定保存で作れます。
通貨ペア                     USDJPY-a01
期間                        M1
モデル                          0:全ティック 1:コントロールポイント 2:始値
再計算モード                 false 何のことかわかりません
最適化モード         false今回は最適化をしないのでfalse
期間設定           true 期間設定するか?もちろんしますtrue
開始期間           yyyy.mm.dd
終了期間           yyyy.mm.dd
レポートのファイル名    200
レポートの上書き      false 上書きせずに1,2,3などを付けて保存します。
終了時MT4シャットダウン false
 
MT4が動作していない状態でMT4のショートカットアイコンの上にこのtest.txtをドラッグ&ドロップします。
MT4が起動し自動的にバックテスト開始!!

終了時に一つ上の数字がたくさん並んでいるフォルダーに200.htmlができています。
同じことをもう一回すると、200[1].htmができます。レポートの上書きがfalseだからですね。

最終行もtrueにしたほうがよさそうです。

詳しくはヘルプのテスターの起動設定を見て下さい。

【EA高速化】バックテスト時間を短くしよう 注釈はいるのか!

当ブログ「MT4 KYOTO」はタイトルどおりMT4探求のブログであると共に京都探求のブログでもあります!!

今日は下鴨神社で「蛍のお茶会」と「紅の森納涼市」が開催されます。
上賀茂神社(かみがも)と下鴨神社(しもがも)があります。
上下セットのようですが漢字が違います。
そして川の名前も下鴨神社より上は賀茂川、下は鴨川です。

本題の京都をしっかり探求したところで、副題のMT4です。
わたしがMT4をはじめたのはやはりスピードです。
裁量で相場に合わせて手入力でTP/SLの入力には限界があります。
それをコンピュータにやらせたいという事です。

しかしながらMQL4のソースコードを見ていると、見た人が解りやすくと注釈が入っています。
ありがたい限りです。
しかしながら注釈が速度低下につながるのでしたら問題です。
検証です。

//rem1
void OnTick(){int t=GetMicrosecondCount();
for(int i=0;i<1000000;i++)
    {  
 
    }    
Comment(GetMicrosecondCount()-t);}

//rem2
void OnTick(){int t=GetMicrosecondCount();
for(int i=0;i<1000000;i++)
    {  
    //**********************************************************************************************:
    }    
Comment(GetMicrosecondCount()-t);}




やはりrem1注釈なしのほうが速いようです。
観察していますと5回に1回ほど逆転します
コンパイル時に注釈は消されると思うのですが、
空白扱いにでもなるのでしょうか・・・






















泣き話)
蒸し暑くて3時に目覚めました。
寝ぼけながら「どれくらい早くなるかMT4付属のMACDsampleで検証しよう!!」と思ったのですが
一時間かけてスピード化をしました。しかしいじくりすぎました・・・
エラーです・・・ううう

REMというのはBASICの注釈の事です。
S-BASICとかHu-BASICってご存知の方・・・いないですよね

スピードテストはティックの動きが必要ですので土日はできません。
熱が冷める前にガンガンやりたいのですが無念





2016年6月10日金曜日

【EA高速化】バックテスト時間を短くしよう 定数名の長さ、文字種類の違い

定数名は短いほうが速い気がします。

プロセッサーの中では0より1のほうが時間がかかります。
Dはキャラクターコード &H44 001000101が少ない文字です。
最速変数ではないでしょうか?

①定数A
②定数Ax50
③定数Dx50

私の予想では① ③ ②の順ですがいかがでしょうか?






結果は・・・・ダメでした。計測するたびに順位が変わります。

コンパイルする時に変数名は順番に番号になると聞いたことがあります。
逆コンパイルしても変数名はわからないという話も小耳にはさんだことがあります。

そういえばマシン語はアドレスを確保して、そこに代入するのでしたね。
マシン語書いてたのって小学校くらいだったなー懐かしい・・・

という事で変数名はかっこいいのをつけてもいいみたいです。

void OnTick(){int t=GetMicrosecondCount();
for(int i=0;i<1000000;i++)
    {  
    double AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=MarketInfo("",32);
    }    
Comment(GetMicrosecondCount()-t);}

void OnTick(){int t=GetMicrosecondCount();
for(int i=0;i<1000000;i++)
    {  
    double A=MarketInfo("",32);
    }
Comment(GetMicrosecondCount()-t);}

void OnTick(){int t=GetMicrosecondCount();
for(int i=0;i<1000000;i++)
    {  
    double DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD=MarketInfo("",32);
    }
Comment(GetMicrosecondCount()-t);}

【EA高速化】バックテスト時間を短くしよう インデント不要論!

C言語にはコーディング規約なるものが存在します。
どの人が書いても同じようになり、見る人が読みやすくなる目的です。

MT4公式でもあるかもしれませんが私は見たことがありません。
3rd フォーラムではときどき見かけますが・・・

ということで、ANTIコーディング規約派です。(いまのところ・・・)

インデントを付けて見やすくすることに弊害はないのでしょうか?
MT4ではms単位での速度が要求されます。
改行や空白の影響で1マイクロ秒遅くなることはないのでしょうか?

独断と偏見で検証します。
コンパイルする時にそれくらいうまくやりそうな気もしますが・・・

void OnTick(){int t=GetMicrosecondCount();
for(int i=0;i<1000000;i++){double A=MarketInfo("",32);}
Comment(GetMicrosecondCount()-t);}

void OnTick(){int t=GetMicrosecondCount();
for(int i=0;i<1000000;i++)
    {  
    double A=MarketInfo("",32);
    }
Comment(GetMicrosecondCount()-t);}

上が ind1 下は ind2 です。

改行三つと、スペース三つを百万回、繰り返すと差がつくのでしょうかw
結果を見てみましょう!

1.2ms/100万回ほど早いですね。

不要なインデントや改行はやめましょう!!!!
圧縮されればされるほど、MT4は真価を発揮します!!!!

コーディング規約 不要派の検証でした^^;




【EA高速化】バックテスト時間を短くしよう 通貨ペア指定はSymbol() NULL "" "USDJPY-a01" どれが速いでしょうか?

通貨ペア指定は四つのうちどれが一番早いでしょうか?


Symbol()      シンボル関数 標準的なやり方。
NULL        NULLでも
""          ””ダブルコーテーション 半角二文字で短い!
"USDJPY-a01"   ←通貨ペア名指定 ※OANDAで実験しますので-a01が付いています。

私の予想ですと①”” ②NULL ③通貨ペア直接指定 ④Symbol()です。
理由ですが
Symbol()は関数呼び出しに時間がかかる
通貨ペア直接指定は指定文字を読み取り当てはめる行程がいる。
NULLは何もないから早い
NULLの中身は""と考えられる。NULLを””に変換する行程が不要

といってイメージです。いかがでしょうか?

//””
void OnTick()
  {
  int t=GetMicrosecondCount();
  for(int i=0;i<1000000;i++)
    {  
    double A=MarketInfo("",32);
    }
  Comment(GetMicrosecondCount()-t);
  }

//NULL
void OnTick()
  {
  int t=GetMicrosecondCount();
  for(int i=0;i<1000000;i++)
    {  
    double A=MarketInfo(NULL,32);
    }
  Comment(GetMicrosecondCount()-t);
  }

//Symbol()
void OnTick()
  {
  int t=GetMicrosecondCount();
  for(int i=0;i<1000000;i++)
    {  
    double A=MarketInfo(Symbol(),32);
    }
  Comment(GetMicrosecondCount()-t);
  }

//直接指定
void OnTick()
  {
  int t=GetMicrosecondCount();
  for(int i=0;i<1000000;i++)
    {  
    double A=MarketInfo("USDJPY-a01",32);
    }
  Comment(GetMicrosecondCount()-t);
  }

四つもあると見にくいですね。
インデントつけなければよかった・・・



結果発表です
こちらも見にくいので打ち直しました。
1st. Symbol1                  ""  3,114,741
2nd Symbol3         Symbol()  3,141,865
3rd Symbol2              NULL  3,141,865
4th Symbol4 "USDJPY-a01" 3,277,976

順位は安定していますが直接入力のみ2ndから4thをうろうろしています。
安定していたのは4thでしたので最下位の烙印を押しました。

””が速いのは予想的中なのですが、Symbol()が速いのは少し驚きですね。

複数通貨ペアを操るときには直接入力が必要ですが、
単一通貨ペアで縛りたいときにはOnInit で縛るのがよさそうです。





【EA高速化】バックテスト時間を短くしよう 設定条件は数字と文字のどちらが速いか!

EA高速化は気になる三点を行ったのですっきした・・・はずでした。

しかし、ソースコードを書いていると気になる点が出てきます。

double a = MarketInfo(Symbol(),MODE_MARGINREQUIRED);

double a = MarketInfo(Symbol(),32);

MODE_MARGINREQUIREDは32で代わりにすることができます。
他にもOrderSendで使われる OP_BUYは0など、文字入力と数字入力を選べるものがあります。

一体どちらが速いのでしょうか?
コンパイル時に同じ表現に変換される気もしますが・・・

//文字
void OnTick()
  {
  int t=GetMicrosecondCount();
  for(int i=0;i<1000000;i++)
    {  
    double A=MarketInfo("EURUSD-a01",MODE_MARGINREQUIRED);
    }
  Comment(GetMicrosecondCount()-t);
  }

//Number
void OnTick()
  {
  int t=GetMicrosecondCount();
  for(int i=0;i<1000000;i++)
    {  
    double A=MarketInfo("EURUSD-a01",32);
    }
  Comment(GetMicrosecondCount()-t);
  }

結果です。
百万回、回して17msほど数字のほうが早いようです。
文字じゃないとわかりにくいという方は
数字で記述してコメントを入れましょう!!
















2016年6月9日木曜日

EA200 ブログ200回記念!! 

今日は嵐山で若鮎祭り そして、明日はいよいよお稲荷さん(伏見稲荷大社)の田植祭です。
そして北野天満宮では青柏祭が執り行われます。

そんな中、MT4KYOTOはなんと200回目の掲載を迎えることができました!
読んでくださっている方、応援のメールをくださる方、情報をくださる方、皆様のご支援があって継続できたと考えております。

本当にありがとうございます!!

そこで、本日は十年間を分析し作成した究極のEA200を紹介します。

レシピ
①MT4のUSDJPYの5分足10年データをEXCELに落とす
②年を=left(a1,2)で取り出し、Close-Openを一行追加
③ピポットテーブルで縦は時間(hh:mm)横は年(yyyy)真ん中はClose-Open合計
④10年前のClose-Open × 0.9 + 9年前のClose-Open
⑤ ④の値に × 0.9 + 8年前のClose-Open これを今年まで繰り替えす。
⑥傾向が偏っている時間をピックアップ!!

④⑤で過去データのEMA的参照をしています。
ピックアップした時間にロットを持っていないと何度でもエントリーします。
エントリーしたものは可変シャンデリアストップで利益追求
通常のシャンデリアは0.1Pips動くとシャンデリアのストップロスも0.1Pips動きますが、
これは0.05Pipsです。最終行のTSC+=0.5で調整しています。

切り取りしやすいように関数を多用しました。
OnTickはわずか一行です。

マジックナンバーは記念すべきあの数字!!200です!!
1,000回目指してかんばりますので、引き続きよろしくお願いします。


#property copyright "Copyright 2016/6/9,TACA 200"
#property link      "http://mt4kyoto.blogspot.jp/"
extern int MAGIC=200;
extern double Lots=0.01;
int mode=-1,i,d;
double SL,TSL,OTSL,TSC;
void OnTick(){Mode();TS();if(mode==-1){Ex();}else if(OrdersTotal()==0){TSC=60;E(mode);}}
void Mode(){mode=-1;int t=Hour()*60+Minute();
if (t<105){mode=0;}
if ((t>=300&&t<=325)||(t>=355&&t<=390)){mode=1;}}
void Ex(){
for(i=OrdersTotal()-1;i>=0;i--)
{d=OrderSelect(i,SELECT_BY_POS);if (OrderMagicNumber()==MAGIC)
{d=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),5,clrNONE);}}}
void E(int BoS){
if(BoS==0){TSL=Ask;SL=Ask-TSC*Point;}else{TSL=Bid;SL=Bid+TSC*Point;}
d = OrderSend(Symbol(),BoS,Lots,TSL,2,SL,0,NULL,MAGIC,0,clrNONE);}
void TS(){
d=OrderSelect(0,SELECT_BY_POS);
TSC();
if(OrderType()==0)
 {if(TSL<Close[0]){TSL=Close[0];SL=TSL-TSC*Point;}}
else
 {if(TSL>Close[0]){TSL=Close[0];SL=TSL+TSC*Point;}}
if(TSL!=OTSL){OTSL=TSL;
for(i=OrdersTotal()-1;i>=0;i--){
d=OrderSelect(i,SELECT_BY_POS);
d=OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0,clrNONE);}}}
void TSC(){TSC+=0.5;if(TSC<10){TSC=10;}}





直近一年


2005-





2016年6月8日水曜日

【EA高速化】バックテスト時間を短くしよう 関数は使用したほうが速いか?

関数を使用すると、関数を呼び出しに行く時間がかかる気がします。

ソースコードは関数を使用すると見やすくなります。
さて速度への影響はいかがでしょうか

//関数使用
int a,t;
void OnTick()
  {
  t=GetMicrosecondCount();
  for(int i=0;i<1000000;i++)
    {  
    A();
    A();
    }
  Comment(GetMicrosecondCount()-t);
  }
void A(){a++;}

//関数未使用
int a,t;
void OnTick()
  {
  t=GetMicrosecondCount();
  for(int i=0;i<1000000;i++)
    {  
    a++;
    a++;
    }
  Comment(GetMicrosecondCount()-t);
  }





関数を使わないほうが222マイクロ秒/二百万回早いという事ですね。


まとめ
①定義済み関数は複数回使う場合定数に入れたほうがわずかに速い。(どちらでもいいレベル)
②IF文の速度差は僅差のためソースコードの見やすいほうがいい。
③関数の速度差は気にするほどではない。ソースの見やすいほうがいい。

どうしても重たいEAの場合気にすると速くなりますが、普段からする必要はないと思います。

いままで、のもやもやがかいけつしてすっきりです!!










ビルド971 いきなり来ました バグフィックスでしょうか・・・ 

ソースコードを書いていたらいきなりMETAEDITORがシャットダウン!

バージョンアップされました。
突然落ちるとびっくりします!

VPSも慌てて確認しました!
わたしの使っているBEEKSとお名前.COMは970のままです。

突然バージョンアップされると運用中のEAは怖いですね。
特にチケット管理しているEAは悲惨なことになりそうです。



インディケーターの色についてのバグ修正のようです。

【EA高速化】バックテスト時間を短くしよう IFの複数条件は分けたほうがいいか?

EAを作るのに欠かせないのは if ですね!!
if の複数条件についてはこのような話を聞きます。

if( 条件A && 条件B ){~} は条件Aが偽の時(false、条件があっていない時)でも条件Bを確認するのでif( 条件A ){ if ( 条件B ){~}}のほうが早いというものです。

下の場合は条件Aが真でないと条件Bを確認しません。

これも理にかなっています。


//EA if AND君
int A=3,B=6,C,t;
void OnTick()
  {
  t=GetMicrosecondCount();
  for(int i=0;i<1000000;i++)
    {  
    if( A == 4 && B == 6){C=1;}
    }
  Comment(GetMicrosecondCount()-t);
  }

// EA ifif君

int A=3,B=6,C,t;
void OnTick()
  {
  t=GetMicrosecondCount();
  for(int i=0;i<1000000;i++)
    {  
    if( A == 4 )
      {
      if( B == 6 ){ C=1; }
      }
    }
  Comment(GetMicrosecondCount()-t);
  }

始めに A=3; としているのにifの中でA==4としていますので偽、false、条件はあっていません
 
IFAND君は&&で並列処理をしています。
ifif君は分けています。私もいつもこちらにしています。



やはりifif君のほうが早いですね。
今回は100万回ループしていますのでif一回当たり0.371ms早いことになります。
1回/一分を10年で1.3ms全ティックだと0.069秒早くなります・・・

条件Aが真で条件Bが偽の時はいかがでしょう


ifif君が負けています。0.021msわずかですが遅いですね。
IF二回の処理時間でしょうか。

両方が真の時はどうでしょうか?
予想は上と同じです。

ifif君 大差0.920ms差で負けています。
しばらく観察していても0.数ms程度の遅いですね。

両方偽の時はいかがでしょう




0.400ms ifif君が速いですね。

ソースコードは&&を使用するほうが圧倒的に見やすくなります。
真になりやすいほうを前に持っていき&&を使用するほうが速いという事ですね。
両方偽が多い時はIFIFのやり方が速いようです。

IFの複数条件100個を全ティック10年で7秒です
ソースの見やすい&&使用がいいようですね!!











【EA高速化】バックテスト時間を短くしよう Close[0] を呼び出す時間

ソースコードでOpen,Close,High,Low,Ask,Bidなどは呼び出すのに時間がかかるので、複数回使用する時にはほかの定数に代入してから使用するほうが速いという話をよく聞きます。

理に適っているし、そうだと思います。

しかし、一度しっかりと検証してみたいところです。
二つ作りました。
上は Close1 下は Close2 です。
Close1はaにClose[0]を1,000回入れています。

Close2はcにClose[0]を一回入れて、aにcを1,000回入れています。

時間に差は出るのでしょうか?


double a,t;
void OnTick()
  {
  t=GetMicrosecondCount();
  for(int i=0;i<1000;i++){a=Close[0];}
  Comment(GetMicrosecondCount()-t);
  }

double a,t,c;
void OnTick()
  {
  t=GetMicrosecondCount();c=Close[0];
  for(int i=0;i<1000;i++){a=c;}
  Comment(GetMicrosecondCount()-t);
  }


結果です
コメント欄をご覧ください。
Close1は92マイクロ秒かかっていますが、Close2は10マイクロ秒です。
一分に一回のClose[0]を減らす事ができると
一日で1,440回、一年(260日計算)で374,400回、十年で3,744,000回減らせます。
下のテストは1,000回で差は82マイクロ秒です。
3,774 × 82 は 307,008マイクロ秒=0.3秒
全ティックだと50回/分として15秒早くなります(汗)

10年のバックテストで関数一つ当たり15秒は微妙ですが、
普段から価格関係やPOINTなど定義済み関数を定数に入れる習慣をつけると、
人生少しは得するという事ですねw 作る時間も考えると・・・



【検証】VPSによってティック数は変わるのでしょうか!

M氏よりVPSによってティック数は変わるのか?という話しを頂きました。

衝撃でした!!
同じブローカであれば遅延はあるにしろおなじデーターが送られてくると決め込んでいたからです。

しかし、通信中の欠けがあってもおかしくありません。
未検証でしたのでやってみます。

1分足でセット
OnTick()でティックが変わるたびにカウントします。
1分毎にカウントを記録し、10分の平均を出します。
10分待つのはストレスですがご容赦ください。
開始時間がずれは11分以上経過するとなくなります。

ソースはこちら、定数名はなぜかケルト語(ウエールズ語)を採用しました♪


// Ysgrifennodd TACA yn Cymraeg
int TiciwchCyfrif[10],NawrTiciwch,OldTiciwch,CyfartaleddCyfrif;
//Ticiwch:Tick Cyfrif:Count Nawr:Now Cyfartaledd:Average
datetime Amser;//Amser⇒Time
void OnTick()
 {
 NawrTiciwch++;
 if( Time[0] != Amser )
  {
  Amser             = Time[0];
  TiciwchCyfrif[0]  = NawrTiciwch;
  NawrTiciwch       = 0;
  CyfartaleddCyfrif = 0;
  for( int i = 9 ; i > 0 ; i-- )
    {
    TiciwchCyfrif[i]   = TiciwchCyfrif[i-1];
    CyfartaleddCyfrif += TiciwchCyfrif[i];
    }
  Comment(CyfartaleddCyfrif/10);
  }
 }


結果ですが、お名前.COM日本とBEEKSは同じ数字でした。
25-40程度で価格差が激しい時は数値が増えます。
そらそうですね♪
念のため自宅PCとBEEKSも検証してみます。

あれれ?自宅PCは1~2少なくなります。
ティックの欠けはあるという事ですね。

データー送信中の遅延や受信コンピューターの遅れで受け取れないデーターは処理しようがないという事でしょうか。

そして全ティックもみてみましょうw
全ティックは疑似ティックですこんなもんかなーとPCが作ってくれているデーターです。
信頼性は高いと思うのですが、ねつ造データと言う人もいます・・・

4:30-4:40(GMT+3)の自宅PCの平均は38でした。
バックテストのビジュアルモードで同じ時間を確認してみます。
結果は43 リアルタイムで動かしていてもデーターを残しているわけではないのですね。
実際と同じように価格差が激しい時はティック数が増えていました。
印象ですが38-45程度が多かったような気がします。

少し現実より多めですね。
長時間比較すると面白いかもしれません。











2016年6月7日火曜日

【告知】FX-ON 記事四回目掲載!!

前回はストップロスについて記載しました。
作る側にとってはストップロスを外してしまえばPFはいくらでもあげられるということですね。

今回はドローダウンについてです。

バックテストを出す側のドローダウン%を下げる手法など紹介しています。

これを読むともうドローダウンを見なくなります!!

是非ご覧ください!

第四回】 

2016年6月6日月曜日

VPS勉強中

BEEKSの速さには驚きました。

OANDA BEEKS そしてエクイニクスについて勉強してみました。

OANDAはご存知ブローカー FX会社ですね。
OANDA JAPANもニューヨークにサーバーを持っています。

BEEKSはFXに特化したVPS会社です。
支払いがGBP建てなのにNYのサーバーをうたい文句にしています。

そしてエクイニクス ここはサーバー運営の世界的な会社です。
世界中にサーバーを置いています。東京、大阪にもあるようです。

エクイニクスはニューヨークに9個のデーターセンターを持っています。
NY1~NY9と呼ばれています。

OANDAはこのNY4にFX、MT4のサーバーを置いています。
そしてBEEKSも同じNY4にVPSを設置しています。

そうゆうことで同じ建物に両社が入っているのですね。
直結されて高速なのも理解できます。

そしてNY4に入っているブローカーを調べました。
かなり入っています。

FXCM、Forex,Pepperstone,XMなどなどです。
つまりここの会社でFXをする場合はBEEKSが早いという事ですね。






VPS SPEED TEST from BEEKS-NY4 to OANDA JAPAN

苦しみましたがBEEKSにログインできました。

日本語サポートがグーグル先生だったのは驚きましたw

さて、早速MT4をインストール ビルドは最新の970です。
VPSのマウスは相変わらずかくかくですが、
新しいチャートを開けたら、そのスピードに驚きました。
は、はやい!!声が出るくらいびっくりしました。

そして計測です。
最速1msを謳うBEEKSのNY4 VPS 
OANDA経由で申し込むとOANDAと同じ建物にあるサーバーを使えるようです。
さて、その実力は・・・

例のSpeedTest EAで計測しました。
Pingと違いサーバーの処理速度まで計測できる素敵な奴です。

お名前.COM とOANDA JAPANは  292,672micro secでしたが、

BEEKS NY4 とOANDA JAPANは69,404micro sec早いです。
1msとはいきませんが69msは早いですね。
4.2倍の速さです。

この違いは計測しなければなりませんね!

報告はまた数日後!!





BEEKS ID送られてきました!!

BEEKSのIDが来ました。
申し込み後IDが来るまでの時間を調べるとあるHPでは1時間以内にIDがくると、またあるHPでは稼働日1営業日以内と記載がありましたがもう四日です。

そこで問い合わせをしてみました。
英語で問い合わせる必要があるようです。

そこでGOOGLE先生の出番です。

「申し込んだTACAやけど、メールまだ?はよIPとPWおしえてや~」

GOOGLE先生翻訳↓

「 Dear My name is TACA . I ordered to use your saver with OANDA
 promotion in jun2 .But I don\'t receive your E-mail,yet. I want to
 know I.P ,Password, and so on. Please check it. Order reference
 123456 Thank you. TACA」

本当にあっているのか不明ですがまあ意味は通じるでしょう。
一分後に返信が来ました機械の自動返信ではないようです。
レスポンスいいです!!
「Our apologies seems our team miss this one, we will built it now. As
soon as possible we will sent your welcome note」

GOOGLE先生翻訳↓

「ごめんミスった。すぐ送るわ」

次々とBEEKSからメールが来ます。
G訳「コンピューターやけど質問はしっかりフォローするよ」

その次は
G訳「ヘルプセンターに入室できるようにPWおくるよ」

そして問い合わせから2時間後!!IDが送られてきました。


来ました。
RDPファイルをDLしてパスワードをいれて・・・・・ログインできません。

その後 BEEKSのサポートHPへ お!日本語ある!!

取りあえず英語と日本語で「何回やってもつながりません。やり方おしえて」と質問を

一分後

日本語サポート「あなたのVPSに接続するには、このビデオに従うことをしよう 」

こ、このしゃべり方はGOOGLE先生じゃないかw

しかも、このビデオ飽きるほど見たしw
それにしても返信の速さはありがたい

英語で「ビデオ何回も見ました♪わかりません」と返答

一分後

サポート英語で「パスワードコピペしたでしょーちゃんと入れてね」

サポート返信早いです。
しかし、コピペしてません・・・

こうなったら会話では難しそうです。
画面を送り付けましょうw

真ん中の赤線はコピペするなと書いています。
読んでいる証拠に線を引きましたw

①おして②






3,4,5とやりました。 DELLってなんだろう・・・







そしてログインに失敗しましたに赤線。

気が付けば日本語になっているこの誘導術!!


メールが来ました。
少し時間がかかりましたが数分です。
画像の日本語はコピペできないので苦労したのでしょうか・・

新しいパスワードを発行してくました。

そして無事ログイン♪ BEEKS さんありがとう













MT4 Build970 アップデート開始?! 

MT4が970になりました。自動更新です。
じゃじゃーん♪


フォーラムを見るといろいろ書いていますが理解できたのは三個だけです。

940以前のサポート終了
新しいサーバーには繋ぐことができない。

970でコンパイルしたものは以前のMT4で動かない。
以前のMT4でコンパイルしたものは970でも動く。

PINGがmsミリ秒から MICRO秒へ進化

自動更新で逆らえません。サーバーも変わるようですね。
ささっと更新しましょう♪
タイトルにはデモ口座の開設簡素化ともありました。

素敵なアップデートでありますように♪

【ボランティア募集中】 VPSとFX会社の距離測定について

FX会社とVPSの距離を測定し比較共有したいと思います。
これが解れば、どのFX会社を使うにはどのブローカーが最適か判断しやすくなります。

そこでVPSからFX会社までの距離を測定するEAを作成しました。


GetMicrosecondCount()でMT4起動からのマイクロ秒を取得します。
次に逆指値200、指値50でBUYエントリーをします。
FX会社から注文を拒否されます。
現在の価格107JPY/USDより逆指値200は高いからです。
同様に指値50現在の価格より低いのではじかれます。

注文不成立で戻り値-1を確認後もう一度起動からのマイクロ秒を取得
その差(かかった時間)がFX会社までの往復時間です。

10回の平均をとります。
チャート画面の左上に出ます

お名前.COM 日本サーバーからOANDAへは292,672マイクロ秒です。
0.292秒かかるという事ですね。

【ボランティア募集!】

ご使用のVPSとFX会社の距離を下記EAで測定し教えて下さい。

メール:bigtaca@gmail.com
もしくはコメント欄にご記入ください。

VPSの会社とプラン、FX会社の名前、かかった時間を教えて下さい。

使用方法
①下記EAをセットする。(自動売買を許可するに必ずチェックを入れて下さい)
②自動売買をオンにする。
③ VPS to ~がでたらその時間を記録してください。

※逆指値>指値の買い注文でエラーが出ます。約定はしませんが心配な方は残高0の口座で動かしてください。
何万回も発注エラーを繰り替えすとFX会社から指摘されるといううわさがあります(未確認)
念のため動かすのは最大5分程度にしてください。

自動売買のチェック、自動売買のONが抜けていると二、三桁の数字が出ます。
この場合FX会社までデーターが届いていないのでもう一度動かしてください。

集まったデーターはこのブログで公表します。
ご友人やご家族にもご協力いただけると助かります。

ご協力よろしくお願いします。
TACA

EA SpeedTest


#property copyright  "Copyright 2016/6/5,TACA"
#property link      "http://mt4kyoto.blogspot.jp/"
#property version    "1.1"
input int MAGIC=1192;
double count;
int NowTime,AddTime[10];
void OnTick()
  {
  count++;
  for(int i=10;i>=0;i--){AddTime[i]=AddTime[i-1];}
    NowTime=GetMicrosecondCount();
    if(OrderSend(Symbol(),OP_BUY,0.01,Ask,5,200,50,"SpeedTest",MAGIC,0,clrNONE)==-1)
      {AddTime[0]=GetMicrosecondCount()-NowTime;}
  if(count<10)
    {
     Comment("We need more "+(10-count) + "Times. Please wait few minute.");
    }
  if(count>=10)
    {
    int All;
    for(i=10;i>=0;i--){All+=AddTime[i];}
    Comment ("VPS to "+AccountServer()+" "+(All/10)+" micro sec.");
    }
  }

追記

図1.

測定中に操作履歴にこのようなメッセージが出ていればちゃんと測定ができています。

FXDD社ではこのEAは使えないようです。
※想像ですが、MT4は一般的には直接FX会社のサーバーにつながるのですが、
FXDDはマルタ共和国のサーバーには直接つなげず、データセンターに一度繋いでいます。
接続アイコンが緑なのはデーターセンターにつながっているという事です。
サーバーにログインしますが、接続アイコンをクリックするとデータセンターが出てきますね。

SLやTPが適切かをサーバーでは判断していないようです。
図1のようなエラーも出ず。測定時間も極端に短く(三桁)になります。

そして海外ではサーバーに直接つなげるサービスもあるようですね^^σ


m**o**m様 から頂きましたAMAZONEC2 東京とAXIORY TY3の写真です。

AMAZONで同じ建屋はやはり速いですね!







2016年6月5日日曜日

メモリーとCPUプレゼント!! 無料です!

PCの引っ越しが大体終わりました。

メモリーとCPUが余りました 
なぜ?
必要な方は こちらに郵便番号、住所、名前、電話番号をメールをください。

CPU E6550 INTEL CORE2 DUO 2.33GHZ/4M/1333/06 L723A813 マレーシア
メモリー 512MB PC2 5300U CL5 2個 SAMSUMG 韓国
メモリー D2/677 2G 2個 BUFFALO 



動作確認   :   さっきまで動いていた
保証      :   まったく一切無し
表記      :   適当です間違っているかも・・・
梱包      :   透明ぷちぷちで適当
XP、SSD動かしていたのですが、i7 5550と比較するとバックテストは倍ぐらいの時間で終わります。
MT4はシングルタスクでしか動きません。
シングルの性能はその程度しか上がっていないということでしょうか
WIN10のアップデートで システムと圧縮メモリが動くようになりました。
細かい動きのEAはこちらのほうがはやいこともw

早い者勝ちですよー