2019年8月30日金曜日

MT5 国内登場!!!

MT5開始のうわさはあちこちから聞こえていましたが、
ついにAVAから始まりました!

https://www.avatrademt5.jp/

MT5が登場したのはたしか2010年 
世界に9年9カ月遅れての登場です!

構造体や配列面倒ですが、勉強しないといけませんね!!




2019年8月17日土曜日

【おまけ】EZインベスト証券 平均スプレッド

EZインベスト証券2-23時(mt4時間)の平均スプレッドです。
計測期間は約一週間
USDJPYは桁が多い為 実際は6くらいになっています。

行ラベル Average High Low
EURUSD_ 12 35 10
AUDUSD_ 13 144 11
EURJPY_ 14 192 11
NZDUSD_ 14 116 11
USDCHF_ 14 111 11
USDCAD_ 15 160 11
AUDJPY_ 15 167 11
NZDJPY_ 16 251 11
EURGBP_ 17 96 13
EURCHF_ 17 125 13
AUDCHF_ 18 231 13
CADJPY_ 18 205 11
GBPUSD_ 18 137 13
CHFJPY_ 18 157 11
NZDCHF_ 18 362 13
EURAUD_ 19 234 13
AUDCAD_ 19 211 11
AUDNZD_ 19 261 13
CADCHF_ 19 244 14
GBPAUD_ 20 241 13
USDJPY_ 61 505 45

時間別 スプレッドの変化を見てみよう

一時期はスプレッド原則固定の業者が多かったのですが、
最近は減ってきました。
スリッページを0にしても滑る為本当のスプレッドはわかりにくいものです。
原則固定で滑らないのは金道(旧FXTF)の10,000コースくらいでしょうか

今回はEZインベスト証券のスプレッドを一週間ほど計測し、
CSVに出力をしてみました。

平均スプレッドです。
ほとんどの通貨はMT4時間(GMT2/3)で2-22時は落ち着いていますが、
指標発表の多い15時は影響が出るようです。
確認したのはCFD,USDHKD,USDSGD,USDZARを除くすべてです。
USDJPYは一桁多い為、伸びて見えています。



次はスプレッドの高値です。
5時と15時に上がっています。
5時=12時(日本時間)これは新しい発見です。



最後に安値を見てみます。
安値が真直ぐな通貨は最低スプレッドが決まているようですね。



EA開発時には平均スプレッドで開発することがほどんどですが、
利益がでるぎりぎりまで、動作するようにするのも戦略の一つです。



2019年8月15日木曜日

PING 計測中に大変な事をしてしまったかも・・・

VPSの試験をしています。
注文を出してからの流れは大きく3つです。
①ティックを受けてから計算をして発注を出す VPSのCPUが重要
②証券会社のMT4サーバーに注文を投げる VPS-証券会社サーバー間の速度(Ping)
③証券会社がカバー先に確認をする 証券会社ーカバー先間の速度と処理(VPSは関係ない)

②のPingは距離があると不利です。
ほとんどの国内証券会社は東京にサーバーを置いています。
エクイニクス社のTY3 OANDA TY3,EZインベスト、俺のFX

VPS会社 BEEKS TY3
お名前.COM     新宿?
ABLE        大阪
使えるねっと      長野
BESTONE     仙台

距離についてですが、東京ー大阪 より 東京ー京都は 物理距離は近いのですが、
PINGを測ると近いはずの京都が遅くなります。


横長でだいぶと小さくなりました・・・

各証券会社で試験をしました。
MT4を6証券会社x12VPS 72個インストールしました。かなり大変(^^;)
黄色は優秀 PING<10,000
赤は使ってはダメ PING>20,000
  

悪いほうから見ていきます。

ABLEネット ティック取得 PING共に最低です。
TY3のEZ,俺での使用は禁忌です。

BESTONE PINGは悪い結果が出ていますが、
CPUなどのスペックはなかなかいい物を持っています。
とくに体感やMT4インストールのスピードは一番いい感じがしました。
バックテストなどは、一番いいかもしれません。

BEEKS EZ,俺では0.3ms 驚異的な速さです。
同じTY3に入っているからですね。
有名なEAをEZ、俺で使う時には第一選択ですね!
逆に楽天は禁忌です。100msは驚きです!

使えるねっと ティック取得数が多いのが魅力です。
EZ,OANDA TY3、楽天、俺での使用はありですね。
キャンペーンでドーンと安くなるのが魅力です。。

お名前.COM 一番優秀で、汎用性があります。
いろいろな証券会社を使う場合などお勧めです。

そうそう大変な事ですが全部は言えませんが
PING計測に少し多めの回数の接続をしたところ、
やってしまったかもしれません。
ごめんなさいm(__)m

※書くのが大変なので、各会社様の名前を短くしています。








2019年8月12日月曜日

EA VOID出品!!

あの一本勝ちのCYさんから EAの出品依頼を頂きました。

出品をするのはCYさんの販売サイトLET'S REAL↓です。
かわゆいアイコンが並んでいます。


LET'S REALは出品者がリアル口座で回した成績を表示するという新しいスタイルです。

出品するEAはどれにしようか迷いに迷いましたが、
いい物がありました。
開発期間は約1年
FOREX E●CHANGE社提供用として、世に出そうと思ったのですが、日の目を見ずそのままになっていたEAです。

自分で回しているやつなのでLET'S REALコンセプトにちょうどいいですね。
半年ほど、この荒れた相場を回していましたが、
こつこつとしっかり稼いでいます。



10万円 0.1ロットでの成績です。

1週間程度のフォワードでいいようですので盆明けには発売開始かもしれません。


2019年8月7日水曜日

VPS試験 PING取得 コード有

PINGを100回計測してその平均値を取得します。
はやいVPSは、距離が近いという事になります。

MT4は起動した時にPingを取得しています。
その値は↓で取得します。
TerminalInfoInteger(TERMINAL_PING_LAST))でPingをとります。

Pingの値をリフレッシュする為にdllを使いますので、
このコードはDLLのチェックが必要です。
100回計測後ExpertRemove()でEAを強制終了します。
この関数での終了はコメントがクリアされませんので使い方によっては便利です。
※100回Pingwo取得しますが、操作履歴のPing更新は間に合わず1/10程度しか表示されません。


#import "user32.dll"
int GetAncestor(int hWnd, int gaFlags);
int PostMessageA(int hWnd,int Msg,int wParam,int lParam);
#import
int TotalPing=0,i=0;
void OnTick()
{
if(PostMessageA(GetAncestor(WindowHandle(Symbol(),Period()),2),0x0111,37400,0))
{
TotalPing+=TerminalInfoInteger(TERMINAL_PING_LAST);
i++;
Comment("Average Ping: ",(double)TotalPing/i," Count: ",i);
}
if(i>=100)ExpertRemove();
}

VPS 比較試験 ティック取得数

VPSでは、証券会社のMT4サーバーから最新のティック価格が配信されます。

そのティックをVPS上のMT4が受け取り、計算処理をして条件が合えば売り買いをします。

しかし、ティックを受け取って計算中に次のティックが配信された時には無視をします。
価格が変わっているのに古い価格で計算するのは当然不利です。

EZインベスト証券はティックの配信数が、他社に比べて1.3-1.4倍ほどあります。

そこでEZインベスト社のティックをどれくらい受け取れるかで試験をしました。


他の証券会社では100%取れる事が多いのですが、この様な結果になりました。
80%以上取れたのが お名前.COM 使えるねっと BESTONE社です。

ティック取得数とCPU、DRIVEの成績の相関をみたところ
CPUのマルチコアとの相関が一番高い結果となりました。

少しでも有利に取引をするためには、CPUスペックも必要という事ですね!


2019年8月1日木曜日

とある実験EAのフォワードテスト

ある実験EAです。
フォワード試験(本番口座リアル資金)を開始したのですが忘れていました・・・

税理士さんに提出をする明細を作っている時に発見しました!!

6,7月の成績です。実資金の実口座です(FXTF)

↓まっすぐです!

通貨はドル円 ロットは0.1ロット固定
2ヵ月約56日での取引回数は30回と控え目

うーん 綺麗です!





2019年7月31日水曜日

VPS 試験用EAとソースコード

試験用にVPSをお借りしてます。

VPSの大切な仕事の一つはTickを受け取る事です。
MT4ではティックが配信されると計算処理が始まります。
計算処理中に次のティックが来ると次のティックは無視されます。

価格が変わってティックが配信されたのにそれが無視されるのは
スリッページの出やすい環境になります。



そこで、実際のティック(Vol)と受け取れたティックTickを測定します。
ソースはこのような感じです。
使う時はH1などの長い時間を使用してください。
計測時間は1分です。


#property copyright"copyright(c) TACA / AMSER Inc. 2019"
datetime StartTime=TimeCurrent();
int Tick=0;
long StartVol=Volume[0];
void OnTick()
{
if(TimeCurrent()>StartTime+60)return;
Comment("Tick: ",++Tick,
" Vol: ",Volume[0]-StartVol,
" Tick / Vol: ",NormalizeDouble((double)Tick/(Volume[0]-StartVol),3));
}

計測結果は次回発表します


2019年7月29日月曜日

EDELWEISS アップデート

エーデルワイスをアップデートしました。
OANDA社のデモコースでフォワードをしていたのですがV20になってスプレッドが変わり動いていないことが判明しました。

実はこのEAフォワードテストが失敗しておりました。
矢印のところからカーブが変わっていますが、
ゴゴジャンのサーバー側でマックスポジションx2が計上されておらず、後からの計上もできないとの事でした。

バックテストでは250万円以上稼ぎだしている計算になりますが赤い矢印までの線を真直ぐ引いた感じをやや下回る感じになります。

さて、定価を10万円に上げましたがその間1本も売れていません。
そこでいったんもとの2万円に戻します。

しばらくしたら、また値上げしようと思いますのでご興味のある方はお早めにお願いします。

2019年7月26日金曜日

お名前.comVPS x MONEY CLUB はやw

お名前.COMの担当者様に質問をしました。

TACA「VPSの推奨MT4は何枚で、EAは何個でしょうか?」
お名前.COM担当者「どれくらいでしょうね~」

そこで!EAを10個ほどまわしてタスクマネージャで余力を確認したいと思います。

自作EAの場合速さに偏りがあるといけませんので、
今人気の無料EAサイト「MONEY CLUB」の物を使います。

初期の予定は10個ですがMONEY CLUB さんには11個ありましたので、
11個まわしてみようと思います。

MONEY CLUB  ←リンク!

証券会社はEZインベスト証券様です。

VPSはお名前.COM 8G
MT4をインストールして感じたのは体感が非常に速い事です。
11個5分ほどでインストールできました。

MONEY CLUBのEAは適当なチャートにセットすると自動で通貨ペア、時間足が変わる仕様です。これも楽ちんですね!



MT4を11個まわして CPU使用率は10%!!!

え?!10%!!100個くらいまわさないと負荷試験になりませんね・・・・

初めの質問です。「VPSの推奨MT4は何枚で、EAは何個でしょうか?」
何個でもいいよー といった感じなのでしょうか・・・


ちなみにお名前.COM⇔EZ インベスト証券(TY3)のPINGは1ms程度でした。
MONEY CLUB しばらくまわしてみます!


2019年7月25日木曜日

VPS 比較 予備テスト!!

VPS比較 各社揃いました。

今回お借りしたのはこのような感じです。

お名前.COM 1G,1.5G,2G,4G,8G
BEST ONE GOLD 4GVD
使えるねっと SILVER GOLD PLATINUM
BEEKS GOLD
ABLENET V2

無料提供の有無にかかわらず公平に判断をしますが、
透明性確保の為、提供を受けている状況は公開します。

無料提供 お名前.COM BESTONE 使えるねっと
BEEKS社は4つほど持っていますが今回使用はOANDAのキャンペーンで頂いたGOLDです。
ABLENET社からは御提供いただいておりません。

さて、VPSに必要なのはこんな感じと考えています。
①VPSの処理速度
  処理速度が速いほど正確にティックが取得できます。
②通信速度
  こちらはPINGなどで評価されますが、
  実際にMT4サーバーまでどれくらいの速さで到達するかです。

そして、証券会社の性能によりますがMT4サーバーの処理速度、カバー先との応答速度をすべて足したのが、約定速度になります。




今回はまずスペックを見たいと思います。
CPUのスペックはCPU-Zで、SSD,HDDの速度はCrystalDickMark6  で計測をしています。




数値は大きいほど処理速度が大きい=速いということです。
CPU
SINGLE BESTONE>使えるねっと>BEEKS>お名前.COM>>ABLENET
MULTI お名前.COM>使えるねっと>BESTONE>>BEEKS>ABLENET
※MULTIはお借りしている最速の値を使っていますので、コア数や元々の差があります。
DRIVE
READ BEEKS>お名前.COM>>使えるねっと>BESTONE>ABLENET
WRITE お名前.COM>BEEKS>>BESTONE>=ABLENET>使えるねっと

ベンチマークはこのような結果です。

つづく








2019年7月20日土曜日

【告知】VPSの性能比較試験!

最近VPSの業界が少しにぎやかになっています。

OSの変化や技術革新でより安く、より早く、より安定を各社が打ち出しています。

MT4は古いソフトです。
メモリーは2GBまでしか使うことが出来ません。
この上限を超えるとHDD、SSDにアクセスが始まり極端にスペックが落ちます。
ところがM.3などは恐ろしく高速化され、最近のVPSはここがかなり改善されているようです。

OSは古いほうが軽くて速い、メモリーも喰わないという考えがあります。
試験をするとWINDWOS 2008がやはり一番早い印象でしたが、
あと半年ほどでサポートが切れます。

そこで!!
MT4に最適なVPSはどこか試験をしてみたいと思います!!

VPSは仙台、新宿、大阪、長野、TY3あたりを狙っています。

つづく~



2019年7月5日金曜日

EURUSD 過去データーの検証

さて今日はEURUSDの過去データーの検証です。
最近いろいろな過去データー論争があります。

過去データーの中で検証しやすいのは時間です。
MT4はボリュームにティックデーターを使用しています。
デュカスのJFOREXデーターはボリュームは本当の取引数なので少しことなりますが、
ティックボリュームは0時NYクローズ時間が一番少なくなります。

過去データーからティック数を取り出すことで、時間がずれているかどうかを確認できます。エクセル⇒ピボット⇒グラフで年別平均をグラフにしました。



こちらはアルパリのデーターです。
1999~という事で使っている人も多いと思いますが
赤の縦線をご覧ください。
古いデーターはティックが少ないので見えにくいのですが2008(茶色),2009(紺),2010(紺)は明らかに1時間ずれています。






次はFXDDです。完全に一致していますね。
通貨毎に結果は変わってきますがEURUSDに関してはFXDDはアルパリより優秀なデーターです。
ティック量もこれだけ変わってくることから、
あまり古いデーターでのバックテストはよくない(信頼性がおちる)という事ですね。



※海外業者の使用を推奨するものではありません。実取引は厳禁です!!


2019年5月27日月曜日

SAXO Trading View START

サクソバンクさんでトレーディングビュー(以下TV)がいよいよ本格稼働です。

TVはMT6?のようにWEBで完結できる今話題の最新ツールです。
また、日本株、米株、指数、為替、仮想通貨もすべて見ることが出来ます。

そして、なにより嬉しいのがPINEスクリプトで簡単にいろいろと作ることが出来ます。
PINEスクリプトは、ほぼEASYランゲージですね!
そしていよいよSAXOさんで使えるようになりました。
↓プレスリリース
https://prtimes.jp/main/html/rd/p/000000010.000023116.html

MT4の次はトレーディングビューかもしれませんね!!




発注時間検証!

 本日は MT4の発注時間について検証をしてみました。

使った業者はFOREX EXCHANGEです。

発注すると「MT4クライアント(発注するPC)」⇒「MT4サーバー(FOREXEXCHANGE in TY3)」⇒「カバー先EDGE FRACE?」の順で発注が流れて発注がちゃんと出せたかが戻ってきます。
FOREX EXCHANGE EDGE共にNO LOOKですので、拒否されることはありません。

現在の環境の接続は5msです。










①指値発注
void OnTick()
{
for(int i=0;i<10;i++)
{
datetime AMSER=GetMicrosecondCount();
int d=OrderSend(Symbol(),OP_BUYSTOP,0.01,Ask+1,0,0,0,"Speed Test",998877);
Print(GetMicrosecondCount()-AMSER);
}
for(i=OrdersTotal()-1;i>=0;i--)
{
if(!OrderSelect(i,0))continue;
if(OrderMagicNumber()!=998877)continue;
int x=OrderDelete(OrderTicket());
}
ExpertRemove();
}

指値の平均は約140ms



②実発注
void OnTick()
{
for(int i=0;i<10;i++)
{
datetime AMSER=GetMicrosecondCount();
int d=OrderSend(Symbol(),OP_BUY,0.01,Ask,0,Ask-0.02,Ask+0.02);
Print(GetMicrosecondCount()-AMSER);
}
ExpertRemove();
}

実発注の平均約780ms




みにくいのでEXCELにまとめました。



かなり時間に差があります。
指値はMT4サーバーで処理 実発注になる時にEDGEに渡すのかもしれませんね。
FXEX社は指値で滑ることがあるのでそうかもしれません。
※FXEX社で滑るのはプラスも結構あります。








2019年5月24日金曜日

ひさびさのソースコード公開!!無料EAです。(可変グリッド)

EA EVERY

#property strict
input int Magic=999;
//USDJPY H1?
input double Lot=0.01;
input string Com="Every";
input double TP=0.01;
string S=_Symbol;
datetime AMSER;
void OnTick()
{
if(!Hour()||Hour()==1)return;
if(AMSER==Time[0])return;AMSER=Time[0];
double H=0,L=Bid*2,c;
for(int i=0;i<20;i++)
{
c=iClose(S,PERIOD_H1,i);
H=H<c?c:H;
L=L>c?c:L;
}
double Range=!(H-L)?0.5:(Bid-L)/(H-L);
bool Chk=true;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS))continue;
if(OrderMagicNumber()!=Magic)continue;
if(floor(Bid*100)/100<OrderOpenPrice()
&&OrderOpenPrice()<floor(Bid*100)/100+0.01
&&Range<0.3)Chk=false;
}
if(Chk)int d=OrderSend(Symbol(),OP_BUY,Lot,Ask,0,0,Ask+TP,Com,Magic);
}

2019年5月21日火曜日

開発:コピーツール インジケータ 対策

前回はEAとして作られたコピーツール対策として自分以外のチャートを閉じる方法をご紹介しました。

1チャートに1EAしか適応できませんから、チャートが一つでしたら安心ですね!

いやいや、インディケーターとして同じチャートに出しちゃえばいいじゃんという声が聞こえてきそうです。

そこで!!

for(int j=ChartGetInteger(0,CHART_WINDOWS_TOTAL)-1;j>=0;j--)for(int i=ChartIndicatorsTotal(0,j)-1;i>=0;i--)ChartIndicatorDelete(0,j,ChartIndicatorName(0,j,i));

同じチャートのメインチャートとサブチャートすべてのインジケーターを外してしまいましょう!!

チャートの数(サブウィンドウ+メインウィンドウ)の数だけループします=J
各チャートのインジケータの数だけループします=i
インジケーターを消します。消す対象はショートネームを参照しますが、
ショートネームが無くても大丈夫です!!

※strict モードの場合
コンパイル時に丸めるよと警告が出ます。
ChartGetInteger(0,CHART_WINDOWS_TOTAL)の戻り値の型の問題です。
気になる日とは(int)を付けて下さい!! 

開発:コピーツールEA対策

EA販売者にとってコピーツールは厄介な物です。

1つEAを購入してロット上限までいくとコピーツールでもう一つ上限までエントリーといったところでしょうか。あまりやると板が無くなってしまうかもしれません。

もしくはロット上限のあるサンプルEAをコピーして大量に発注
こうゆう事を懸念すると、サンプルなどが出しにくくなってしまいますね。

メジャーなやり方の一つはMT4を一つ立ち上げて、チャートを2枚表示。
1つのチャートには動かすEAをセット、
もう一つのチャートにはコピーEAをセット

対策:
他のチャートのEAを排除する事は出来ません。
そこで、自分以外のチャートを全部閉じてしまいましょう^^

コード

while(ChartNext(ChartID())!=-1)ChartClose(ChartNext(ChartID()));

ChartID()はセットしたチャートのIDが取得できます。
ChartNext()は渡したIDの次のチャートIDを返します。
渡したIDが最後の場合-1が戻ってきます。

そして、ChartClose()で次のチャートを閉じでしまいます。

どうでしょうー




2019年5月14日火曜日

開発:アイデア!スプレッドチェックについて

開発のアイデアです。

スプレッド上限のロックにこんなソースを使っています。

input int Spread_Limit = 10;
if(MarketInfo(Symbol(),MODE_SPREAD)>Spread_Limit)return;
// ここから発注ロジック

スプレッド20で試験をする時には 設定を変更してからテスト開始します。

しかし、かなりよくやってしまうのが、テスターのスプレッドを20に上げて、設定は10のまま試験を開始!!
全く取引していない結果を見て設定を20に変更し再度テスト!!

そこで!

if(s<MarketInfo(Symbol(),MODE_SPREAD)&&!IsTesting())return;

こうすれば、バックテストの時はスプレッド上限を回避できますね。

小ネタでした!