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;

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

小ネタでした!