*

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);
  }

関連記事

スイスフラン暴騰騒動

スイスフラン暴騰騒動(2)

###

関連記事

ニューヨーク州立大ケルトン教授が異端?

ウソの新聞朝日新聞DIGITAL の記事「異端の経済理論、日米で論争 「日本の債務、全く過大でない」

記事を読む

【FX】Alpinist という EA

Alpinist という面白い EA があります。 ロジックが不明で「ニューラルネットワークを

記事を読む

超シンプルな自動売買プログラム(11) 前週の平均値と逆張り(4) さらに改良型

前回の記事「超シンプルな自動売買プログラム(11) 前週の平均値と逆張り(3) 改良型」ですが、

記事を読む

【FX】Hippo Trader という EA(5)

長期連載ではありませんが、個人的に好きな EA である Hippo Trader のお話の5回めです

記事を読む

医療費39兆2千億円 過去最高

医療費高騰 厚生労働省は8日、2012年度に病気やけがの治療で全国の医療機関に支払われた医

記事を読む

[FX] 早朝のスプレッド 10/23

本日 10/23 早朝のスプレッドの酷さを晒します。 OANDA 5:22:13 AM

記事を読む

[FX] Tokyo Box(ロンドン・コーリング) の新作プログラム (3)

前回の記事「Tokyo Box(ロンドン・コーリング) の新作プログラム (2)」の続きです。

記事を読む

【FX】オートロット解禁

FX自動売買の話です。 以前は、ナンピンマーチン系の自動売買プログラム(EA)を使って毎月 8

記事を読む

住宅ローン完済

* 平成2年に買った我が家(マンション)ですが、先月ようやくローンが完済のはこびとなりまし

記事を読む

【FX】Voorloper という EA(6) 4月分トレード結果

Voorloper という EA は、主力で使っている Dark Venus より優れているわけでは

記事を読む

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

20万点以上のデジタルウォールアートバンドル(2)

「20万点以上のデジタルウォールアートバンドル」という Etsy.co

300点以上の日本の壁掛けアート

Etsy.com で「300点以上の日本の壁掛けアート」と称した作品集

【AI】Gemini 3.8Flash 登場

Gemini 3.8 Flash を Google DeepMindが

20万点以上のデジタルウォールアートバンドル

「20万点以上のデジタルウォールアートバンドル」という製品を

歌川広重の日本美術版画800点以上:高解像度(デジタルダウンロード)R-159(2)

昨日買った歌川広重(安藤広重)の日本美術版画800点以上です。

→もっと見る

  • 2026年9月
     123456
    78910111213
    14151617181920
    21222324252627
    282930  
  • アクセスカウンター
PAGE TOP ↑