*

VQ を使ったシンプルな自動売買システム

公開日: : 最終更新日:2021/06/03 マネー

VQ という摩訶不思議なインジケーターがあります。始値、終値、高値、安値のそれぞれの移動平均線を使ったもので、その TR(値幅)をも考慮するという複雑なもの。

なかなか効果的なので今でも使っている人は多いハズ。

VQ を売買のシグナルにする方法は以前多数作りましたが、ちょっと検証し直そうと思います。

まずは母体となるプロトタイプから作り直しましょう。

VQ の計算には VQ_bars.ex4 という外部ファイル(インジケーター)を借用しています。内部に取り込むとプログラムソースが長くなるからです。

動作条件ですが、買いの場合は

  1. エントリがVQ の上昇
  2. フィルタは「ショート雲より上」
  3. イクシットは VQ の下降

というシンプルなものです。

私の好みで HLトレーリングストップをつけました。

ポンド円4時間足です。

総取引回数 79 と 9ヶ月間の稼働にしては 動作しない日も多くあります。

利益 15.26%はイマイチですが、動作回数が少なめなので、フィルタを工夫すればなんとかなるかも。

勝率 44.97%、プロフィットファクター 2.21 は良好。

最大ドローダウンも 2.73%とまあまあ。連敗が少ないのは初期にはとくに助かります。

VQ をフィルタに使ってほかのトリガーをエントリに使う方法など、発展は多々考えられます。

ちょっといろいろいじってみます。

裁量トレードは、私自身がバクチ大嫌いなのであまりやりたくないのです。

こういう自動売買システムは開発しているときが一番楽しい。

科学研究に通じるものがありますよね。

プログラムソース

//
// ysVQ01a.mq4
//           VQ_bars 使用
//
//    エントリ:VQ の上昇
//    フィルタ:ショート雲より上
//    イクシット:VQ の逆転
//    HLトレーリングストップあり

//マジックナンバーの定義
#define MAGIC  42501

//パラメーターの設定//
extern double Lots = 0.1;     //取引ロット数
extern int Slip = 10;         //許容スリッページ数
extern string Comments =  “VQ01a”; //コメント

extern int       HL_Period=12;// HLトレーリングストップ用
extern double margin = 0.0 ; // 誤差
extern double ILC = 5.0 ; // 初期ロスカット

// VQ_bars 用
extern   int      Length=2;
extern   int      Method=0;
extern   int      Smoothing=0;
extern   int      Filter=0;
extern   bool     Steady =false;

extern int in_time = 10; // 取引開始時間(0以上)
extern int out_time = 20; // 取引停止時間(24以下)

int       Tenkan_sen=2;
int       Kijun_sen=3;
double    Senkou_span_b=5;

//変数の設定//
int Ticket_L = 0; //買い注文の結果をキャッチする変数
int Ticket_S = 0; //売り注文の結果をキャッチする変数
int Exit_L = 0;   //買いポジションの決済注文の結果をキャッチする変数
int Exit_S = 0;   //売りポジションの決済注文の結果をキャッチする変数
int OS1 ;
int OS2 ;
double   OOPL;
double   OOPS;

int start(){

//暴落対策(始め)

double HH1 = High[iHighest(NULL, 0, MODE_HIGH, HL_Period, 1)];
double LL1 = Low[iLowest(NULL, 0, MODE_LOW, HL_Period, 1)];

//買いポジションのエグジット
OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);
if( Bid < LL1-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> HH1+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) ;

double dir1 = iCustom(NULL, 0, “VQ_bars”,Length,Method,Smoothing,Filter,Steady,4,1);
double dir2 = iCustom(NULL, 0, “VQ_bars”,Length,Method,Smoothing,Filter,Steady,4,2);
double cla1 = iIchimoku( NULL, 0, Tenkan_sen, Kijun_sen, Senkou_span_b, 3, Kijun_sen);
double clb1 = iIchimoku( NULL, 0, Tenkan_sen, Kijun_sen, Senkou_span_b, 4, Kijun_sen);

double HH2 = High[iLowest(NULL, 0, MODE_HIGH, HL_Period, 2)];
double LL2 = Low[iHighest(NULL, 0, MODE_LOW, HL_Period, 2)];

double lc = ILC;
if(( Digits ==3 )||(Digits ==5)) lc = lc*10.0 ;

//買いポジションのエグジット
OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);
OOPL = OrderOpenPrice();
if(    ((dir1==-1 && dir2 ==1) || ( OOPL – lc*Point >= Close[1] ) || Close[1] < LL2)
&& ( 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(    ((dir1==1 && dir2 ==-1)||( OOPS + lc*Point <= Close[1] ) || Close[1] > HH2)
&& ( Ticket_S != 0 && Ticket_S != -1 ))
{
Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue);
if( Exit_S ==1 ) {Ticket_S = 0;}
}

//買いエントリー
if( (dir1==1 && dir2 ==-1)    && (Close[1] > cla1 && Close[1] > clb1)
&& (Hour() >= in_time && Hour() < out_time)
&& ( 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,Red);
}

//売りエントリー
if( (dir1==-1 && dir2 ==1)    && (Close[1] < cla1 && Close[1] < clb1)
&& (Hour() >= in_time && Hour() < out_time)
&& ( 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,Blue);
}

return(0);

}

 

関連記事

FXブレイクアウトシステムのテスト

ブレイクアウトシステムは今まで食わず嫌いでしたが、試作してみました。 ルールはシンプル。

記事を読む

MetaTrader4 でのプロフィットファクター

以前の記事「FXトレードの利益」 でプロフィットレシオ(ペイオフレシオ)の話をしましたが、Me

記事を読む

私の投資信託の買い方

私の投資信託の買い方ですが、毎月5万円ほど定額積立をしている以外の、スポット買いの方法をお示しします

記事を読む

MACDバーシステムの改良

MACDバーを使った自動売買システム 昨日自作したプログラムですが、短期用、中期用、長期用の3

記事を読む

[FX] 自動売買始めました (3)

前回の記事「 自動売買始めました」、「 自動売買始めました (2)」の続きです。 EA(自動売

記事を読む

【FX】FrankoScalp という EA

MQL5.com で FrankoScalp という古株の EA を見つけました。 いろんなモ

記事を読む

[FX] PRICE_MEDIAN を使う (2) 半値の概念

以前の記事「 PRICE_MEDIAN を使う 」 の続きです。 移動平均線、ADX、RSI

記事を読む

【FX】Fintokei のビジネスモデルについての愚考

前日の記事「【FX】Fintokei チャレンジ開始」でも書きましたが、Fintokei の仕組みは

記事を読む

新生銀行

   私は新生銀行を愛用しています。  いわゆるネット銀行です。  ほかのネッ

記事を読む

【FX】Han という EA

これも蔵から引っ張り出してきた EA です。Best Scalper と同じく 2年くらい前に入手し

記事を読む

Message

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

JAふくしま未来 秀品桃 ミスピーチ 約2キロ

【ダイヤモンド・プラチナ会員限

2025-7-31 高配当ETF投資

本日 2025/7/31 で私が買っている ETF のうち、高配当のも

産地厳選 種なし巨峰 4パック

【産地厳選 種なし巨峰 2p

扇風機の使い方

《最安値に挑戦★2,999円!

AIPI / REX・AIエクイティ・プレミアム・インカムETF

以前の記事「CEPI / REX クリプト・エクイティ・プレミアム・イ

→もっと見る

  • 2025年8月
     123
    45678910
    11121314151617
    18192021222324
    25262728293031
  • アクセスカウンター
PAGE TOP ↑