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); }
関連記事
###
関連記事
-
[FX] Tokyo Box(ロンドン・コーリング) の新作プログラム (2)
数日前の記事「Tokyo Box(ロンドン・コーリング) の新作プログラム」の続きです。 東京
-
【FX】Fintokei チャレンジ 16日め またまたやらかし
以前の記事「【FX】Fintokei チャレンジ 14日め」の続きです。 やっちまった。
-
小川忠洋ウェブセミナー「長期的にビジネスを安定させるマーケティング・システムの作り方」
* 本日、ダイレクト出版の小川忠洋さんの無料ウェブセミナー「長期的にビジネスを安定させるマーケ
-
【FX】2本のEMAだけを使用したFXのシンプルなEMA手法の検証(2) 改良
前回の記事「2本のEMAだけを使用したFXのシンプルなEMA手法の検証」の続きです。 あまりに
-
2023-06-05 ポートフォリオ改変 スシローよ、さらば
ここ連日、日経平均が爆上げで 本日も勢いは衰えず。13:00 現在 32041円。 ありがとう
-
[FX] VQ を使った5分足システムの試作(2) 半値をプラス
前回の記事「 VQ を使った5分足システムの試作(1)」 ですが、マルチタイムフレーム(MTF)
-
医療費39兆2千億円 過去最高
医療費高騰 厚生労働省は8日、2012年度に病気やけがの治療で全国の医療機関に支払われた医
-
Schaff Trend Cycle について
Schaff Trend Cycle は私の好きな指標の一つで、MACD のストキャスをストキャ
-
80対20のセールスシステム / ペリー・マーシャル
インターネット広告に関するベストセラー『世界一読まれているグーグルアドワーズの本』の著者であ