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;

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

小ネタでした!