Sasahiko’s diary

FX自動売買EA開発者/GOLDでの取引をLIVE配信中

twitterのbotを作ろう①

概要

この記事では,twitter bot実装の概要を解説します。

bot作成は自己責任となります。ご了承ください。

 

Twitter Bot って何?

Twitter上で動作するrobotのことをtwitter botと呼ぶようです。

Twitterを真剣に運用しようと思うと,すごく手間がかかります。

その大変なお仕事をすべてロボットに代わってもらうことが目的です。

 

Twitter Botでは何ができるの?

・指定日時での投稿(定期的な投稿も可能)

・自動でのフォロー,フォローバック

・キーワードに合致する投稿に対する反応

・自動リプライ

他にもいろいろできるみたいですね。

 

Botを自分で実装するには何が必要??

1.Pythonの実行環境

2.Twitter開発者用アカウント

3.Pythonでの実装スキル(ほぼコピペ)

次回の記事からはbot実装へ向けて1つずつ解説をしていきます!!

 

まとめ

今回はtwitter bot作成の概要を解説しました!

次回は実際にbotを実装します!

Windows10/Anaconda3/Pythonでの実装となります。

完全初心者用の記事はまた改めて作成します!

 

twitter笹彦 fx自動売買EA開発者 (@trader_brothers) | Twitter

Instagramhttps://www.instagram.com/fxtrader_sasahiko/

YouTube笹彦(FX Trader Sasahiko) - YouTube

tiktokhttps://www.tiktok.com/@fx_eatradersasahiko

FX自動売買EAを実装してみよう10(RSI ver1)

概要

この記事では,FX自動売買初心者向けに実装の解説します。

EAの実装をしたことない方から基本を振り返りたい方へ向けた記事となります。

※FXでの取引は自己責任となります。ご了承ください。

 

FX自動売買の振り返り

FX自動売買の始め方について数本の記事で解説をしてきました。

FX自動売買EAの始め方(初心者用) - Sasahiko’s diary

最低限のコード実装について(FX自動売買EAを実装してみよう2(最短コード実装) - Sasahiko’s diary)の解説やバックテストの見方について解説をしました。

今回の記事ではRSIを使ったEAの実装をします!

 

RSIって何?

RSIとはRelative Strength Indexの略称であり,売買の相対的な強さの指標です。このRSIは相場の過熱感を表し,「売られすぎ」や「買われすぎ」を定量的に表します。

RSIを使用する際には,RSIが70%以上であれば買われすぎなので売り注文,30%以下であれば売られすぎなので買い注文と利用するそうです。

 

今回実装したいコード

注文条件:RSIが30%以下&保持ポジション0

決済条件:RSIが50%以上&保持ポジション1

 

実装!
変数定義:double R; (RSIのことです。)
ティックごとにRSIの更新:
R = iRSI(NULL,PERIOD_M15,14,PRICE_CLOSE,1)

注文条件:R<30 && OrdersTotal()==0→Ask

決済条件:50<R && OrdersTotal()==1

実装したEAは以下です。

 

#property copyright "Copyright 2021, Sasahiko 2021.08.05"
#define MAGIC 0001
int Ticket = 0;
double R, lots = 0.1;
void OnTick(){
R = iRSI(NULL,PERIOD_M15,14,PRICE_CLOSE,1);
if(R<30 && OrdersTotal()==0){

Ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,0,0,0,NULL,MAGIC);}
if(50<R && OrdersTotal()==1){int _ = OrderClose(Ticket,lots,Bid,20);}}

 

取引結果

取引結果を以下に示します。普通に負けですが,EAを改善することで利益を上げられるよう,次回記事で解説をします!

f:id:Sasahiko:20210805073627p:plain

以上,RSIの実装でした!!

お疲れ様でした!

 

まとめ

今回はRSIの実装を解説しました!

次回はRSI利用EAの改善について解説します!

 

twitter笹彦 fx自動売買EA開発者 (@trader_brothers) | Twitter

Instagramhttps://www.instagram.com/fxtrader_sasahiko/

YouTube笹彦(FX Trader Sasahiko) - YouTube

tiktokhttps://www.tiktok.com/@fx_eatradersasahiko

FX自動売買EAを実装してみよう9(MACD ver3)

概要

この記事では,FX自動売買初心者向けに実装の解説します。

EAの実装をしたことない方から基本を振り返りたい方へ向けた記事となります。

※FXでの取引は自己責任となります。ご了承ください。

 

FX自動売買の振り返り

FX自動売買の始め方について数本の記事で解説をしてきました。

FX自動売買EAの始め方(初心者用) - Sasahiko’s diary

最低限のコード実装について(FX自動売買EAを実装してみよう2(最短コード実装) - Sasahiko’s diary)の解説やバックテストの見方について解説をしました。

今回の記事ではMACDを使ったEAを改善していきます!

 

前回に実装したコード

買い注文条件:MACD<0&&MACDとシグナルがゴールデンクロス&保持ポジション0

決済条件:MACDがシグナルを下回った&保持ポジション1

(売り注文も同様に行う)

 

前回のコードの取引結果(USD/JPY)

取引結果を以下に示します。前回よりも取引回数が増えた分,負け分が大きくなってしまいました。

f:id:Sasahiko:20210803083416p:plain

 

前回のコードの問題点

前回のコードでは,MACDの正負とクロスのみで判定をしていました。

しかし,MACDとシグナルが均衡している状況では,注文と利確を繰り返すことになります。(実際,上図ではそのようになっている。)

 

今回実装するコード

前回コードとの相違点は以下となります。

1.決済条件をクロスではなく,金額で行う

2.注文ロット数はMACDの変化量と比例させる

3.マーチンナンピンを入れてみる

上記を考慮したコードは以下になります。

#property copyright "Copyright 2021, Sasahiko 2021.07.21"
#define MAGIC 0001
int _,f=0, Ticket = 0;
double lots = 10;
double S1,S2,M1,M2,ask,bid,v1,v2,t,s;

void OnTick(){
ask = MarketInfo(Symbol(),MODE_ASK);
bid = MarketInfo(Symbol(),MODE_BID);
S1 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
S2 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_SIGNAL,2);
M1 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
M2 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_MAIN,2);
s = fabs(M1-M2);
if(f==0){
if(S1<M1 &&M1<0 &&M2<S2){
t=TimeCurrent();
v1=ask;
f+=1;
Ticket = OrderSend(Symbol(),OP_BUY,lots*s,Ask,0,0,0,NULL,MAGIC);
}
if(0<M1 &&M1<S1 &&S2<M2){
t=TimeCurrent();
v1=bid;
f-=1;
Ticket = OrderSend(Symbol(),OP_SELL,lots*s,Bid,0,0,0,NULL,MAGIC);
}
}
if(0<f){
if(f<5&&int(TimeCurrent()-t)>60*15&& S1<M1&& M1<0&& M2<S2){
t=TimeCurrent();
v1+=ask;
f+=1;
Ticket = OrderSend(Symbol(),OP_BUY,lots*s*f,Ask,0,0,0,NULL,MAGIC);
}
if(f*bid-v1<-5.0||0.1<f*bid-v1){f=0;Close_all();}
}
if(f<0){
if(-5<f&&int(TimeCurrent()-t)>60*15&&0<M1 &&M1<S1 &&S2<M2){
t=TimeCurrent();
v1+=bid;
f-=1;
Ticket = OrderSend(Symbol(),OP_SELL,lots*s*(-f),Bid,0,0,0,NULL,MAGIC);
}
if(v1+f*ask<-5.0||0.1<v1+f*ask){f=0;Close_all();}
}
}


void Close_all(){
for(int i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(i,0) == True){
_ = OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),20);
}
}
}

 

バックテスト結果

f:id:Sasahiko:20210804084622p:plain

やはり,負けてしまいますね…

ネットを調べてみると,MACD単体ではきついようです…

もし,良い方法があれば教えてください!

 

以上,MACDの実装でした!!

お疲れ様でした!

 

まとめ

今回はMACDの実装改善に挑戦しました!

やはり損失ばかりになってしまいました…

次回は他のコードを試していきます!

 

twitter笹彦 fx自動売買EA開発者 (@trader_brothers) | Twitter

Instagramhttps://www.instagram.com/fxtrader_sasahiko/

YouTube笹彦(FX Trader Sasahiko) - YouTube

tiktokhttps://www.tiktok.com/@fx_eatradersasahiko

FX自動売買EAを実装してみよう8(MACD ver2)

概要

この記事では,FX自動売買初心者向けに実装の解説します。

EAの実装をしたことない方から基本を振り返りたい方へ向けた記事となります。

※FXでの取引は自己責任となります。ご了承ください。

 

FX自動売買の振り返り

FX自動売買の始め方について数本の記事で解説をしてきました。

FX自動売買EAの始め方(初心者用) - Sasahiko’s diary

最低限のコード実装について(FX自動売買EAを実装してみよう2(最短コード実装) - Sasahiko’s diary)の解説やバックテストの見方について解説をしました。

今回の記事ではMACDを使ったEAを改善していきます!

 

 

前回に実装したコード

注文条件:MACDラインがシグナルラインを超えた&保持ポジション0

決済条件:MACDラインがシグナルラインを下回った&保持ポジション1

 

前回のコードの取引結果(USD/JPY)

取引結果を以下に示します。普通に負けてますね。

f:id:Sasahiko:20210803083413p:plain

 

今回で実装したいコード

買い注文条件:MACD<0&&MACDとシグナルがゴールデンクロス&保持ポジション0

決済条件:MACDがシグナルを下回った&保持ポジション1

(売り注文も同様に行う)

#property copyright "Copyright 2021, Sasahiko 2021.07.21"
#define MAGIC 0001
int _,f=0, Ticket = 0;
double lots = 0.1;
double S1,S2,M1,M2;

void OnTick(){
S1 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
S2 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_SIGNAL,2);
M1 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
M2 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_MAIN,2);
if(f==0){if(S1<M1 &&M1<0 &&M2<S2){f=1;
Ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,0,0,0,NULL,MAGIC);}
if(0<M1 &&M1<S1 &&S2<M2){f=-1;

Ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,0,0,0,NULL,MAGIC);}}
if*1{f=0;Close_all();}}

void Close_all(){for(int i=OrdersTotal()-1;i>=0;i--){if(OrderSelect(i,0) == True){
_ = OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),20);}}}

 

今回のコードの取引結果(USD/JPY)

取引結果を以下に示します。前回よりも取引回数が増えた分,負け分が大きくなってしまいました。負けた理由の考察と改善の検討は次回記事で行います!

f:id:Sasahiko:20210803083416p:plain

以上,MACDの実装でした!!

お疲れ様でした!

 

まとめ

今回はMACDの実装改善に挑戦しました!

まだまだ損失ばかりですが,次回記事ではもう少し改善できるよう頑張ります!

 

twitter笹彦 fx自動売買EA開発者 (@trader_brothers) | Twitter

Instagramhttps://www.instagram.com/fxtrader_sasahiko/

YouTube笹彦(FX Trader Sasahiko) - YouTube

tiktokhttps://www.tiktok.com/@fx_eatradersasahiko

*1:f==1&&M1<S1&&S2<M2)||(f==-1&&S1<M1&&M2<S2

VPS環境を整えよう1

VPSって何?

VPSとはVertual Private Serverの略であり,ネット上でパソコンを貸し出すサービスのようなものです。FX自動売買で自分のパソコンを使う場合,24時間インターネットにつなぎっぱなしになります。電気代やネットの安定を考えると,VPSを利用する方が良いでしょう。

VPS契約はすべて自己責任で行ってください。

 

どのVPSを使えばよいの?

世の中に多くのVPS提供会社があり,各企業が多様なサービスを行っています。

VPSは自分に必要十分なスペックを自分で選択する必要があります。

選択を誤ると「せっかく良いスペックなのにもったいない」や「スペックが足りなくて契約しなおし」ということがあります。

パソコンに詳しくない方はよく調べるor詳しい人に相談しましょう。

 

笹彦が開発したAMANOGAWA利用者へ

我々の自動売買EAをご検討いただきありがとうございます。

AMANOGAWAを利用する場合には,Windowsであればだいたい何でも構いません。

まずはABLENETのVPS契約方法をご紹介します。

所要時間5分~10分です。

 

1.ABLENETのサイトへ

以下のリンクよりABLENETサイトへ行きます。

ABLENET VPS 選べるOS WindowsServerオプション

 

2.VPSを選択

f:id:Sasahiko:20210729083617p:plain

 

3.「Win1」を選択

f:id:Sasahiko:20210729083622p:plain

 

3.もう一度「win1」を選択

f:id:Sasahiko:20210729083626p:plain

 

4.SSD60GBとクレジットカード(使用期間あり)を選択

f:id:Sasahiko:20210729083630p:plain

 

5.すべての欄にチェックを入れて「契約期間の選択へ進む」をクリック

f:id:Sasahiko:20210729083601p:plain

 

6.期間はどれを選んでもよいですが,長い期間を選択した方がお得になります。

サーバー管理以外での接続数分だけRDSの数字を増やしてください!

f:id:Sasahiko:20210729083605p:plain

 

7.申込内容を確認し,下2箇所をチェック

f:id:Sasahiko:20210729084243p:plain

 

8.個人情報を入力

f:id:Sasahiko:20210729083613p:plain

後は同意していけば,契約が完了します。

VPSへの接続方法は以下のサイトに掲載しています。

WindowsServer リモートデスクトップ設定|ABLENET® VPS エイブルネット・ホスティング

 

以上でVPSサーバーの契約が完了しました!!!

お疲れ様でした!!

 

twitter笹彦 fx自動売買EA開発者 (@trader_brothers) | Twitter

Instagramhttps://www.instagram.com/fxtrader_sasahiko/

YouTube笹彦(FX Trader Sasahiko) - YouTube

tiktokhttps://www.tiktok.com/@fx_eatradersasahiko

FX自動売買EAを実装してみよう7(MACD ver1)

概要

この記事では,FX自動売買初心者向けに実装の解説します。

EAの実装をしたことない方から基本を振り返りたい方へ向けた記事となります。

※FXでの取引は自己責任となります。ご了承ください。

 

FX自動売買の振り返り

FX自動売買の始め方について数本の記事で解説をしてきました。

FX自動売買EAの始め方(初心者用) - Sasahiko’s diary

最低限のコード実装について(FX自動売買EAを実装してみよう2(最短コード実装) - Sasahiko’s diary)の解説やバックテストの見方について解説をしました。

今回の記事ではMACDを使ったEAの実装をします!

 

MACDって何?

MACDとはMoving Average Convergence Divergenceの略称であり,重みづけ移動平均のようなものです。移動平均(MA)では指定した期間で単純に平均をとりますが,MACDでは直近の数値を重視して平均をとります。

MACDを使用する際には,敏感に動くMACDラインと緩やかに動くシグナルラインを合わせて使いことが多いです。MACDラインがシグナルラインを超えたとき(ゴールデンクロスのとき)買い注文で入ることが多いようですね!

 

今回実装したいコード

注文条件:MACDラインがシグナルラインを超えた&保持ポジション0

決済条件:MACDラインがシグナルラインを下回った&保持ポジション1

 

実装!
変数定義:double S1,M1; (シグナルとMACDのことです。)
ティックごとに移動平均の更新:
S1 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
M1 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_MAIN,1);

注文条件:S1<M1 && OrdersTotal()==0→Ask

決済条件:M1<S1 && OrdersTotal()==1

実装したEAは以下です。

 

#property copyright "Copyright 2021, Sasahiko 2021.07.30"
#define MAGIC 0001
int Ticket = 0;
double lots = 0.1;
double S1,M1;

void OnTick(){
S1 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
M1 = iMACD(NULL,PERIOD_M15,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
if(S1<M1 && OrdersTotal()==0){Ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,0,0,0,NULL,MAGIC);}
if(M1<S1 && OrdersTotal()==1){int _ = OrderClose(Ticket,lots,Bid,20);}}

 

取引結果

取引結果を以下に示します。普通に大負けですが,EAを改善することで利益を上げられるよう,次回記事で解説をします!

f:id:Sasahiko:20210730075407p:plain

 

以上,MACDの実装でした!!

お疲れ様でした!

 

まとめ

今回はMACDの実装を解説しました!

次回はMACD利用EAの改善について解説します!

 

twitter笹彦 fx自動売買EA開発者 (@trader_brothers) | Twitter

Instagramhttps://www.instagram.com/fxtrader_sasahiko/

YouTube笹彦(FX Trader Sasahiko) - YouTube

tiktokhttps://www.tiktok.com/@fx_eatradersasahiko

FX自動売買EAを実装してみよう6(移動平均ver2)

概要

この記事では,FX自動売買初心者向けに実装の解説します。

EAの実装をしたことない方から基本を振り返りたい方へ向けた記事となります。

※FXでの取引は自己責任となります。ご了承ください。

 

FX自動売買の振り返り

FX自動売買の始め方について数本の記事で解説をしてきました。

FX自動売買EAの始め方(初心者用) - Sasahiko’s diary

前回の記事では移動平均を使ったEAの実装をしました!

ただ,EAを現在価格のクロスのみで判断していたため,かなり負けていましたね!

今回の記事ではもう少しEAを改善していきたいと思います!

 

前回コードの振り返り

#property copyright "Copyright 2021, Sasahiko 2021.07.21"
#define MAGIC_NUMBER 0001
double lots = 0.1;
int Ticket = 0, flag=0, _;
double ma;

void OnTick(){
ma=iMA(NULL,0,12,6,MODE_SMA,PRICE_CLOSE,0);
if(Open[1]<ma && ma<Close[1] && OrdersTotal()==0){
Ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,0,0,0,NULL,MAGIC_NUMBER);
flag = 1;}
if(Close[1]<ma && ma<Open[1] && OrdersTotal()==0){
Ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,0,0,0,NULL,MAGIC_NUMBER);
flag = -1;}
if(Close[1]<ma && ma<Open[1] && flag == 1){
_ = OrderClose(Ticket,lots,Bid,20);}
if(Open[1]<ma && ma<Close[1] && flag == -1){
_ = OrderClose(Ticket,lots,Ask,20);}}

買いのときはflag=1, 売りのときはflag=-1として決済判断に使用しています。

 

移動平均の使い方

移動平均を用いたEAを作成する際には以下の二種類の利用方法が主だと思います。

1.複数の移動平均線の関係性を利用する

2.移動平均線同士またはロウソクと移動平均のクロスを利用する

クロスを利用するケースが多いと思いますが,今回は1番のほうを実装していきます。

 

今回のポイント

1.3本の移動平均を利用(5時間,15時間,50時間)
ma1=iMA(NULL,PERIOD_H1,5 ,1,MODE_SMA,PRICE_CLOSE,0);
ma2=iMA(NULL,PERIOD_H1,15,1,MODE_SMA,PRICE_CLOSE,0);
ma3=iMA(NULL,PERIOD_H1,50,1,MODE_SMA,PRICE_CLOSE,0);

2.上記3本が順番に並んだ時に注文
if(ma3<ma2 && ma2<ma1){買い注文}
if(ma1<ma2 && ma2<ma3){売り注文}

3.順番が崩れたら決済

今回は決済用の関数を作成しました。
void Close_all(){

for(int i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(i,0) == True){

_ = OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),20);}}

 

今回実装したコード

#property copyright "Copyright 2021, Sasahiko 2021.07.21"
#define MAGIC_NUMBER 0001
double lots = 0.1;
int Ticket = 0, bf, sf, flag=0, _;
double ma1,ma2,ma3;

void OnTick(){
ma1=iMA(NULL,PERIOD_H1,5 ,1,MODE_SMA,PRICE_CLOSE,0);
ma2=iMA(NULL,PERIOD_H1,15,1,MODE_SMA,PRICE_CLOSE,0);
ma3=iMA(NULL,PERIOD_H1,50,1,MODE_SMA,PRICE_CLOSE,0);
if(ma3<ma2 && ma2<ma1){bf=1;}else {bf=0;}
if(ma1<ma2 && ma2<ma3){sf=1;}else {sf=0;}
if(bf==1 && OrdersTotal()==0){Ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,0,0,0,NULL,MAGIC_NUMBER);flag = 1;}
if(sf==1 && OrdersTotal()==0){Ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,0,0,0,NULL,MAGIC_NUMBER);flag = -1;}
if*1Close_all();}

void Close_all(){for(int i=OrdersTotal()-1;i>=0;i--){if(OrderSelect(i,0) == True){_ = OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),20);}}}

 

バックテスト結果

ちなみにバックテスト時にはビジュアルモードにチェックをすると取引の動きが見やすいです。遅くなるのでEAの利益よりも実装を確認するときに使います。

f:id:Sasahiko:20210724113535p:plain

前回記事よりは良くなりましたね!!

 

以上,移動平均利用EAの実装でした!!

お疲れ様でした!

 

まとめ

今回は移動平均EAを改善しました!

次回も何か実装しようと思います!

 

twitter笹彦 fx自動売買EA開発者 (@trader_brothers) | Twitter

Instagramhttps://www.instagram.com/fxtrader_sasahiko/

YouTube笹彦(FX Trader Sasahiko) - YouTube

tiktokhttps://www.tiktok.com/@fx_eatradersasahiko

*1:bf==0 && flag == 1)||(sf==0 && flag == -1