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】高頻度トレーダー(HFT)タイプの EA の評価方法(2)
以前の記事「【FX】高頻度トレーダー(HFT)タイプの EA の評価方法」の続きです。 そこでは高
-
-
コワ~い不動産の話 / 宝島社編集部
コワ~い不動産の話 (宝島SUGOI文庫 A た 5-1) 宝島社編集部 宝
-
-
[FX] Trend Scalp ライクな自動売買プログラム ysTS01b.ex4
以前の記事「Trend Scalp というインジケーター 」で紹介した Trend Scalp はか
-
-
【FX】AXI 開始
Axi(アクシ)という海外FX業者に口座を開きました。 キャッシュバックを狙って TariTali
-
-
【米国株】上昇開始 今年中はもはや利上げなし?
昨日のアメリカの CPI 発表ではインフレのかなりの改善が見込めたということで、株高ドル安が進みまし
-
-
[FX]時間帯理論 米国時間の逆張りタイム
前回の記事「東大院生が考えたスマートフォンFX / 田畑 昇人 」で紹介した時間帯理論ですが、欧
-
-
【FX】Exness で新たにゼロ口座を開いてみる
スタンダード口座を開いた Exness ですが、スプレッドは十分狭いとは言えず、朝スキャの勝率もバッ
-
-
【FX】Best Scalper という EA(3)
本日、操作を誤って(ロット数を誤って)Fintokei の速攻プランが飛びました。なむさん。
-
-
未来を予測する(?)便利なインジケータ AdamPriceReflection
ドル円15分足[/caption] AdamPriceReflect







