FX 大ダメージ 暴落対策用コードの導入
公開日:
:
最終更新日:2015/01/21
マネー
自動売買のデモ口座が今朝とんでもないことに。
昨日は調子よく、30万円プラス近くまで行ったのですが、今朝プラスマイナスゼロくらいに戻っていたのです。
利益確定をもう少し改善しなくてはと思ってよく見ると、ドルフランの暴落によるものと判明(上のグラフ)。
スイス中銀がスイスフラン相場について1ユーロ=1.20フランの上限を撤廃したとのニュースのためでしょう。
この上限はFXサーファーにはなじみのものですが、ついにスイスの為替介入がなくなる日が来たのですね。
ドルフランの暴落と書きましたが、ドルは無実で、スイスフラン単独の高騰ですね。
しかし、数時間で 15%も高騰したとは・・・ケタ違いです。
*
しかし、デモ口座でよかった。
あわててプログラムに暴落対策を加えました。
ちゃんと動くかはチェックしていません。バックテストではちょっと効果があるようなんですが。
もう一度暴落が起きないかな。
プログラムソース
// // yasciiMACD_3cross07.mq4 // Trailing stop // //マジックナンバーの定義 #define MAGIC 42553 //パラメーターの設定// extern double Lots = 1.0; //取引ロット数 extern int Slip = 10; //許容スリッページ数 extern string Comments = ""; //コメント extern int Fast_EMA_Period1 = 6; extern int Slow_EMA_Period1 = 19; extern int Signal_Period1 = 6; extern int Fast_EMA_Period2 = 12; extern int Slow_EMA_Period2 = 26; extern int Signal_Period2 = 9; extern int Fast_EMA_Period3 = 18 ; // 19; extern int Slow_EMA_Period3 = 33 ; // 39; extern int Signal_Period3 = 11; // 9; extern int ADXcrossesPeriod = 14; extern int Fast_period = 18 ; extern double margin = 0.0 ; extern double ILC = 730.0 ; //---- input parameters extern int Viscosity=13; extern int Sedimentation=50; extern double Threshold_level=1.3; extern bool lag_supressor=true; //変数の設定// int Ticket_L = 0; //買い注文の結果をキャッチする変数 int Ticket_S = 0; //売り注文の結果をキャッチする変数 int Exit_L = 0; //買いポジションの決済注文の結果をキャッチする変数 int Exit_S = 0; //売りポジションの決済注文の結果をキャッチする変数 int OS1 ; int OS2 ; double MACD_MAIN1_1 ; double MACD_SIGN1_1 ; double MACD_Value1_1 ; double MACD_MAIN1_2 ; double MACD_SIGN1_2 ; double MACD_Value1_2 ; double MACD_MAIN1_3 ; double MACD_SIGN1_3 ; double MACD_Value1_3 ; double OOPL; double OOPS; double LwT = 0.0; double HgT = 10000.0 ; //damiani_filter用 double lag_s_K=0.5; double s0 = 0; double s1= 0; double s2 = 0; double s3 = 0; double vol=0; double t=Threshold_level; int damiani_f() { double sa=iATR(NULL,0,Viscosity,1); double ia = iATR(NULL,0,Sedimentation,1) ; if(lag_supressor){ if (ia == 0) vol = 1.0 ; else vol= sa/ia + lag_s_K*(s1-s3); }else{ if (ia == 0) vol = 1.0 ; else vol= sa/ia; } double anti_thres=iStdDev(NULL,0,Viscosity,0,MODE_LWMA,PRICE_TYPICAL,1); double isd = iStdDev(NULL,0,Sedimentation,0,MODE_LWMA,PRICE_TYPICAL,1) ; if (isd == 0) anti_thres = 1.0 ; else anti_thres = anti_thres/isd ; t=t-anti_thres; s3 = s2; s2 = s1; s1= s0; s0 = vol; if (vol>t){ return(1); }else{ return(0); } } int start() { // 暴落対策始まり double FastHH1 = Close[iHighest(NULL, 0, MODE_CLOSE, Fast_period, 1)]; double FastLL1 = Close[iLowest(NULL, 0, MODE_CLOSE, Fast_period, 1)]; OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET); //買いポジションのエグジット if( Bid < FastLL1-margin && ( Ticket_L != 0 && Ticket_L != -1 )) { Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Red); if( Exit_L ==1 ) {Ticket_L = 0;} } OS2 = OrderSelect(Ticket_S, SELECT_BY_TICKET); //売りポジションのエグジット if( Ask> FastHH1+margin && ( Ticket_S != 0 && Ticket_S != -1 )) { Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue); if( Exit_S ==1 ) {Ticket_S = 0;} } // 暴落対策終わり if (Volume[0]>1 || IsTradeAllowed() == false) return(0) ; MACD_MAIN1_1 = iMACD(NULL, 0, Fast_EMA_Period1 , Slow_EMA_Period1, Signal_Period1, PRICE_CLOSE, MODE_MAIN, 1 ); MACD_SIGN1_1 = iMACD(NULL, 0, Fast_EMA_Period1 , Slow_EMA_Period1, Signal_Period1, PRICE_CLOSE, MODE_SIGNAL, 1 ); MACD_Value1_1 = MACD_MAIN1_1 - MACD_SIGN1_1 ; MACD_MAIN1_2 = iMACD(NULL, 0, Fast_EMA_Period2 , Slow_EMA_Period2, Signal_Period2, PRICE_CLOSE, MODE_MAIN, 1 ); MACD_SIGN1_2 = iMACD(NULL, 0, Fast_EMA_Period2 , Slow_EMA_Period2, Signal_Period2, PRICE_CLOSE, MODE_SIGNAL, 1 ); MACD_Value1_2 = MACD_MAIN1_2 - MACD_SIGN1_2 ; MACD_MAIN1_3 = iMACD(NULL, 0, Fast_EMA_Period3 , Slow_EMA_Period3, Signal_Period3, PRICE_CLOSE, MODE_MAIN, 1 ); MACD_SIGN1_3 = iMACD(NULL, 0, Fast_EMA_Period3 , Slow_EMA_Period3, Signal_Period3, PRICE_CLOSE, MODE_SIGNAL, 1 ); MACD_Value1_3 = MACD_MAIN1_3 - MACD_SIGN1_3 ; double FastHH2 = Close[iHighest(NULL, 0, MODE_CLOSE, Fast_period, 2)]; double FastLL2 = Close[iLowest(NULL, 0, MODE_CLOSE, Fast_period, 2)]; OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET); OOPL = OrderOpenPrice(); //買いポジションのエグジット if( ((MACD_Value1_1 <0 && MACD_Value1_2 <0) || OOPL - ILC*Point >= Close[1] || (Close[2] >= FastLL2-margin && Close[1] < FastLL2-margin )) && ( Ticket_L != 0 && Ticket_L != -1 )) { Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Red); if( Exit_L ==1 ) {Ticket_L = 0;} } OS2 = OrderSelect(Ticket_S, SELECT_BY_TICKET); OOPS = OrderOpenPrice(); //売りポジションのエグジット if( ((MACD_Value1_1 >0 && MACD_Value1_2 >0) || OOPS + ILC*Point <= Close[1] || (Close[2] <= FastHH2+margin && Close[1] > FastHH2+margin )) && ( Ticket_S != 0 && Ticket_S != -1 )) { Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue); if( Exit_S ==1 ) {Ticket_S = 0;} } //買いエントリー if( MACD_Value1_1 >0 && MACD_Value1_2 >0 && MACD_Value1_3 >0 && MACD_MAIN1_3 >0 && damiani_f() ==1 && ( Ticket_L == 0 || Ticket_L == -1 ) && ( Ticket_S == 0 || Ticket_S == -1 )) { Ticket_L = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,Comments,MAGIC,0,Yellow); } //売りエントリー if( MACD_Value1_1 <0 && MACD_Value1_2 <0 && MACD_Value1_3 <0 && MACD_MAIN1_3 <0 && damiani_f() ==1 && ( Ticket_S == 0 || Ticket_S == -1 ) && ( Ticket_L == 0 || Ticket_L == -1 )) { Ticket_S = OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,0,0,Comments,MAGIC,0,Red); } return(0); }
関連記事
###
関連記事
-
「投資塾」という Youtube で無料の投資セミナーがすごい
ゆうさん(投資アドバイザー)という方の「投資塾」という Youtube チャンネルが面白くて役に立ち
-
QQE を使った自動売買ソフト(2)
前回の記事「QQE を使った自動売買ソフト」でご紹介した、QQE という指標を使った EA(ex
-
ふるさと納税のお礼のパソコンがやってきた
長野県飯山市に 10万円の寄付(いわゆるふるさと納税)をすればもらえるという噂のパソコン様、
-
日本の国家破産に備える資産防衛マニュアル / 橘 玲
日本の国家破産に備える資産防衛マニュアル 橘 玲 ダイヤモンド社 2
-
【FX】Fintokei チャレンジ開始
昨日の記事「【FX】プロップファームの Fintokei について」の続きです。 今朝、Fin
-
[FX] ロンドンフィキシングで自動売買
ロンドンフィキシングとは、ロンドン市場の金の取引価格を決定することで、毎日ロンドン時間の午後4時(夏
-
【FX】Fintokei 速攻プロプラン開始
Fintokei の速攻プロプランを開始しました。 コースが 5種類あって初期証拠金の額が違う
-
幸せな経済自由人の金銭哲学 マネー編 / 本田健
幸せな経済自由人の金銭哲学 マネー編 (ゴマ文庫)本田 健 ゴマブックス 200
-
Schaff Trend Cycle について
Schaff Trend Cycle は私の好きな指標の一つで、MACD のストキャスをストキャ
-
[FX] 2本の移動平均線を使ったシンプルな EA
あるブログの記事「移動平均線クロスでエントリーするEA(フリーEA)」を読んで、「よし久々に作ってみ