2018年7月7日土曜日

OANDA 価格チェッカー 七夕バージョン

OANDA TY3にUSDJPYは3つあります。
TY3をじつは先行で使わせてもらっていたのですが
そのころに疑問が二つ
①TY3内でアービトラージできるのではないか?
②桁数がおかしいのでは?

①は昨年は出来ていたのですが、できなくなってしまいました。
私のせいかも・・・

②こちらについてはTY3一般公開前にOANDA社にお伝えしたのですが、
未だ直っていないようですね。

下記 ソースでTY3 3コースの価格(Bid,Ask)をコメントとラインで表示します。
USDJPYは正常に動くのですが一部の通貨では挙動がおかしくなります。
BID,ASKでは3桁5桁なのですがiCloseを使用すると4桁しか配信されないのが欠点ですね。




#property copyright "Copyright 2018/7/7,TACA"
#property link      "http://mt4kyoto.blogspot.jp/"
string Broker[6];
double Rate[6],MaxAb=1;
string OANDAPair;
color Color[6];
ENUM_LINE_STYLE Style[6];
void OnInit()
{
Broker[0]="OANDA5kBid";Color[0]=clrRed;Style[0]=STYLE_DOT;
Broker[1]="OANDA5kAsk";Color[1]=clrRed;Style[1]=STYLE_DOT;
Broker[2]="OANDA1mBid";Color[2]=clrYellow;Style[2]=STYLE_DASH;
Broker[3]="OANDA1mAsk";Color[3]=clrYellow;Style[3]=STYLE_DASH;
Broker[4]="OANDA3mBid";Color[4]=clrWhite;Style[4]=STYLE_DASHDOTDOT;
Broker[5]="OANDA3mAsk";Color[5]=clrWhite;Style[5]=STYLE_DASHDOTDOT;
OANDAPair=StringSubstr(Symbol(),0,6);
Rate[0]=iClose(OANDAPair+".oj5k",PERIOD_CURRENT,0);
Rate[1]=iClose(OANDAPair+".oj5k",PERIOD_CURRENT,0)+MarketInfo(OANDAPair+".oj5k",MODE_SPREAD)*Point;
Rate[2]=iClose(OANDAPair+".oj1m",PERIOD_CURRENT,0);
Rate[3]=iClose(OANDAPair+".oj1m",PERIOD_CURRENT,0)+MarketInfo(OANDAPair+".oj1m",MODE_SPREAD)*Point;
Rate[4]=iClose(OANDAPair+".oj3m",PERIOD_CURRENT,0);
Rate[5]=iClose(OANDAPair+".oj3m",PERIOD_CURRENT,0)+MarketInfo(OANDAPair+".oj3m",MODE_SPREAD)*Point;
MaxAb=1;
}

void OnTick()
{
ObjectsDeleteAll();
for(int i=0;i<=5;i++)
{
Rate[0]=iClose(OANDAPair+".oj5k",PERIOD_CURRENT,0);
Rate[1]=iClose(OANDAPair+".oj5k",PERIOD_CURRENT,0)+MarketInfo(OANDAPair+".oj5k",MODE_SPREAD)*Point;
Rate[2]=iClose(OANDAPair+".oj1m",PERIOD_CURRENT,0);
Rate[3]=iClose(OANDAPair+".oj1m",PERIOD_CURRENT,0)+MarketInfo(OANDAPair+".oj1m",MODE_SPREAD)*Point;
Rate[4]=iClose(OANDAPair+".oj3m",PERIOD_CURRENT,0);
Rate[5]=iClose(OANDAPair+".oj3m",PERIOD_CURRENT,0)+MarketInfo(OANDAPair+".oj3m",MODE_SPREAD)*Point;
ObjectDelete(Broker[i]);
ObjectCreate(Broker[i],OBJ_HLINE,0,0,Rate[i]);
ObjectSet(Broker[i],OBJPROP_COLOR,Color[i]);
ObjectSet(Broker[i],OBJPROP_STYLE,Style[i]);
  double MaxBid,MinAsk;
  if(Rate[0]>=Rate[2])MaxBid=Rate[0]; else MaxBid=Rate[2];
  if(MaxBid<Rate[4])MaxBid=Rate[4];
  if(Rate[1]<Rate[3])MinAsk=Rate[1]; else MinAsk=Rate[3];
  if(MinAsk>Rate[5])MinAsk=Rate[5];
  if(MaxAb>MinAsk-MaxBid)MaxAb=MinAsk-MaxBid;
  Comment ("Bid    Ask\noj5k : ",Rate[0]," ",Rate[1]
  ,"\noj1m : ",Rate[2]," ",Rate[3]
  ,"\noj3m : ",Rate[4]," ",Rate[5]
  ,"\nMaxBid : ",MaxBid," MinAsk : ",MinAsk," Ab : ",MinAsk-MaxBid
  ,"\nMaxAb : ",MaxAb);
}
}

0 件のコメント:

コメントを投稿