*

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】Fintokei 速攻プロプラン開始(2)

以前の記事「【FX】Fintokei 速攻プロプラン開始」の続きです。 一昨日から風邪気味で、

記事を読む

生命保険の支払いの荷が降ろせそうな年頃

この前来た●●生命保険からの通知で、3つのうち2つが「保険料払込み済み」になっているのに気づきました

記事を読む

【FX】Fintokei 速攻プロプランについて

またまたプロップファームの Fintokei の話ですが、現在チャレンジプランを再開したところです。

記事を読む

GDP は国富増加の指標にならない

GDP はあてにならない GDP は国富を測るいい指標になるとは限りません。 私の考えた次の

記事を読む

【FX】どちらが良い自動売買プログラム?

自動売買プログラム(MT4 では EA と呼びます)の良悪の判定は難しいものです。 問題(実際の例

記事を読む

[FX] 新たな Tokyo Boxプログラム

Tokyo Box(別名多数あり) シリーズは、 値動きの少ない東京時間には動作しない

記事を読む

FEPI / REX ファング&イノベーション・エクイティ・プレミアム・インカムETF

今日は REX社の高配当ETF の残りの1つである、FEPI(REX ファング&イノベーショ

記事を読む

楽天カード超かんたん保険 加入

楽天カード超かんたん保険というものに加入しました。 補償目的ではなく、楽天市場でのポイントアッ

記事を読む

曜日特性(2)

前回の記事「曜日特性」のモデルですけど、実際に運用するとどんなことになるのか検証してみました。

記事を読む

Message

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

AWOWミニpc win11 Pro N100 16GB DDR4 512GB 注文

アマゾンのブラックフライデー、買うものないなと思ってましたが、

【FX】取引手数料の謎

私はどの FX 業者でも NDDタイプの口座を使用しています。 スプ

【FX】MyFXMarkets のデモ口座は簡単に開ける

MyFXMarkets とてもスプレッドが狭いと誰かに言われている

【FX】リアル口座とデモ口座の同時進行(2)

前回の記事「【FX】リアル口座とデモ口座の同時進行」でこう書きました。

【FX】リアル口座とデモ口座の同時進行

FX で自動売買プログラムを使う場合、いきなりリアル口座にて他人の勧め

→もっと見る

  • アクセスカウンター
PAGE TOP ↑