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); }
関連記事
###
関連記事
-
2024年8月7日 日本株反騰中?(2)
「2024年8月7日 日本株反騰中?」の続きです。 本日の市場が閉まりました。本日の日経平均は
-
SBIホールディングス(8473)買いました
一昨日、日本の高配当株としてよく名前が挙がる SBIホールディングスの株を 100株式会社買いました
-
FXトレード 2014/1/5
うちのマックトリプルバーガーと名づけた EA(自動売買プログラム)のトレードですが、早速ビビ
-
[FX] ボリンジャーバンド順張りシンプル版
昨日読んだ本「FX ボリンジャーバンド常勝のワザ / 山中康司」に触発されて、もっともシンプルなボリ
-
2024-12-26 日本株投資
クリスマスは終わって、そろそろ年末も迫ってきました。 株式市場も閑散としてきましたね。 機関
-
FXの教科書 / 松田 哲
FXの教科書 松田 哲 扶桑社 2008-03-01 売り上げランキング
-
【FX】 海外業者 Exness でのデビュー
Exness 進撃開始 本日 Exness の口座デビューを行いました。 7000$を入金し
-
[FX] Tokyo Box(ロンドン・コーリング)プログラムにトレーリングストップをつける
有名な FX のトレード手法の Tokyo Box(ロンドン・コーリング)ですが、以前これにはまって
-
METROというインディケーター
ネットで配布されている METRO という無料のインディケーターがあります。 ダウンロード>
-
2024-11-17 楽天証券での投資(組み替え)
本日2024年11月17日付けの楽天証券での投資実績はこちら。 だいぶ含み益は回復して