2016年6月4日土曜日

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

FX-ONに三回目の記事が掲載されました。
ブログは平気なのですが記事となると読み返すのが照れくさいですね。

少しプロフィットファクタ(PF)について書いてみました。

MT4を始めたころは人一倍PFの高いEAを追い求めていました。

しかし、PFの高すぎるEAはこつこつ稼いだものが一気に消える物が多いことに気付きました。
コツコツドガンです。

その辺の仕組みなど書いてみましたのでご一読ください!!

VPS失敗列伝! メンテナンス後の再起動編

明日は縣まつりです。縣まつりは深夜の奇祭と言われる祭りです。
見たことは無いのですが、朝2時、町中の全ての電気を消した真っ暗な中を生まれたままの姿で神輿を担いで回るそうです。
洛南で行われるため洛中の人には無名なのですが、夜店の数がものすごくなかなか楽しいお祭りです。

そしてその翌日は光回線メンテナンスの日
インターネットをYAHOOからYAHOOに切り替えるとiPhoneが1,500円/月、安くなるそうです。

通信業界は難解な仕組みのようです。
YAHOOからYAHOOに切り替えとは何の事でしょうか!
なぜYAHOOではなく、iPhoneの価格が割引になるのでしょうか!

とりあえず私がしなければならないのは月曜日の朝までにサーバーへMT4の引っ越しを終わらせなければなりません。

既述ですが、木曜日にOANDA用にBEEKSを申し込みました。一時間以内に開設できると書いていたのですが、音沙汰なし・・・

お名前.COMの アメリカサーバーはお試し期間終了

あるのは お名前.COMの日本サーバーです。(これもお試しあと一ヶ月)
取りあえずこちらに避難しようとVPSにコネクトしました。

あれれれれ?

WINDOWS2008がシャットダウンされています。
先週末にメンテナンスがあったようです。
メンテナンススケジュールを確認してませんでした。


そしていろいろと調べていると、めたぶろ先生のラボにたどり着きました。

設定をしないとメンテナンス後にVPSは自動ログインしてくれないようです!!!
幸いポジションを持っていなかったのですが複数のテストEAを一週間放置していたのは考えただけでも恐ろしいことです。

メンテナンススケジュールの確認と自動ログインの設定は必須です


億劫ですが、いまからお名前.COMへ引っ越しします。
スピード次第では、来週にBEEKSへ再び引っ越しです♪




2016年6月3日金曜日

EA X(仮称) 開発中! 名前募集中!

今月はAMSERが好調です。月利約40%を叩き出しました!!
30万円ほどEAに入れていましたのでムフフ♪

しかし、開発は続きます!!
そういえば、最近記事書いて、ブログ書いてメールしてあんまり開発してないなぁ~

そこで今週はガチです。開発です。
リアルとバックテストの違いはほとんど遅延によるずれです。
約定率をうたい文句のあのOANDAでさえ往復0.4Pips程度ずれます。

原則固定0.4Pipsは実は0.8Pips程度という事です。
ずれを減らすために24時間ほど前にBEEKSを申し込んだのですが一切音沙汰がありません。

話しがそれました・・・
開発中の一品を紹介します!
EAの名前はまだ決めていません EA X(仮称)です。
OANDAのEURUSDのスプレッドは0.5Pips


そこをなんと1.8Pipsでバックテストしました♪  
いつも大げさ、オーバーリアクションといわれます・・・
結果は年利95% よさげです。





つづいて9Pips 11にしようか悩んだのですがまぁ原則固定0.5+0.4で0.9です。

年利94%


あれ?下がった?


よくみると年利947%でしたw


すごいです!よくがんばりました!
このEA X(仮称)には様々なシステムが導入されています。
集大成です。





一般のEAと比較のためにスプレッド5も用意しました。

ご覧くださいEA X(仮称)の実力です!!






結果




年利1958%



いい数字です!1958年と言えば私の大好きな一万円札発行の年です!


EAの名前募集中です!!
コメント欄にかっこいいの意味深なものお書きください!!











【EAを作ろう】第十五回 ぽちぽち補助EAを作ります!

わたしもポチポチ病の重症患者です。
EAが稼いだ分をそっくりそのままポチポチで失います@@;

早くエントリーしたいと我慢できずにポチ!
含み損が多くなる前にポチ!
冷静に考えると待てないのです。

そこで!!いままでの関数で、ぽちぽち補助EAを作ります。
エントリー用にアラートシステム
クローズは自動的にシャンデリア・トレーリング

行動様式は画面に張り付いてチャートを注視する状態から、ポテチを食べながら、漫画を読みながら、アラートが鳴ったら画面確認と決定的な変革が起こります。太りそう・・・

ボリンジャ・バンドをこえたらアラート
MACDがクロスしたらアラート
RSIが70,30を超したらアラート

ポジションがあるときは自動的にシャンデリア・トレーリング
儲かった時にはマリオのコインをとるコイーン♪を鳴らしたいのですが音源がありません・・・

#property copyright "Copyright 2016/6/3,TACA"
#property link      "http://mt4kyoto.blogspot.jp/"
int d;double TSL,OTSL,SL;datetime TimeOld;
input int ChandelierTrailing=60;
input string RSI;
input int RSIPeriod    = 14;
input int RSIUpperLine = 70;
input int RSIBelowLine = 30;
input string MACD;
input int MACDFastPeriod=12;
input int MACDSlowPeriod=26;
input int MACDSignalPeriod=9;
input string BollingerBands;
input int BandsPeriod=20;
input double BandDevision=2.0;

void OnTick(){if(OrdersTotal()!=0){CS();}
if(Time[0]!=TimeOld){TimeOld=Time[0];
if (RSI(2) < RSIUpperLine && RSI(1) > RSIUpperLine){Alert("RSI above the " + RSIUpperLine);}
if (RSI(2) > RSIBelowLine && RSI(1) < RSIBelowLine){Alert("RSI below the " + RSIBelowLine);}
if (MACD(0,2)<MACD(1,2)&&MACD(0,1)>MACD(1,1)){Alert("MACD Golden Cross");}
if (MACD(0,2)>MACD(1,2)&&MACD(0,1)<MACD(1,1)){Alert("MACD Deadly Cross");}
if (Band(1)<Close[1]){Alert("Bollinger Bands above the " + BandDevision);}
if (Band(2)>Close[1]){Alert("Bollinger Bands below the " + -BandDevision);}
}}

double RSI(int Shift){return(iRSI("",0,RSIPeriod,0,Shift));}
double MACD(int mode,int shift){return( iMACD("",0,MACDFastPeriod,MACDSlowPeriod,MACDSignalPeriod,0,mode,shift) );}
double Band(int mode){return( iBands("",0,BandsPeriod,BandDevision,0,0,mode,1) );}

void CS(){
d=OrderSelect(0,SELECT_BY_POS);
if(OrderType()==0)
{if(TSL<Close[0]){TSL=Close[0];SL=TSL-ChandelierTrailing*Point;}}
else
{if(TSL>Close[0]){TSL=Close[0];SL=TSL+ChandelierTrailing*Point;}}
if(TSL!=OTSL){OTSL=TSL;d=OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0,clrNONE);
}}

意外と長くなってしまいました・・・
#propertyでコピーライトとブログのページを載せていますが、
ソースをコピーされた多くの人は書き換えるようです@@;

input~が続きます。各設定を好きなように変更してください!
定数の名前は短いのが好きなのですが、input やexternは変数名がそのまま表示されますので、
解りやすくしています。

input string~は設定画面で各項目の区切りがわかりやすいようにいれています。
RSI は定数、RSI() は関数です。別の物として扱われます。

void OnTick()でポジションを持っている時 OrdersTotal!=0 の時はCS()シャンデリアストップ関数へ飛ばしています。
その次の行ではTime[0](その足の始まった時間)を見ています。
Time[0]をTimeOldに格納してTime[0]とTimeOld(ひとつ前のTime[0])を比較しています。
足が変わるとTime[0]が変わります。
足が変わるたびにその下を動作させます。

アラートが鳴り続けてポテチタイムを阻害されるのを防ぐためです。

そしてその下は条件がそろえばアラートを鳴らします。
一番上はRSI(2)二本前のRSIが上の線より下でRSI(1)一本前のRSIが上の線より上になった時にアラートを鳴らします。一度上の線より下に来ないと再びアラートはならないようにしています。

Alertは( )の中に文字列を入れます。
線の位置は70以外にも設定できるようにしましたので + RSIUpperLineでいくつを超えたかわかるようにしました。 

あとは追っかけて読んでみてください。
ブログに乗せるには長めのソースコードになりましたが、していることはシンプルです!











2016年6月2日木曜日

【EAを作ろう】第十四回 関数を作ろう2 ボリンジャー MACD

関数は続いてボリンジャーバンドへ

iBands(通貨ペア , 時間軸 , 期間 , 偏差 , バンドシフト , 適応価格 , モード , シフト)

詳細は割愛w


iBandsでよく使う変更点はモードです。
モード:1上の線
モード:2下の線

double Band(int mode){return( iBands("",0,20,2,0,0,mode,1) );}

Band(1)は期間20 偏差2 の 上の線
Band(2)は期間20 偏差2 の 下の線

Bandsのsはよく忘れるので省きました。

さらにMACD

iMACD(通貨ペア , 時間軸 , 短期期間 , 長期期間 , シグナル期間 , 適応価格 , モード , シフト)

モードは0:MACD 1:SIGNAL です。
MACDの場合クロスを見ることが多いのでシフトも変更の必要があります。
ex.シフト2(2個前の足)は SIGNAL > MACD そして、 シフト1は SIGNAL < MACD となればゴールデンクロスです。

double MACD(int mode,int shift){return( iMACD("",0,12,26,9,0,mode,shift) );}

期間は短期12 長期26 シグナル9が一般的です。

12月26日は第九が演奏される日ですね。



OANDA BEEKS  VPSサーバーを借りよう!!

私はOANDA JAPANのBASICコースをメインで使っています。
理由はやはりサブ口座がたくさん持てること ストップレベル0 1,000通貨です。
欠点としては両建てができない セカンドスワップUSDJPY両方マイナススワップ
といったところでしょうか

OANDAのサーバーはニューヨークにあります。
因みに私の生まれたのもニューヨーク(らしい)です!記憶の範囲ではアメリカ大陸に入ったことはありませんw
そしてBEEKSの売りはなんといってもOANDAサーバーと同じ建物にサーバーがある事です。
最速1msだそうですwわたしのPC i7で関数を呼び出すのに数msかかるのに1msとは何という事でしょうw

しかしアメリカにあるため説明は入会申し込みの一部を除いてすべて英語です。
そしてなぜか支払いはブリティッシュポンド建てw

まあなんとかなるでしょうという事でやってみました。
「OANDA VPS」で検索してOANDAからBEEKSの入口までたどり着きましょう


最初の画面です。日の丸をクリックしましょう。日本語の画面としては最後の画面ですw
下に進みます。



適当に書いていってください。(適当と言っても嘘はダメですよ!)パッケージはブロンズ、OSは2008、Managed VPSサービスはいいえにしました。

最初の難関です。この先への進み方がわかりません。
がめんでアイコンが指に代わるクリッカブルポイントは VISAとPAYPALの上だけです。
VISAを押してみます
どの方法にしますか?左からVISA,VISAデビット、VISAElectron、VISApurchasing,Master,Master デビット う~ん よくわかりません。
取りあえず左から押してみます まずはVISA

そして必要事項を記入します。
さっきも書いた気が・・・
支払い終了のメッセージが届きました!!
完了です!!
メールにも支払い完了ときました!

意外と簡単です。あれ?お金は払ったけどこの先どうするのでしょう?
ログインの仕方などなど全く不明です。
BEEKSからはメールも来ません・・・・
一抹の不安が頭をよぎります










その後
いろいろ調べているとBEEKSのHPにこんな記述がありました。



ご利用までのステップ


数ステップで、VPSにお申し込みいただけます。パッケージを選択し、クレジットカード又はデビットカードを選び、paypalでお支払いいただけます。お支払いが完了いたしますと1時間以内(営業日の場合)にメールにより、ログイン情報をお送りいたします。

「一時間以内(営業日)にメール」???
さきほど支払い完了のメールが来ましたがそれでしょうか?
それとも一時間以内といってもあと30分でメールが来るのでしょうか?
いまニューヨークは午前4時 営業時間の9時か10時になったらメールが来るのでしょうか?

う~ん ふ・あ・ん です(><;)




【EAを作ろう】第十三回 関数を作ろう1 RSI

FX-ONの社長から手書きの手紙を頂戴いたしました。
うれしいものですね♪

関数を作ります。
MT4にはiRSIやiMA,iBands,iMACDなどなど本当に多くのインディケーターが用意されています。
とくにEMAの計算を作らなくていいことは非常に助かるのですが、設定項目の多さに戸惑うことがあります。
RSIはシンプルなオシレーターの中では精度が高いので気に入っています。
まずはこのRSI算出のiRSIを見ていきたいと思います。

iRSI(通貨ペア , 時間軸 , 期間 , 適応価格 , シフト)

通貨ペア
USDJPYやEURUSD等です。
チャートに合わせるときにはSymbol()を使うことになっていますが、
Symbol()を呼び出すのに数ミリ秒かかります。
非公式ですがNULLで代用できます。さらに""(ダブルコーテーション2個)でもOKです。
この非公式なやり方のほうが早くなります。
時間軸
チャートに合わせるときは PERIOD_CURRENT  もしくは0
一分足は              PERIOD_M1            もしくは1
日足は                PERIOD_D1             もしくは1440

設定項目に入れるときは extern ENUM_TIMEFRAMES 定数; 

期間
RSIの期間です。
14か20の使用頻度が多いと思いますが、時間軸によってまちまちです。

適応価格
終値を使うことが多いのですが、下は安値 上は高値などいろいろあるようです
終値      PRICE_CLOSE         もしくは 0
中央値  PRICE_MEDIAN もしくは 4

設定項目に入れるときはextern ENUM_APPLIED_PRICE 定数;

シフト
取得したいバーの位置
0は現在、1は一本前・・・

私の場合通貨ペア:""、時間軸:0、期間:14、適応価格:0、シフト:1がほとんどです。
毎回同じ項目を入れるのは面倒なので

double RSI(){return(iRSI("",0,14,0,1));}

このような関数を使うことが多くあります。
毎回打たなくてもRSI()で呼び出せるからです。
見にくいのでインデントを付けてみます。

double RSI()
  {
  return( iRSI("",0,14,0,1) );
  }

iRSIでもとめた値をreturnに入れて返すだけのシンプルな奴です。

RSI=iRSI("",0,14,0,1);

これじゃダメなのかと声が聞こえてきそうです。
単純にRSIが70を超えた処理、30を下回った処理を行う場合このほうが早いですね。

しかし関数の場合は応用がききます。
RSIの期間を14と20と両方確認したい場合


double RSI(int Period)
  {
  return( iRSI("",0,Period,0,1) );
  }

こうすることで

RSI(14)は期間14のRSIの値、RSI(20)は期間20のRSIの値になります。

さらに、時間軸も変更したいときには

double RSI(int TimeFrame,int Period)
  {
  return( iRSI("",TimeFrame,Period,0,1) );
  }

こうすることでRSI(1,20)は一分足の期間20のRSI
RSI(5,14)は五分足の期間14のRSIなどという使い方もできます。


伝統的な書き方はこちら
double Fast_RSI14 = iRSI(Symbol(),PERIOD_M1,14,PRICE_CLOSE,1);
double Fast_RSI20 = iRSI(Symbol(),PERIOD_M1,20,PRICE_CLOSE,1);
double Slow_RSI14 = iRSI(Symbol(),PERIOD_M5,14,PRICE_CLOSE,1);
double Slow_RSI20 = iRSI(Symbol(),PERIOD_M5,20,PRICE_CLOSE,1);


わたし的にはこうですね
double RSI(int TimeFrame,int Period){return(iRSI("",TimeFrame,Period,0,1));}















【EAを作ろう】第十二回 定数3

また定数に戻るのかというところですが、細かな整理とコピペ関数の作成です。

定数にはintやdoubleやboolなど様々なものがあります。
また設定したい項目はexternやinputを前に着けることでできます。

定数にはもう一つ区別があります。
グローバル定数とローカル定数です。
はじめに宣言する関数はグローバル定数といいEAのどこでも参照することができます。

ところが関数の{}内で宣言されたローカル定数は関数の中でしか参照できません。
関数を出ると消えてしまいます。
ではすべてグローバルで宣言すればいいという話ですが・・・


よく使う関数はファイルにしてあります。
コピペ用ですw


int d;int i;
void OnTick(){}
void Exit()
{ for (i=OrdersTotal()-1; i>=0; i--)
  { d=OrderSelect(i,SELECT_BY_POS);
    d=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),5,clrNONE);
  }
}

これは持っているポジションをすべてクローズする関数です。
保存する時についついコンパイルボタンを押してしまいます。
OnTick()がないと「動かす気有るの?」とエラーが出ます。
そこでダミー void OnTick(){} を入れています。

さて、コピペ用関数 Exit() ですが void Exit() 以下をコピペします。
しかし、定数 i , d の宣言が足りません。
コピー先の先頭にもどって宣言しているかどうかを確認して、
宣言されていない時は貼り付けるのですが面倒です。
そこで!!

void OnTick(){}
void Exit()
{ for (int i=OrdersTotal()-1; i>=0; i--)
  {int d=OrderSelect(i,SELECT_BY_POS);
    d=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),5,clrNONE);
  }
}

こうすれば解決です。今回のiやdの様に関数内でしか使わない時はローカル定数にするといいですね。

また関数内で宣言して値を保持したい時は
static int A=1;のような記述ができます。
使い道は・・・




2016年6月1日水曜日

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

告知と書くとライブハウスか官報のイメージでしょうか

FX-ONに記事を書かせていただいております。
第二回目が掲載されました!

私の文才と知識でどこまで続くのかは
謎ですが精一杯書いていきたいところです。


記事の執筆といいましても、書きたいことを書いて担当さんに送ると
最適な掲載のタイミングで
デザインも考えて掲載していただけるすばらしいシステムです。

応援よろしくお願いします!!



2016年5月31日火曜日

【EAを作ろう】第十一回 シャンデリア・トレーリングを作ろう!

第十回のソースコードの最後の一行が抜けていました。
M氏よりご指摘いただきました。ごめんなさいmm そして、ありがとうございます^^

第十回ではエントリーまで作りました。
今回はシャンデリア・トレーリングです。
実はシャンデリア・トレーリングは死語です。死語というのも死語のような気がしますが・・・
トレーリング・ストップの事なのですがシャンデリア・トレーリングのほうがゴージャスな雰囲気
まさに将来大金持ちになる皆様にふさわしいと思いこちらを愛用しています。

オーダーエントリー時に設定したストップロス、テイクプロフィットに届くのを待つのではなく、
積極的に相場に合わせてストップロスを変更します。
価格が利益獲得方向に進んでいくのに合わせストップロスをスライドさせます。
価格が反転した時にSLに引っかかり終了となります。

バリエーションも多く価格が一定まで上昇した時に発動するタイプ
一定幅でSL幅が変更されるタイプ、時間で幅が狭くなるタイプ
エントリーより長い脚の平均乖離に合わせてSL幅を変更するタイプ

また、リアルタイムでSLを動かすもの、足変更時に動かすもの、価格幅を設定して動かすものなどあります。

extern int UpperLine=70,LowerLine=30,RSIPeriod=20,CTProfit=30,Magic=747;
extern ENUM_APPLIED_PRICE AppliedPrice=0;
extern ENUM_TIMEFRAMES ShortTimeFrames=1;
extern ENUM_TIMEFRAMES LongTimeFrames=5;
double SL,TSL,OTSL;
int d;

void OnTick(){
TS();      
  if(OrdersTotal()==0)  {
    if(RSI(ShortTimeFrames)>UpperLine&&RSI(LongTimeFrames)>UpperLine){EntryShort();}
    if(RSI(ShortTimeFrames)<LowerLine&&RSI(LongTimeFrames)>UpperLine){EntryLong();}
  }
}

double RSI(int Periods){return(iRSI(Symbol(),Periods,RSIPeriod,AppliedPrice,1));}
void EntryLong(){d=OrderSend(Symbol(),OP_BUY,0.1,Ask,0,Ask-CTProfit,0,"Long",Magic,0,clrNONE);}
void EntryShort(){d=OrderSend(Symbol(),OP_SELL,0.1,Bid,0,Bid+CTProfit,0,"Short",Magic,0,clrNONE);}

void TS(){
d=OrderSelect(0,SELECT_BY_POS);
if(OrderType()==0)
 {if(TSL<Close[0]){TSL=Close[0];SL=TSL-CTProfit*Point;}}
else
 {if(TSL>Close[0]){TSL=Close[0];SL=TSL+CTProfit*Point;}}
if(TSL!=OTSL){OTSL=TSL;
d=OrderSelect(0,SELECT_BY_POS);
d=OrderModify(OrderTicket(),OrderOpenPrice(),SL,0,0,clrNONE);}}

今回の変更点は一回ずつ宣言していたdを先頭に
StopLoss,TakeProfitの設定をなくし
OnInitもまるごと削りました。
CTProfitがシャンデリアトレーリングの幅です50以下がよいでしょう。
OnTick()直後にTS();関数を呼び出しています。

OrderSelectで注文を選択します。一本しか発注しない場合でも選択する必要があります。
SELECT_BY_POSはモードです。このモードの場合直前の0は直近にオーダーしたオーダー、1その次は2と順々に増えていきます。オーダーするたびにずれていきます。
SELECT_BY_TICKETにした時はチケット番号で選択できます。

OrderType()はOrderSelect()で選んだポジションのタイプです。0はBUY 1はSELLです。

次の行はTSL定数と現在の価格を比較し利益側に動いたときはTSL、SLを更新しています。
TSLは最新の現在価格、SLはストップロス価格です。
OTSLは一つ前のTSL価格です。TSLが変更された=利益側に価格が動いたかを見ています。

そして再びオーダーを選択し
OrderModifyで価格を変更しています。
OrderTicket()はOrdeSelect()で選んだオーダーのチケット番号
OrderOpenPrice()はOrderSelect()で選んだオーダーのエントリ価格です。
OrderModify(チケット番号、エントリー価格、ストップロス、テイクプロフィット、発注期限、矢印)です。

関数紹介になってきましたねw














2016年5月28日土曜日

サーバー対決 最終報告 お名前.comUS(OnTimer) vs お名前.com東京 vs 三条 vs FX-On(フロント) vs 全ティック vs コントロールP vs 初値

AMSER好調!三か月の実現損益が二位になりました。稼働一ケ月ですので三分の一の期間で二位です。三倍速です!赤いEAです!ムフフw
少し環境の変化があります。
環境の変化と言っても引越しに伴うブログ終了ではありません
①自宅のXPのグラフィックボードのリニアファンがずれてノイズを出しています
一年ほど前からなのですが、そろそろ限界です。PC廃棄を決めました><;10年間ありがとう SSDのみケースに入れてノートにつなげます。
②自宅サーバーもやめてしまえば部屋と机が広くなります。
マンション光なので遅延、不動など不安定な事も要因の一つです。時代はVPSですね。
③お名前.COMよりメールが来ました。
「お試しのUSサーバの二週間が過ぎました。データは消しました。あしからず」的なメールです。
「お試し期間残り何日です。契約しませんか?」とメールが来れば契約するつもりだったのですが・・・御縁がなかったのでしょう お世話様ですw

そこで最終サーバー比較の最終報告です。
US(お名前.COM US OANDA) OnTimer
東京(お名前.COM 日本 OANDA)
三条(自宅 OANDA WIN7 ロースペック)
FX-ON(OANDA 詳細不明)
そしてバックテスト三兄弟です。

前回はUSが最速、続いて三条、東京でした。FX-ONは今回が初めてです。


今回はUSにOnTimerを使用しています。
ワンティック稼ごう計画ですw

結果ですがUSが最低でした。ほとんど1秒遅れています。早くなったのは0です。
OnTimerだめですね。
一番欠けが少なかったのは三条。FX-ONとUSの欠けが同じです。
FX-ONはお名前.COMのUSサーバーを使用している可能性が高いですねw

バックテストはXPパソコンでとったのですがAoE専用でMT4をあまり使ってなかったのでオレンジの部分の欠落がありました><;
始値はクローズがすべて遅れています。理屈で考えるとそりゃそうです。
全ティックとコントロールポイントは全く同じでした。
全ティックは三条に近いデーターでしたのでこのEAに関しては信頼性は高いですね。

USを考えていたのですが上記の悲しいストーリーからBEEKSにチャレンジしてみようと思います。

今回は自宅>東京>FX-ON>US(OnTimer)です。
OnTimerを使わなければUS>自宅(不安定要因あり)>>東京でしょうね。