
~目次~
FXの自動通知システムを作ろうと思った訳
今日は、FXの自動通知システムを作ってみたので紹介させてもらいたい。
なぜ、このようなシステムを作ったか。
それは、私がFXで50万円ほど赤字になっているからだ。。。((+_+))
大赤字になった理由としては以下だと思う。
- 常にチャートを見ているわけではないので、買タイミング、売タイミングが合わず、ずるずるとポジションを持ち続け、ロスカットされてしまう。
- 新型コロナのため、チャートが荒れに荒れて、訳が分からなくなったため。
- チャートをずっと見ていると、縦軸の幅に惑わされてしまい、変なタイミングでポジションを持ってしまう。
まぁ、一生懸命勉強したわけでもなく、にわかでやっていたのでしょうがない。。。
諦めよう。
でも、これからは確実に勝ちたい!そう思って、前々から通知システムは考えていた。
出来れば、自動売買システムまで作り上げたかったが、今は知識と時間がないため、
GAS(Google Apps Script)とTwitterのAPIを利用して、自動ツイートするシステムを構築するにとどめておく。
そのアカウントは「為替通知」です。まんまですな(笑)
ツイートする条件とツイート内容は以下だ。
- 1分間で8pips以上の動きがあった時(EURは16pips、GBPは18pips、AUDは10pips)
→ ★急上昇中/★急下降中 〇〇 元レート→現レート - 1分間で4pips以上の動きがあった時(EURは8pips、GBPは9pips、AUDは5pips)
→ 上昇中/下降中 〇〇:元レート→現レート
(2020年9月18日更新)
対象通貨は以下だ。
- USDJPY
- EURJPY
- GBPJPY
- AUDJPY
対象通貨が少ないが、データ取得元が心もとないので勘弁してほしい。
それでも、主要4か国は入っているから、まぁ良いかな~?と。
ちなみに。
動きのない日中でもちゃんとツイートしてくれた( *´艸`)
(2020年12月17日更新)
たまに前回の値が0になっている通知が来るバグを解消。
0の時は、スルーするように対応しました。

作り方
作り方は、結構簡単だった。
- TwitterのAPIの使用申請をする
- GASで通貨レートを1分おきに取得する
- 保持していた情報と比べて、10pips以上の差が出たらツイートする
言葉に表すと、これだけだ。
細かな条件などはもっと煮詰めていって、通知がされた瞬間に売買をすれば、
勝率8割くらいいくように調整したい。
投資家の皆さん。
こんなシステムを作ってみたので、良いアイデアがありましたら、教えてくださいませ。
何分間で〇pips動いたら狙い目だよ!とか。。。
それを為替通知くんに覚えこませたいです(*’ω’*)
「為替通知」をフォローして、リツイートいただいても良いですし、
こちらのサイトにコメントいただいてもOKです。
ご協力をお願いいたします。
最後に、スプレッドシートの画像と、GASのコードを載せておきます。
TwitterのAPIの仕様が変わりまくっているせいで、そこに苦労したが、
そこさえ乗り越えられれば、あとは自由だ(^^♪

// アクティブシートを取得 const activeSheet = SpreadsheetApp.getActiveSheet(); // 為替情報を取得 function callExchangeAPI() { let now = new Date(), url = "https://www.gaitameonline.com/rateaj/getrate", response = UrlFetchApp.fetch(url), content = response.getContentText(), fx = JSON.parse(content); fx.date = now; // 前回のデータを移動 activeSheet.getRange('B8:Q23').copyTo(activeSheet.getRange('B9:Q24')) // 取得した情報をセット setData(fx); } // 取得した情報をセット function setData(fx) { const fxCnt = fx.quotes.length; for (let i=0; i < fxCnt; i++) { const ret = fx.quotes[i]; switch (ret.currencyPairCode) { case 'USDJPY': inputCells(ret, 2); autoTweet(ret, 2, 0.04, 'USDJPY'); break; case 'EURJPY': inputCells(ret, 4); autoTweet(ret, 4, 0.08, 'EURJPY'); break; case 'GBPJPY': inputCells(ret, 6); autoTweet(ret, 6, 0.09, 'GBPJPY'); break; case 'AUDJPY': inputCells(ret, 8); autoTweet(ret, 8, 0.05, 'AUDJPY'); break; } } } function inputCells(ret, col) { activeSheet.getRange(4,col).setValue(ret.open); if (activeSheet.getRange(2,col).getValue() < ret.high) { activeSheet.getRange(2,col).setValue(ret.high); } activeSheet.getRange(5,col).setValue(ret.high); if (activeSheet.getRange(3,col).getValue() > ret.low) { activeSheet.getRange(3,col).setValue(ret.low); } activeSheet.getRange(6,col).setValue(ret.low); activeSheet.getRange(8,col).setValue(ret.bid); activeSheet.getRange(8,col+1).setValue(ret.ask); } function autoTweet(ret, col, interval, CurrencyPair) { const before1minutesBit = Number(activeSheet.getRange(9,col).getValue()); if (before1minutesBit !== 0) { const nowBit = Number(ret.bid); const doubleInterval = Number(interval * 2); if (before1minutesBit - nowBit > doubleInterval) { tweet('★急下降中:'+ CurrencyPair + '\n' + before1minutesBit + '→' + ret.bid); } else if (before1minutesBit - nowBit < Number('-' + doubleInterval)) { tweet('★急上昇中:'+ CurrencyPair + '\n' + before1minutesBit + '→' + ret.bid); } else if (before1minutesBit - nowBit > Number(interval)) { tweet('下降:' + CurrencyPair + '\n' + before1minutesBit + '→' + ret.bid); } else if (before1minutesBit - nowBit < Number('-' + interval)) { tweet('上昇:' + CurrencyPair + '\n' + before1minutesBit + '→' + ret.bid); } } } // 認証用のインスタンス const twitter = TwitterWebService.getInstance( "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ); // 認証 function authorize(){ twitter.authorize(); } //認証を解除する function reset() { twitter.reset(); } //認証後のコールバック function authCallback(request) { return twitter.authCallback(request); } // Twitterへの投稿 function tweet(msg){ const service = twitter.getService(); const response = service.fetch("https://api.twitter.com/1.1/statuses/update.json", { method: "post", payload: { status: msg } }); }
まとめ
GASとTwitterを連携させるといろいろできそう(*’ω’*)
今回は、為替の動きがあった時に通知するシステムを作ってみたが便利そうなものがあったら、また作ってみようと思う。
追伸。
結構フォローしてくれている人が増えつつある。
この為替通知を利用して、利益を上げていってほしいと思う。