FX 移動平均のクロスオーバー取引 MA(移動平均線)によるFX取引のバックテストレビュー
米国Futures Truth社の『The Ultimate Trading Guide』邦訳『究極のトレーディングガイド』という本によると長らく機能し続ける堅牢なシステムは5つの仕組みが含まれてるそうです。
今回は5つの仕組みの一つ
・移動平均のクロスオーバー
を利用したバックテスト。
『究極のトレーディングガイド』
過去記事
移動平均のクロスオーバー取引
先に謝っておきます。本を最後まで読んでないので今回の方法は本に書かれていた方法と違うと思います。
といいますか移動平均のクロスオーバーの所を一切読んでないので本ブログ記事は独自のロジックですw
文章だけで判断していますが移動平均のクロスオーバーって事はMAのゴールデンクロス時に買いでデットクロス時には売りって事なのかと考えます。
FXの教科書的な本をみると必ずのっている手法で一番最初に勉強する事になるのかなーと。
移動平均線を利用した手法の基本!移動平均線クロスオーバー
手法としてはゴールデンクロス時に買い、デットクロス時に売りですが単純な方法では勝つのは難しいと考えます。
ダマし回避の方法として3本の移動平均線を利用するのがベターかな。
方法としては短期、中期、長期の3本の移動平均線を利用する。
エントリーは短期と中期で行うのですが、長期の移動平均線を利用してダマしを回避。
具体的には買いで入る時は短期と中期がゴールデンクロスした時に長期よりも上の場合にエントリーする。
売りで入る時は短期と中期がデットクロスした時に長期がよりも下を確認してエントリーする。
こんな感じ
ダマしとして長期足を判定に入れる事でトレンド方向の時にのみにエントリーする事になり無駄な負けを減らせると考えます。
少し調べてみたら同じ事を書いてるサイトがありました。
内容は殆ど同じですが参考になります。
プログラム構築 移動平均線クロスオーバー
仮説が出来たので早速プログラム書いてみました。
移動平均線はMT4の初期から入っておりメソッドもあるのでiMAで簡単に利用できます。
三本必要なので以下の様な感じになります。
参考プログラムコード
extern int ma1_set = 5; extern int ma2_set = 20; extern int ma3_set = 40; extern int modoriashi = 1; double ma1 = iMA(NULL,0,ma1_set,0,MODE_SMA,PRICE_CLOSE,modoriashi); double ma2 = iMA(NULL,0,ma2_set,0,MODE_SMA,PRICE_CLOSE,modoriashi); double ma3 = iMA(NULL,0,ma3_set,0,MODE_SMA,PRICE_CLOSE,modoriashi); double ma1_1 = iMA(NULL,0,ma1_set,0,MODE_SMA,PRICE_CLOSE,modoriashi + 1); double ma2_1 = iMA(NULL,0,ma2_set,0,MODE_SMA,PRICE_CLOSE,modoriashi + 1); double ma3_1 = iMA(NULL,0,ma3_set,0,MODE_SMA,PRICE_CLOSE,modoriashi + 1);
こんな感じで後はゴールデンクロスなのかデットクロスなのかを判断してやればOK
FX 移動平均のクロスオーバーのバックテスト結果
結論から言うと利益は出ると思います。
決裁方法としては
1, 逆指値、指値決済
2, 反対側のクロスが出た時に決済
3, トレーリングストップ
があるかと考えます。
※全て公開するとのは手間なので今回は1の逆指値、指値決済の結果から。
バックテスト期間及び条件
通貨ペア : USDJPY
時間 1H(1時間)
ヒストリカルデータ Dukascopy
期間 2014/1/1 - 2018/12/30 5年程
エントリーロットは0.01lot固定
バックテスト結果
純益 337.47 総利益 1235.45 総損失 -897.98
プロフィットファクタ 1.38 期待利得 0.63
絶対ドローダウン 100.21 最大ドローダウン 104.51 (1.04%) 相対ドローダウン 1.04% (104.51)
一応綺麗な右肩上がり。
懸念点
MAの期間をどうするか問題。
MAの期間ですが一応ある程度決まった数値はあるのですが殆どの人がこの期間を採用しているとか無い気がします。
以下サイトからの引用になりますが短期派、中期派、長期派と見ている移動平均線の期間は違うのかと。
短期派(日足) 「5・10・25」「5・20・40」
中期派(日足) 「5・25・75」「20・40・200」「25・75・200」
長期派(週足) 「13・26・52」
個人的には1時間、4時間足でエントリーを考えいるので短期又は中期の設定になるかと考えています。
この辺りはバックテストなどしてアタリを見つけていくしかないのかもしれません。
その場合は過度な最適化を行うとダメな気がするので、程よく利益が出る期間を調べていくと良いかもしれません。
バイナリ検証案件 RD-Comboのバイナリーオプション勝率 自動売買EA制作 バイナリーオプションサインツール無料開発案件
とあるバイナリーオプションのEAのバックテスト検証内容ご紹介。
バックテストしたEA名などはお伝え出来ないのですがインジの中身はRD-Comboというインジそのままだったって話。
バイナリーオプション用のインジゲーターのバックテスト検証依頼を頂きまました。
インジゲーターとしてはサインツールで逆張りエントリーのサインが出たら次足エントリー
マーチンは2回までで勝率97%とうたっているもの。
面白い事に頂いたインジゲータのファイルにはEA4とMQ4の両方のファイルが入っています。
通常はEA4だけなので何のインジゲータが使われているのか分かりませんし、設定なども分からないので気にしません。
バックテストしてはiCustomで数値やサインの確認が出来ればバックテスト出来るので気にしないってのが本音でしょうか。
バックテストした結果を確認して成果が良い場合に初めてどんなロジック組み込まれているのか気にし始めますw
まぁ今回はMq4ファイル入っているし直接このMq4ファイル内に検証ロジック書いて、データ取ればいいかーって事で検証しました。
検証ロジック自体は難しくなかったのですが、Mq4ファイルのロジックの書き方が面白いといいますか、よくこんなロジック思いついたーって感じの内容でした。
この時点ではRD-Comboの事は全く知らないので、すげーなーって関心していた感じです。
バックテスト完了 勝率 57%
悪くない数値です。
全てエントリーした場合57%前後に収まるので、時間帯単位でみると特定の時間帯などは61%前後出ているので優秀な部類に入ると考えています。
エントリー回数も結構あったのでねー
依頼頂いた方に諸々報告して終了したのですが、ここ数日このロジックが気にはなっていました。
で本日ソースコードの検索したらヒット。
RD-Comboだった話です。
※RD-Comboの特徴のサブウィンドウの表示は消され、ソースからもその表示は消されていたので全く気が付いていませんでした。
RD-Combo とは
RD-Comboとは、オシレーター系のインジケーターです。
オシレーター系のインジケーターなので、相場の売られすぎ、買われすぎがわかる指標になっています。
RD-Comboは、既存のMT4には入っていないのですが、意外とバイナリーオプションで人気のあるインジケーターです。
オシレーター系のインジケーターなので、主に逆張りトレードに使われます。
エントリーロジックも上記ブログで書かれている
緑のヒストグラムが2本連続形成されたら、次の足で「Lowエントリー」をします。
赤のヒストグラムが2本連続形成されたら、次の足で「Highエントリー」をします。
このまんま。
エントリー箇所のキャプチャー
それ以外のインジは一切入っていませんでした。
詳細を書く事が出来ませんがこれを販売していた方は相当な高額商品で販売していましたので何かほかに入ってないかなーと細かく見てみましたがRD-Comboのみw
バイナリーオプション用に矢印の表記とエントリー結果が分かるような感じにはなっていましたが、エントリー自体には何の工夫もありませんでした。
未検証ですが下手に他のインジを追加するよりもRD-Comboそのままの方が成果が良いのかもしれません。またはエントリー回数が下がる可能性があるのでねー
にしてもRD-Comboそのままのコードをあたかも最強のインジゲータとして売るのはすげーなーと関心するとともにバレる様なファイル構成にして販売していたのかなーと考えるとアホかなーとも思ったり、わけわかんないですw
結論
バイナリーオプションでRD-Comboのバックテストをしたら57%だったて話。
検証環境
USDJPY
5分足
2014-2018年の5年間
もしインジ選びで迷ったらRD-Comboを使えば幸せになれるかもね。
RD-Comboのソースコードはこちら
RD-Comboのコード内容。
面白いコードですよね?
//+------------------------------------------------------------------+ //| RD.COmbo.mq4 | //+------------------------------------------------------------------+ #property indicator_separate_window #property indicator_buffers 4 #property indicator_color1 Gray #property indicator_color2 OrangeRed #property indicator_color3 LawnGreen #property indicator_color4 Gold #property indicator_maximum 5 #property indicator_minimum -5 #property indicator_level1 4 #property indicator_level2 -4 //---- buffers extern bool DoAlertForEntry= false; extern bool DoAlertForExit= false; extern int HistorySize= 1000; extern int ColorThreshold= 5; extern bool DebugLogger= false; extern bool DebugLoggerData= false; double LongSignalBuffer[], ShortSignalBuffer[], NeutralBuffer[], SignalBuffer[]; double Osc[], Osct3[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,2); SetIndexBuffer(0,NeutralBuffer); SetIndexEmptyValue(0, 0.0); SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,2); SetIndexBuffer(1,ShortSignalBuffer); SetIndexEmptyValue(1, 0.0); SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID,2); SetIndexBuffer(2,LongSignalBuffer); SetIndexEmptyValue(2, 0.0); SetIndexStyle(3,DRAW_LINE); SetIndexBuffer(3,SignalBuffer); // SetIndexEmptyValue(3, 0.0); IndicatorShortName("RD-Alert()= "); return(0); } int start() { static bool didentryalert= false, didexitalert= false; int counted_bars= IndicatorCounted(), lastbar, result; if (Bars<=100) return(0); if (counted_bars>0) counted_bars--; lastbar= Bars - counted_bars; lastbar= MathMin(HistorySize, lastbar); // // precalc forecast oscillater array // ArrayResize(Osc, Bars); ArrayResize(Osct3, Bars); ForecastOsc(0, Bars, Osc, Osct3, 15, 3, 0.7); // // check for signals // Combo(0, lastbar, LongSignalBuffer, ShortSignalBuffer, NeutralBuffer, SignalBuffer, ColorThreshold); // // do alerting // if (DoAlertForEntry>0 && SignalBuffer[0]!=0 && SignalBuffer[1]==0) { if (!didentryalert) { Alert("RD signals trade entry on ", Symbol(),"/",Period()); didentryalert= true; } } else { didentryalert= false; } if (DoAlertForExit>0 && SignalBuffer[0]==0 && SignalBuffer[1]!=0) { if (!didexitalert) { Alert("RD signals trade exit on ", Symbol(),"/",Period()); didexitalert= true; } } else { didexitalert= false; } return (0); } //+------------------------------------------------------------------+ //| Combo Indicator (All-In-One signal) | //+------------------------------------------------------------------+ int Combo(int offset, int lastbar, double &longsignalbuf[], double &shortsignalbuf[], double &neutralbuffer[], double &signalbuffer[], int colthreshold) { int val, lookupidx= 0, signalstate= 0; double adxmain, adxplus, adxminus, adxmain2, adxplus2, adxminus2, cci, rvimain, rvisignal, ma5, ma20, ma100, ma200, fcblue, fcred; if (lastbar>Bars) lastbar= Bars; for (int i= lastbar+5; i>=offset; i--) { lookupidx= i; ma5= iMA(NULL, 0, 5, 0, MODE_LWMA, PRICE_CLOSE, lookupidx); ma20= iMA(NULL, 0, 20, 0, MODE_LWMA, PRICE_CLOSE, lookupidx); ma100= iMA(NULL, 0, 100, 0, MODE_LWMA, PRICE_CLOSE, lookupidx); ma200= iMA(NULL, 0, 200, 0, MODE_LWMA, PRICE_CLOSE, lookupidx); cci= iCCI(NULL, 0, 5, PRICE_CLOSE, lookupidx); rvimain= iRVI(NULL, 0, 1, MODE_MAIN, lookupidx); rvisignal= iRVI(NULL, 0, 1, MODE_SIGNAL, lookupidx); adxmain= iADX(NULL, 0, 14, PRICE_CLOSE, MODE_MAIN, lookupidx); adxplus= iADX(NULL, 0, 14, PRICE_CLOSE, MODE_PLUSDI, lookupidx); adxminus= iADX(NULL, 0, 14, PRICE_CLOSE, MODE_MINUSDI, lookupidx); adxmain2= iADX(NULL, 0, 14, PRICE_CLOSE, MODE_MAIN, lookupidx+1); adxplus2= iADX(NULL, 0, 14, PRICE_CLOSE, MODE_PLUSDI, lookupidx+1); adxminus2= iADX(NULL, 0, 14, PRICE_CLOSE, MODE_MINUSDI, lookupidx+1); fcblue= Osc[lookupidx]; // forecast fcred= Osct3[lookupidx]; // forecast /* fcblue= iCustom(NULL, 0, "RD-ForecastOsc", 0, lookupidx); fcred= iCustom(NULL, 0, "RD-ForecastOsc", 1, lookupidx); double fc2blue= iCustom(NULL, 0, "RD-ForecastOsc", 0, lookupidx); fc2red= iCustom(NULL, 0, "RD-ForecastOsc", 1, lookupidx); if (fc2blue!=fcblue) Print("#", lookupidx, "Blue ", fc2blue, " ", fcblue); if (fc2red!=fcred) Print("#", lookupidx, "Red ", fc2red, " ", fcred); */ // // calc entry signal // int maval= 0, ccival= 0, rvival= 0, adxval= 0, fcval= 0; if (ma5>ma20) maval= 1; else maval= -1; if (cci>0) ccival= 1; else if (cci<0) ccival= -1; else ccival= 0; if (fcblue>0 && fcred>0 && fcblue>fcred) fcval= 1; else if (fcblue<0 && fcred<0 && fcblue<fcred) fcval= -1; else fcval= 0; if (rvimain>0 && rvisignal>0 && rvimain>rvisignal) rvival= 1; else if (rvimain<0 && rvisignal<0 && rvimain<rvisignal) rvival= -1; else rvival= 0; if (adxmain>adxmain2 && adxplus>adxplus2 && adxmain>20 && adxplus>20) adxval= 1; else if (adxmain>adxmain2 && adxminus>adxminus2 && adxmain>20 && adxminus>20) adxval= -1; else adxval= 0; val= maval + ccival + fcval + rvival + adxval; // // exit signal // if (signalstate!=0) { if (signalstate==1 && (rvimain<0 || rvisignal-rvimain>0.2)) { signalstate= 0; } if (signalstate==-1 && (rvimain>0 || rvimain-rvisignal>0.2)) { signalstate= 0; } if (DebugLogger) Print(TimeToStr(Time[i]), " #", i, " rvimain= ", rvimain, ", rvisignal= ", rvisignal, ", diff= ", DoubleToStr(rvimain-rvisignal,2), " => signalstate", signalstate); } if (i<=lastbar) { // ignore the first few loops that were only used to catch previous signal state if (DebugLogger || DebugLoggerData){ if (DebugLoggerData) { Print(TimeToStr(Time[i]), " # --------------------------------------------------------------------------"); Print(TimeToStr(Time[i]), " #", i, " MA 5/20/100/200", ma5, "/", ma20, "/", ma100, "/", ma200); Print(TimeToStr(Time[i]), " #", i, " CCI ", cci, ", RVI ", rvimain, "/", rvisignal); Print(TimeToStr(Time[i]), " #", i, " ADX(now) main/+DI/-DI ", adxmain, "/", adxplus, "/", adxminus); Print(TimeToStr(Time[i]), " #", i, " ADX(prev) main/+DI/-DI ", adxmain2, "/", adxplus2, "/", adxminus2); Print(TimeToStr(Time[i]), " #", i, " Forecast blue/red ", fcblue, "/", fcred); } if (DebugLogger || DebugLoggerData) Print(TimeToStr(Time[i]), " #", i, " MAtrend(", maval, ") + CCI(", ccival, ") + FC(", fcval, ") + RVItrend( ", rvival, ") + ADXtrend(", adxval, ") => ", val, " # trade state =", signalstate); } longsignalbuf[i]= 0; shortsignalbuf[i]= 0; neutralbuffer[i]= 0; if (val>=colthreshold) { longsignalbuf[i]= val; signalstate= 1; } else if (val<=-colthreshold) { shortsignalbuf[i]= val; signalstate= -1; } else neutralbuffer[i]= val; signalbuffer[i]= 2*signalstate; } } return (signalstate); } //+------------------------------------------------------------------+ //| Calc forecast buffers from lastbar down to offset | //+------------------------------------------------------------------+ void ForecastOsc(int offset, int lastbar, double &osc[], double &osct3[], int regress, int t3, double b) { int shift, length; double b2,b3,c1,c2,c3,c4,w1,w2,n,WT, forecastosc,t3_fosc,sum, e1,e2,e3,e4,e5,e6,tmp,tmp2; lastbar= MathMin(Bars-31-regress, lastbar); for (shift= lastbar+30; shift>=offset; shift--) { b2=b*b; b3=b2*b; c1=-b3; c2=(3*(b2+b3)); c3=-3*(2*b2+b+b3); c4=(1+3*b+b3+3*b2); n=t3; if (n<1) n=1; n = 1 + 0.5*(n-1); w1 = 2 / (n + 1); w2 = 1 - w1; length= regress; sum = 0; for (int i = length; i>0; i--) { tmp = length+1; tmp = tmp/3; tmp2 = i; tmp = tmp2 - tmp; sum = sum + tmp*Close[shift+length-i]; } tmp = length; WT = sum*6/(tmp*(tmp+1)); forecastosc= (Close[shift]-WT)/WT*100; e1 = w1*forecastosc + w2*e1; e2 = w1*e1 + w2*e2; e3 = w1*e2 + w2*e3; e4 = w1*e3 + w2*e4; e5 = w1*e4 + w2*e5; e6 = w1*e5 + w2*e6; t3_fosc = c1*e6 + c2*e5 + c3*e4 + c4*e3; if (shift<=lastbar) { // don't put swing in cycle into the signal buffers osc[shift] = forecastosc; osct3[shift] = t3_fosc; } } return(0); }
もしバックテスト検証して欲しいロジックやEAあればお気軽にご連絡下さいませー
詳細はこちら↓↓↓
FX ドテン君 自作EA運用状況 バイナリーオプション運用状況 2019年10月15日の直近状況
自分メモ
自作EA運営状況
1時間足、4時間足共に利益出てます。
ブレイクアウト系のエントリーは現状の様な場面では強いですねー
個人的に直近の自作EA制作は短期での売り買いや何かしらのアービトラージを探してしまう傾向があるのですが本来はトレンドに乗っていけるようなEAを作成するのが王道なのかもしれません。
裁量であればいったん現状で利確して様子をみるのですが、どうしようかなーと。
久しぶりのバイナリーオプション報告
10月1日~10月15日まで
エントリー回数273回
勝率
60.44%
~内訳~
win: 165
lose: 108
合計: 273
エントリーキャプチャー
一部抜粋。基本的に全てのエントリーでキャプチャーを保存しています。
将来的にキャプチャー画像を使って画像認識(機械学習)で勝てるチャートパターンとかを見つけ出す様なロジックを構築したいなーと。
ストキャスティクスと移動平均線を利用したバイナリーオプションの自動売買EA制作 バイナリーオプションサインツール無料開発案件
バイナリーオプションのEA制作依頼を頂いて検証したので内容ご紹介。
バイナリーオプションのサインツール作成依頼の詳細はこちら↓をご確認下さいませ。
"EA開発 バイナリーオプション検証 制作(作成)代行 無料で行いますキャンペーン"
abitra.hatenablog.com
今回依頼を頂いた方は最初サインツールのバックテスト検証を依頼頂きました。
そのサインツールのバックテストが完了しましてしばらくしてから別ロジックでの0からの作成のご相談を頂きました。
ロジック提案して頂いた方に本ブログでのロジック案内OKを頂いております。
有難う御座います。
ストキャスティクスと移動平均線を利用したバイナリーオプションエントリー
ロジック概要としてはこんな感じ。
5分足でのエントリーロジックになります。
1) ストキャスティクスのメインとシグナルが20以下又は 80以上でデットクロス
2) 移動平均線 9をローソク足が突き抜ける
※ヒゲではなく実態が突き抜ける
3) 突き抜けた時の足を一分足で確認して直近2足が突き抜けた方向の足を確認
4) 突き抜けた次足の頭で突き抜けた方向に順張り
Lowエントリー例: 5分足
ストキャスティクスが80以上の時にデットクロス
↓
1分足を確認して抜けた足の1足前と2足前が共に陰線を確認
↓
次足頭でLowでエントリー
Highは上記方法の逆です。
制作にあたってのポイント
平均線の抜けた時に何足以内にストキャスがデットクロスしていたか。
また抜けた足を1分足で見た時に1足前と2足の前の陰線陽線確認などになります。
ストキャスのデットクロスの確認はそこまで難しい処理ではないのですが一分足の確認にすごく悩まされました。
というのもなぜか私の環境ではバックテストで一分足の取得が出来る時と出来ない時があり、そのタイミングが本当に分からない。
いまだに分かりません。
取得出来るときは一分足の価格を取得出来るのですが出来ない時は何処の数値とってんねん!!ってくらい同じ数値の取得しか行われません。
※このブログ記事を書いてても理由は不明です
ですがバックテストの期間が短いとこの現象が起きて期間を長くすると起きにくい気がします。気がするだけなので何の確証もありません。
※プログラムを書いてる時は簡単に確認したいのでテスターの期間を3-4ヶ月とかにして検証するのですが、それだと何やってもダメで5年とかにするとうまく行ったりします。
100%ではないです。
5分足チャートで1分足の価格取得する方法としてはこんな感じ
double open_1 = iOpen(Symbol(), 1, 1); double close_1 = iClose(Symbol(), 1, 1); double open_2 = iOpen(Symbol(), 1, 2); double close_2 = iClose(Symbol(), 1, 2);
バックテスト時はバーの戻る回数(5分足の戻り回数と1分足の戻り回数)を調整しないといけませんがね。
バイナリーオプションのバックテスト用のEAを作成してみた
ストキャスのデットクロスと平均線の確認など上手いこといっています。
若干自身がないのが1分足の確認です。
一応数値を取得しているのを確認は出来ているのですが何となく不安ではあります。5分足のチャートで一分足の確認が出来ないので。。。
リアルタイムであればチャートを簡単に変えれますがバックテストではそれが出来ない。プログラムを信じるしかないです。(まぁ大丈夫やろうけど時々価格取得がバグってるのでw)
ストキャスティクスと移動平均線を利用したバイナリーオプションエントリーの結論
今回依頼頂いたロジックでのバイナリーオプションのエントリーは難しいと考えています。
順張りよりも逆張りの方が良さそうに見えますが個人的な感覚では順張りの方がいいだろうなーとも思います。
個人的にこの辺りに自分なりの矛盾を感じるロジックはあまりよろしいロジックではないのでお勧めは出来ないかなーと。
改善する方法としては
時間帯の調整なども考えたのですが時間帯別などで確認してもあまりパッとしないんですよね。
ご案内
今回のブログの様な感じでロジックのEA化とバックテストを無料で行っています。
無料で行う理由としてはもし利益のでるロジックがあれば私にとってもメリットが大きいので無料でもOKとの考えから。
どこかで手に入れたバイナリーオプションのサインツールEAのバックテストでもOKです。
もし興味があるのであればお気軽にご連絡下さいませ。
hogehogekatoジーメールまで。
勝率100%!? リスクゼロの両建て戦略 妄想中
半分自分メモ。(この時こんな事考えていたよね的な)
以下海外口座のゼロロスカット戦略。
出来るかどうか分かりません。妄想でのロジックです。
誰か試したよーとか、私も考えたよーって方いればコメントくれると嬉しいです。
リスクゼロの両建て戦略
2つの違う証券口座を使って両建てを行い片方の口座が0ロスカットするまで運用するロジック。
片方がロスカットして損した分、反対側の口座で利益が出るのでその利益がロスカットした分の利益が出れば負けは少ないのかなーと。
例
A証券 100万円
B証券 100万円
Aで買い、Bで売り同時エントリー
B証券ゼロロスカット した時にはA証券は200万円近くになっているのかなーと。
A証券が202万円とかで決裁させて102万円抜いて、その102万円から100万円抜いてB証券へ
利益2万円
繰り返し。
プログラム(EA)構築必要ないかなw
各証券会社のMT4の画面を立ち上げておきマウスで選択して購入するだけでOK
購入するだけなのでマウスの素早く動かしてクリック操作で大丈夫。
またいつでも両建てしても問題ないので特に何かしらプログラム(EA)の制作はいらないと考えています。
今回の手法は正確には勝率100%ではないしリスクもあります。
※タイトル詐欺で申し訳ない。
妄想で考えられるリスクとしてはスプレッド。
一方の口座でゼロカットのラインに達してもスプレッド分がある為もう一方の口座できっちり反対で倍の利益が出てはいないと考えます。
このスプレッドの間で価格が反転した場合、損する可能性があります。
手法へのリスク対応策
利用する証券会社によりますが証券会社によっては入金ボーナスなどがありますので、そのボーナス分でスプレッドをカバー出来れば安全に運用出来る可能性があるのではと考えています。
例として入金金額の10-20%でも入金ボーナス(クレジット)があればリスクは少なく出来るかなーと考えます。
既に誰かやってたりしないのかな?
やってるか分かりませんが検索すると同じような事を考えている方がちらほら見つかります。
"XMは両建てを使えばめちゃくちゃ稼げる!メリットと注意点をまとめてみました"
www.trade4people.org
"FX両建て手法に必勝法あり?負けない両建てテクニックを5つ紹介"
www.toretora.com
"FX両建てで負けない必勝法がある!?"
xn--fx-y73aoca4v.jp
FX仲間の知人にも聞いてみた
知人A
"考えたことはあるけど実際にやった事は無い手法です。
で、きっとやってる人いると思うのでFX会社は対策はしてきているはず。と思います"
知人B
"できるんですかねー?簡単にできちゃうなら有名になってたり、やってる人いそうですよね。何か弊害があるのか・・"
知人C
"考えた事あって調べたんやけど、直ぐにアカウント凍結されるみたいやから手ださんかったわー"
手法うんぬんよりもFXの口座凍結リスクが最大ポイント
たぶんですがFX会社で何かしらの方法で両建ては見抜けると考えています。
といいますかゼロカットを何回も行うユーザは何かしら行っている可能性があるのですぐバレちゃうのかなーと。
アカウントバンされて口座凍結で何もできなくなるリスクを抱えてまでこの手法に魅力があるかどうか。。。
Abookの証券会社であれば大丈夫な気もしますがどうなのかな?
もし誰か実際に行ったよーって方いらっしゃればコメント欲しいです。
MT4 EA無料開発案件 MACDとストキャスティクスを利用したFXの自動売買EA制作
少し前に
"EA開発 バイナリーオプション検証 制作(作成)代行 無料で行いますキャンペーン"
abitra.hatenablog.com
を行いました。(今も行っています。興味ある方は連絡下さい。)
いくつか頂いており色々作成しているのですが今回は依頼頂いた中の一つ MACDとストキャスティクスを利用したFXの自動売買EA制作の案内。
MACDとストキャスティクスを利用したFXの自動売買EA制作
ご依頼内容
ロジックの概要としてはこんな感じ
1) MACDが10%又は90%に達する
2) ストキャスが10又は90に達する
■売りから入る場合
3) ストキャスが90以上でMACDも90%以上でストキャスがMACDより下回った時に売りエントリーで入る
■買いから入る場合
3) ストキャスが10以下でMACDも10%以下でストキャスがMACDより上回った時に買いエントリーで入る
制作にあたってのポイント
ご連絡を頂いた時にMACDの10と90の判定が曖昧でこのEA制作は出来ないだろうなーと考えていました。
簡単に説明するとMACDの数値は10とか90とかの値を返すものではないので判定が出来ないとの判断をしていました。
ご連絡を頂いた方は裁量で行われていたとの事で目視でストキャスの10,90をMACDに当てて確認していましたので「あー無理だなーって」。
ストキャスの10-90とMACDとは何の関係ないのでね。
またMACDのチャートはウインドウの大きさなどによって変わるので個々のウインドウの大きさに依存するのでモニター環境が変われば結果が変わる。
これだとEA化しても意味無いなーって。
ですが話を詰めていくなかでMACDの期間を制限する事で10-90の判定出来るんじゃって事に気が付きました。
MACDとストキャスティクスの自動売買の結論
今回依頼頂いたロジックでの自動売買で利益を出していくのは難しいと考えています。
最適化を行いMACDの期間を変えたり指値逆指値の幅を変えたり数百のロジックで行いましたが利益出す所までもっていくのは厳しそうです。
ご依頼頂き有難う御座います。
またブログへの投稿の許可も有難う御座います。
ご案内
今回のブログの様な感じでロジックのEA化とバックテストを無料で行っています。
無料で行う理由としてはもし利益のでるロジックがあれば私にとってもメリットが大きいので無料でもOKとの考えから。
もし興味があるのであればお気軽にご連絡下さいませ。
hogehogekatoジーメールまで。
時系列解析を利用して株価、FXの未来の価格予想 診断編
前回、前々回と未来の価格予想を行ってきましたが、このモデルがどの程度の精度なのかを診断したいと思います。
"時系列解析を利用して株価、FXの未来の価格予想 実践編"
abitra.hatenablog.com
"時系列解析を利用して株価、FXの未来の価格予想 事前準備"
abitra.hatenablog.com
勉強したてなので間違った認識かもですが精度は小さい方は良いとは考えますが、無理に精度を高めるのもよくないと考えてはいますがどうなんでしょうかねー
機械学習初心者なのでこの辺りの肌感覚が全く分からないので判断が出来ません。
時系列解析を利用して株価、FXの未来の価格予想 で予測の精度を求める
日経225の終値を解析にしようしたモデルの精度を求めたいと思います。
精度の求め方としては先日取得した日経225のCSVデータを利用して過去○○日でモデルを作りそのモデルで予測して実際の結果と比べます。これをデータ分繰り返してモデルの予測と実際の結果が合っているのか離れているのかを確認するといった感じになります。
精度の数値は小さければ小さいほど乖離が少なくモデルが優秀と判断していいのかなーと考えています。
ソースコード
import numpy as np import pandas as pd from fbprophet import Prophet from fbprophet import diagnostics from fbprophet.plot import plot_cross_validation_metric import matplotlib.pyplot as plot data = pd.DataFrame() file_name = 'N225.csv' data2 = pd.read_csv(file_name, skiprows=1,header=None, names=['ds','Open','High','Low','Close','y','Volume']) data = data.append(data2) model = Prophet() model.fit(data) df_cv = diagnostics.cross_validation(model, initial='730 days', period='180 days', horizon = '365 days') fig = plot_cross_validation_metric(df_cv, metric='mape') plot.show()
簡単に書くとこんな感じかな。
やはりpythonは神かなw(ライブラリが神かなw)
やってる事としては730日でモデルを作成して365日検証していいるといった感じ。
時系列解析を利用して日経225の未来の予測モデルの精度
37 日後 => 6.7698 %
365日後 => 21.1282 %
まぁ当たり前っちゃ当たり前で37日の方が精度が高いです。
365日後は21%程になるので参考にはなるけど使えないかなー
とはいえ37日も表を見てもばらつきが多いので微妙。。。
精度を高める対策など
今回は単独で日経225のみデータで検証しているのですが精度をさらに高める為には日経225と他のデータを組みわせるなどしてモデルを作成した方が良いかもしれません。
例えば為替レートデータの組み合わせや日銀の買い入れのデータとの組み合わせなど。