投稿者「kotaro.yasuiwa@gmail.com」のアーカイブ

超シンプルな自動売買プログラム(2) ボリ平ドラゴン式

稼ぐ人のFX 儲けの流儀 (超トリセツ) 稼ぐ人のFX 儲けの流儀 (超トリセツ)
バウンド
インターナショナル・ラグジュアリー・メディア 2012-03-23
売り上げランキング : 186567
Amazonで詳しく見る
by G-Tools

稼ぐ人のFX」というMOOKの第一号にボリ平さん(女性です)という有名なトレーダーの手法が載っています。

ボリ平ドラゴン式

  • 買い:遅行線がボリンジャーの+3σを上抜ける
  • 売り:遅行線がボリンジャーの-3σを下抜ける
  • 決済:5分足の終値が逆行したとき

ずいぶんシンプルです。

以前書かれた著書のものより新しい手法ということで、早速 昨日のシンプルなEAに組み込んでテストしてみましたが、2014/1/1 – 2015/1/1 のバックテストでの結果はほとんどの通貨ペアで赤字が出ています。

このMOOKが出たのは2年前。

それまで通用していた手法がたまたま昨年は通用しなかったのでしょうが、専業で食っていくのは大変だなあ、と思います。

関連記事

超シンプルな自動売買プログラム(EA)

プログラムソース

//
// yasciiSimple03
// ボリ平ドラゴン式
//

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

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

extern int BB_Period=20;
double Deviation=3.0;

//変数の設定//
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()
  {

   if (Volume[0]>1 || IsTradeAllowed() == false) return(0) ;

     double bbw1 = iBands( NULL, 0, BB_Period, Deviation, 0, PRICE_CLOSE, 1, 26) -  iBands( NULL, 0, BB_Period, Deviation, 0, PRICE_CLOSE, 0, 26)+Close[26];
     double bbw2 = iBands( NULL, 0, BB_Period, Deviation, 0, PRICE_CLOSE, 1, 27) -  iBands( NULL, 0, BB_Period, Deviation, 0, PRICE_CLOSE, 0, 27)+Close[27];

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

if (iClose( NULL, 5, 1)==0) return(0);
if (iClose( NULL, 5, 2)==0) return(0);

   //買いポジションのエグジット
   OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);  
   OOPL = OrderOpenPrice();   
   if( Ticket_L != 0 && Ticket_L != -1 && (iClose( NULL, 5, 1) < iClose( NULL, 5, 2)))
    {     
      Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Blue);
      if( Exit_L ==1 ) {Ticket_L = 0;}
    }    

   //売りポジションのエグジット
   OS2 = OrderSelect(Ticket_S, SELECT_BY_TICKET); 
   OOPS = OrderOpenPrice();
   if( Ticket_S != 0 && Ticket_S != -1&& (iClose( NULL, 5, 1) > iClose( NULL, 5, 2)))
    {     
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Red);
      if( Exit_S ==1 ) {Ticket_S = 0;} 
    }   

   //買いエントリー
   if( Close[1] > bbw1 && Close[2] < bbw2 
       && ( 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,Blue);
    }

   //売りエントリー
   if( Close[1] < bbw1 && Close[2] > bbw2 
       && ( 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);
  }

###

名波はるか&Kumaさんが教える!![日経225&mini]で始めるシステムトレード入門

名波はるか&Kumaさんが教える!![日経225&mini]で始めるシステムトレード入門 名波はるか&Kumaさんが教える!![日経225&mini]で始めるシステムトレード入門

名波 はるか Kuma

扶桑社 2008-05-23

売り上げランキング : 305594

Amazonで詳しく見る

by G-Tools

★★★☆☆(当時はよかったが、今は不要?)

名波はるかというちょっと過激な方のグラビアアイドル(私はよく知りませんでしたが)が、Kuma さんという人の作った単一のシステムトレードプログラムを紹介するという、なんとも不思議な構成の本。

エクセルのマクロで作られたトレードシステム「Kuma システム」の入った CD-ROM が付属。

データを自分で打ち込む必要がありますし、資金も結構必要ですし、勝率は低いしプロフィットファクターも低そうで、MetaTrader4 で FX をやるのに比べると敷居が10倍は高いですね。

それにこれをやったからといって、他人のロジックをそのまま使うだけ。

勝っても負けても他人任せなので、自分に進歩がないし、うまくいかなくなっても原因がわかりません。

FX のほうをお勧めします。デモ口座で練習できますからね。

###

]]>

名波はるか&Kumaさんが教える!![日経225&mini]で始めるシステムトレード入門

名波はるか&Kumaさんが教える!![日経225&mini]で始めるシステムトレード入門 名波はるか&Kumaさんが教える!![日経225&mini]で始めるシステムトレード入門

名波 はるか Kuma

扶桑社 2008-05-23

売り上げランキング : 305594

Amazonで詳しく見る

by G-Tools

★★★☆☆(当時はよかったが、今は不要?)

名波はるかというちょっと過激な方のグラビアアイドル(私はよく知りませんでしたが)が、Kuma さんという人の作った単一のシステムトレードプログラムを紹介するという、なんとも不思議な構成の本。

エクセルのマクロで作られたトレードシステム「Kuma システム」の入った CD-ROM が付属。

データを自分で打ち込む必要がありますし、資金も結構必要ですし、勝率は低いしプロフィットファクターも低そうで、MetaTrader4 で FX をやるのに比べると敷居が10倍は高いですね。

それにこれをやったからといって、他人のロジックをそのまま使うだけ。

勝っても負けても他人任せなので、自分に進歩がないし、うまくいかなくなっても原因がわかりません。

FX のほうをお勧めします。デモ口座で練習できますからね。

###

最大ドローダウンについて

おまえのつくる EA は「最大ドローダウンがどれも 10%超えていて使えない」とか思っておられる方がおられるかもしれませんが、それは誤解です。

たとえば本日紹介した VQ システム(クラウドフィルタ付き)ですが、

ここでのテストは10万通貨に統一しています。

もし2万通貨でテストするとこうなります。

10万通貨 2万通貨
総損益$ 23470 4693(23470 の2割)
プロフィットファクター 2.12 2.12
勝率% 44.94 4.94
最大ドローダウン% 13.11 4.71

プロフィットファクター、勝率は掛け金(ロット数)に無関係ですが、総損益は掛け金に比例します。

最大ドローダウンは掛け金とそのときの資金額に左右されます。

ブログや雑誌に最大ドローダウンが高めとか批評を書いている人がいますが、ロット数を考慮しないと意味がないです。

損益の評価も、最大ドローダウン(%)あたりの年利回り(%)で比較するのがいいと思います。これもロットに影響されますけれど。

リスクあたりのリターンということです。

実際に運用するときは最大ドローダウンを2回連続で食らっても資金の5%以内ですむようにロットを調整するのがお勧めです。

上の場合(元金は10000$=約120万円の口座)では2万通貨の場合2回連続最大ドローダウンを食らうと 5%を超えてしまいます。

1万通貨で行うべきですね。

最大ドローダウンを短い期間に2回くらう可能性は1%未満だと思いますので、勇気のある方は2万通貨でも結構ですが。

さらに男気のある方は10万通貨で・・・・

###

超シンプルな自動売買プログラム(EA)

以下のサンプルプログラムを元にして自分の好きな EA を作ることができます。

//
// yasciiSimple01
//

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

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

//変数の設定//
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()
  {

   if (Volume[0]>1 || IsTradeAllowed() == false) return(0) ;

   //買いポジションのエグジット
   OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);  
   OOPL = OrderOpenPrice();   
   if( Ticket_L != 0 && Ticket_L != -1 ) // 決済条件をつける場合はここに&&で続けて書く
    {     
      Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Blue);
      if( Exit_L ==1 ) {Ticket_L = 0;}
    }    

   //売りポジションのエグジット
   OS2 = OrderSelect(Ticket_S, SELECT_BY_TICKET); 
   OOPS = OrderOpenPrice();
   if( Ticket_S != 0 && Ticket_S != -1) // 決済条件をつける場合はここに&&で続けて書く
    {     
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Red);
      if( Exit_S ==1 ) {Ticket_S = 0;} 
    }   

   //買いエントリー
   if( Close[1] < Open[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,Blue);
    }

   //売りエントリー
   if( Close[1] > Open[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);
  }

ちなみに上のプログラムは決済条件をつけていませんので、実行すると

足が確定したときに保有ポジションを持っていると有無を言わせず決済します。

決済条件をつけたい場合は Ticket_S != 0 && Ticket_S != –1 のところを

((Ticket_S != 0 && Ticket_S != -1) || (条件)) と変更してください。

エントリにはとりあえずの条件が付けてありますが、ここを変えるとご自分のロジックを試せます。

サンプルではとりあえずの条件として、

Close[1] < Open[1] つまり前の足が陰線なら買い、Close[1] > Open[1] つまり前の足が陽線なら売り

を しかけるようになっています。

試しに日足のチャートにて走らせますと、 「前日が上昇したときは売り、下降したときは買い」という超単純な逆張りロジック になるわけです。

こんな簡単なもので利益が出るわけない?

結果 USDCAD(米ドル加ドル)日足 2014/1/1-2015/1/1

利益でてまっせ。年率 91.6%も。

こういう地域関連性の強い通貨ペアは一方的なトレンドは発生しにくいですからね。

昨日上がったから今日は下げた方がいいな、と思う人が圧倒的にいるのでしょう。

結果 EURUSD(ユーロ米ドル)日足 2014/1/1-2015/1/1

利益でてまっせ。年率 197.8%

結果 AUDUSD(豪ドル米ドル)日足 2014/1/1-2015/1/1

利益でてまっせ。年率 216%

上は去年1年の結果ですが、今年も使えるかな?

今月(2015/1/1-1/31)のテストでは EURUSD だけ利益が出ています。

###

 

 

星降る夜のパソコン情話 / 中村 正三郎

星降る夜のパソコン情話

中村 正三郎

ビレッジセンター出版局 1996-06

売り上げランキング : 1818810

Amazonで詳しく見る

by G-Tools

★★★☆☆(ざべか・・・何もかも、みな懐かしい)

雑誌「ざべThe Basic)」の愛読者であった私は 中村正三郎 の連載「電脳曼陀羅」を毎回楽しみにしていましたたが、そこでの Windows95 批判記事を当時の日本マイクロソフト(短小フニャ○ン)の社長の成毛眞が卑劣な圧力をかけて中止にしました。

あれからマイクロソフト(短小フニャ○ン)のことは大嫌いになったんですね。

え、Macintosh?

もっとキライ。^^

この本はその事件後にパソコン通信ASAHIネット」で掲載された原稿をもと書籍化。

当時はまだインターネットがほとんど普及していなかった。

インターネットに対抗しようとしていたバカども(MSN、Nifty、PC-VAN、NEC)の末路を予言しているのはおもしろい。

しかし、内容は古い。

たかだか 20年しか経っていないのに、こんなに世の中が進歩しているのはやはりインターネットのおかげなんでしょうね。

当時 Windows3.1 で院内からこっそりインターネットに繋ぐのは大変でした。

目次

  1. まえがき
  2. 第1回 エイプリルフールニュース
  3. 第2回 初心者のための正しいパソコン購入ガイド
  4. 第3回 聞きかじり次世代パソコンOS一巡り
  5. 第4回 パフォーマがやってきた
  6. 第5回 祝朝日ネット・インターネット接続記念 80分間世界一周
  7. 第6回 個人でIP接続に挑戦した
  8. 第7回 Telentを見直したおれ
  9. 第8回 大蠢動
  10. 第9回 SCSIマジック
  11. 第10回 スモール・イズ・ビューティフル
  12. あとがき

 

関連記事

特選 星降る夜のパソコン情話―Linux狂騒曲 / 中村正三郎

無関連音楽 (星降る森 池田綾子)

###

クラウドフィルタ考案(2)

昨日の記事「クラウドフィルタ考案」で発案したクラウドフィルタですが、かけ方を変えてみました。

プライスが雲の中にあるときはエントリしないことにするわけですが、「雲の上にあるときは買いのみ、下にあるときは売りのみ」の条件をはずして、「中にあるときのみエントリしない」としてみました。

ドル円4時間足(2014/1/1 – 2015/1/1) VQ システムにて評価します。

プロフィットファクターは前回より低下していますが、勝率はわずかにアップし、なにより最大ドローダウンが減少しています。

回数もあまり削減されていません(フィルタなしの場合は 205)。

収益はむしろアップ(フィルタなしの場合は 22017)。

効果はいいようです。

ちなみに前回(「雲の上にあるときは買いのみ、下にあるときは売りのみ」)は、 こちら。

まとめ

フィルタなし 前回(クラウド:強め) 今回(クラウド:弱め)
総損益$ 22017 13269.44 23470.13
PF 1.87 2.50 2.12
勝率% 43.41 43.37 44.94
最大ドローダウン% 14.41 32.77 13.11
最大勝ち$ 4777.44 4777.44 4777.44
最大負け$ -906 -591.79 -906
勝数 89 36 80
負数 116 47 98
取引回数 205 83 178

前回との比較では最大ドローダウンが約1/3 なので安心感が違いますね。

関連記事

クラウドフィルタ考案

クラウドフィルタ(弱め)のプログラムソース解説

1 宣言部にこれを加える。

int       Tenkan_sen=9;
int       Kijun_sen=26;
double    Senkou_span_b=52;

2 start 関数内に次の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);

3 売買条件に次の条件を加える。

&& ((Close[1]> cla1 && Close[1]>clb1)||(Close[1]< cla1 && Close[1]<clb1))

 

###

 

 

 

 

クラウドフィルタ考案

一目均衡表は大好きですが、それで使われるミステリアスなをフィルタにしてみようと思いつきました。

とは先行スパンA先行スパンB の間の領域です。

上でオレンジのラインが先行スパンA で、水色のラインが先行スパンB です。

プライスがこの間、つまり雲の中にあるときはエントリしないことにします。

雲の上にあるときは買いのみ、下にあるときは売りのみ、中にあるときはエントリしない・・・

このルールをクラウドフィルタと名付けることにします。

ドル円4時間足(2014/1/1 – 2015/1/1)で VQ システムにて評価します。

フィルタなし

まあまあの結果ですね。

クラウドフィルタあり

昨年前半のトレンドレスのところで、もっとロスをカットできるかと思ったら十分とりきれていませんね。

勝率は不変ですが、プロフィットファクタはアップ。最大ドローダウンがやや下がってめでたしめでたし。

面白いことに勝率はロングポジションで下がっているのにショートポジションではアップ。

トレード回数が 4割に減っているのに総損益は 6割になっており、効率がよくなっています。

他のフィルタと組み合わせてみましょうか。

###

メインマシンの入れ替え / Linux

高槻でプライベートに使っているメインマシン(Optiplex755)がちょっと病気。

症状はキーボード入力中にウィンドウからフォーカスがなくなってしまうこと。

もう一度ウィンドウをマウスでクリックしてアクティブにしないと入力できません。所見やプログラムを書いているときに頻発するので調子が出ません。キーボードを替えましたが、同じ症状。

USB コントローラーあたりかと思い、キーボードを他のUSB端子(別のコントローラーにつながっている端子)に繋ぐが、同じ症状です。

キーボードでなく、マウスが勝手にクリックして他のウィンドウをアクティブにするのかもしれませんが、どうもそうは思えず・・・

ということで、ほぼ同じものをゲットしていたので、本体をそちらに移行することにしました。

Optiplex745 2台目ゲット

1350円でゲットした分です。

このマシンのメモリを 2GBに増設し、光学ドライブを DVD-ROM から DVD-RW に換装。HDDファンと筐体のファンと電池も入れ替え・・・このあたりの部品は他の冬眠中のマシン(ドナーと呼んでいます)から拝借。

HDD は現在まで使っていたのを直接移すとトラブルが発生したときに元のマシンにも戻せなくなる可能性があるので、物理的に同じ容量のドライブにデュープしてそちらを移植することに。

コピー後のHDD を新しい(中古だが)マシンにつなぐと、すんなり起動。

Linux は Windows のようにプロテクトがかかっていないので、楽チンです。

CPUは以前のマシンが Core2Duo E4500 / 2.20GBz ですが、今度はCore2Duo E6400 / 2.13GHz となっています。

CPU の周波数はわずかに低くなったのですが、FSB が 800⇒1066MHz とメモリ回りが速くなっている分、パフォーマンスは以前よりもアップ。

見た目も同じだし、 違和感はまったくありません。

前のマシンも症状を我慢すれば使えるので、ほぼ同じマシンがもう一台できた格好。

もう一度言う、Linux はラクチン

###

BBW フィルタの使い方 / 決済編

BBW フィルタの2つめの使い方として、急騰あるいは急落後に ちゃぶついたときの決済というのを挙げましたが、次のチャートで説明します。

ドル円 5分足です。

バンドウォークで急落していますが、AとCのところで、ボリンバンドの収縮が始まっているのがサブウィンドゥの「BBWがシグナルを下抜けて」いることで示されています。そこでいったん決済です。

Bで再びボリンバンドが拡大し始めていますね。サブウィンドゥの「BBWがシグナルを上抜けて」いますから。A でできた下ヒゲが抵抗線になっていますから、それを下に越えたところで再び売りです。

それでCで手仕舞い。

おまけ

下は同じ期間の一目均衡表です。

Aですでに陰転していた雲を下抜け、転換線もクロスなので売りでしょう。

B(先ほどのチャートのAに相当)でのちゃぶつきは BBW を見れば決済してもいいですね。普通は持続でしょうが。

CではBBW を見れば決済ですね。遅行線が上向きかけているので、一目均衡表でも決済するでしょうが。

裁量トレードなら一目均衡表がわかりやすいですよね。

関連記事

Bollinger BandWidth について

###

ブレイクアウトシステムと BBW フィルタ

自作ブレイクアウトシステム(yasciiBreakout05)に BBW フィルタを組み込んでみました。

ドル円 4時間足 2014/1/1-2015/1/1

1つの負けが減って、1つ勝ちが増えただけのようです。

ちなみに前作はこちら。

まあ、ブレイクアウトするときは当然 BBW の値は増加しているわけで、やらずもがな(意味がなかった)というオチかなとも思っていましたが、1つだけでも改善したのはもうけものです。

プログラムソース

 

//
// yasciiBreakout06.mq4
//
//    with BBW filter

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

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

extern int Fast_period = 14 ;
extern int Slow_period = 40 ;
extern int Range_period = 21 ;
extern double margin = 0.0 ;
extern double Range_threshold = 550.0 ;

extern int       BB_Period=20;
double    Deviation=1.0;

extern double ILC = 160.0 ;
// extern double TP = 1100 ;

//変数の設定//
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 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) ;

   double FastHH2 = Close[iHighest(NULL, 0, MODE_CLOSE, Fast_period, 2)];
   double FastLL2 = Close[iLowest(NULL, 0, MODE_CLOSE, Fast_period, 2)];
   double SlowHH2 = Close[iHighest(NULL, 0, MODE_CLOSE, Slow_period, 2)];
   double SlowLL2 = Close[iLowest(NULL, 0, MODE_CLOSE, Slow_period, 2)];

   double value_range = High[iHighest(NULL, 0, MODE_HIGH, Range_period, 2)]-Low[iHighest(NULL, 0, MODE_LOW, Range_period, 2)];

   double bbw1 = iBands( NULL, 0, BB_Period, Deviation, 0, PRICE_CLOSE, 1, 1) -  iBands( NULL, 0, BB_Period, Deviation, 0, PRICE_CLOSE, 0, 1);
   double bbw2 = iBands( NULL, 0, BB_Period, Deviation, 0, PRICE_CLOSE, 1, 2) -  iBands( NULL, 0, BB_Period, Deviation, 0, PRICE_CLOSE, 0, 2);

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

   //買いポジションのエグジット
   OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);  
   OOPL = OrderOpenPrice();   
   if( ( (Close[2] >=FastLL2-margin && Close[1] < FastLL2-margin) || ( OOPL - lc*Point >= Close[1] ) ) //|| ( OOPL+TP*Point <= Close[1] ))
       && ( Ticket_L != 0 && Ticket_L != -1 ))
    {     
      Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Blue);
      if( Exit_L ==1 ) {Ticket_L = 0;}
    }    

   //売りポジションのエグジット
   OS2 = OrderSelect(Ticket_S, SELECT_BY_TICKET); 
   OOPS = OrderOpenPrice();
   if(    ((Close[2] <=FastHH2+margin && Close[1] > FastHH2+margin) ||( OOPS + lc*Point <= Close[1] ))  //|| ( OrderOpenPrice()-TP*Point >= Close[1] ))
       && ( Ticket_S != 0 && Ticket_S != -1 ))
    {     
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Red);
      if( Exit_S ==1 ) {Ticket_S = 0;} 
    }   

   //買いエントリー
   if(    Close[2] <= SlowHH2+margin && Close[1] > SlowHH2+margin && value_range < Range_threshold*Point && bbw1 > bbw2
       && ( 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,Blue);
    }

   //売りエントリー
   if(    Close[2] >= SlowLL2-margin && Close[1] < SlowLL2-margin  && value_range < Range_threshold*Point && bbw1 > bbw2
       && ( 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);
  }

###

VQ システムとフィルタ

本日、Boliinger BandWidth のプログラムを作りましたが、それをもとに BBW フィルタを作り、VQ を使った自作 EA に組み込んでみました。

このシステムにはすでに、

  1. Damiani フィルタ
  2. QQE フィルタ

を組み込んだものを作っています。

それぞれのフィルタの効果を調べてみました。

ドル円 4時間足 2014/1/1 – 2015/1/1

なし

Damiani

QQE

BBW

QQE+BBW

総損益$

22017

22141

10489

8149

3112

PF

1.87

1.88

2.15

2.26

1.87

勝率%

43.41

43.63

41.25

45.9

46.88

最大ドローダウン

39.22

14.32

45.83

16.64

26.75

最大勝ち$

4777.44 4777.44 4777.44

2727.81

1805.5

最大負け$

-906 -906

-591.79

-522.94

-519.2

勝数

89 89 33 28 15

負数

116 115 47 33 17

取引回数

205 204 80 61 32
  1. Damiani は 1回しか削減しませんでしたが、かなり大きな負けをカットしてくれたようで最大ドローダウンが激減しています。まあ、たまたまでしょうが。
  2. QQE は最大負けをカット。最大勝ちの分はカットせず。勝率やドローダウンはかえって少し悪くなったものの、PF(プロフィットファクター)は改善。回数が減るのがイタイですね。
  3. BBW はさらに回数が減ったが、勝率とPFはいい。ただ最大勝ちの分をカットしたのは残念。
  4. QQE+BBW ではその傾向がさらに顕著に。勝率 47.06%は魅力的ですがねぇ。

さらにいいフィルタを考え出すことにします。

システムによってフィルタの相性があるでしょうね。

たとえば BBW はブレイクアウトシステムにはもってこいだと思います。

関連記事

###

Bollinger BandWidth について

ボリンジャーバンド Bollinger Band という、投資家にとってはなくてはならないものがあります。

ご存じでない方、メインチャートに表示されている、平均足を上下から包むような緑のバンドがそれですよ。

これなくては投資の判断ができません (EA に任せきりの私が言っても説得力はないですが)。

Bollinger BandWidth というのはこのバンド幅のことです。

+σバンドとセンターバンドとの幅をとれば、StandardDeviation(この場合はインディケーター) と全く同じです。

ところが、この値は%表示ではなく、元となる値(ここでは価格)によって絶対値がそれぞれ異なってきます。

このような値は上昇や下降の判定が難しくなるので、シグナル(たいてい移動平均線)を作って、それとの大小関係をもって判断します。

そのもののカーブを時間軸方向にずらしたものもシグナル線として使えますが。

で、Bollinger BandWidth とシグナルが出るインディケーターを自作してみました。

上のチャートの黄色のVと緑のAは私があとで適当に書き加えました。

で、これがなんの役に立つのかというと、私の知る限り2つあります。

急激な上昇または下降の始まりを知る

「緑のA」をつけた部分では、Bollinger BandWidth がシグナルを上抜けていますが、これはトレンド発生(の可能性)を示します。

ブレイクアウトなどでエントリの判定基準の一つ(つまりフィルタ)に使えますね。

上昇か下降かの判定はできませんので、他の指標(VQ とか ADXDMI とかいろいろあるでしょ)で判断してください。

バンドウォークなどの利益確定に使う

「黄色のV」をつけた部分では、Bollinger BandWidth がシグナルを下抜けていますが、これはトレンド衰退の開始(の可能性)を示します。

バンドウォーク時などトレンドに乗っていると、最後の最後はだんだん ちゃぶついて来ますよね。

そのときにどこかで一度利益確定をしておこうかと思いますが、どこでやるのか非常に迷います。

そういうときの判断に役立つわけです。

シグナルを下抜けたところで早めに利益確定しておくと、すばやく頭を切り替えて次の勝負に取り掛かれますから。

プログラムソース

//+------------------------------------------------------------------+
//|                                            BBWRatio_S.mq4
//|                                                Yascii             
//|               MA_Period が 1 のときは単に曲線を1つずらします 
//+------------------------------------------------------------------+

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Orange
#property indicator_color2 Aqua
#property indicator_width1 2
#property indicator_width2 1

//---- input parameters
extern int       BB_Period=20;
extern int       MA_Period=5;
extern double    Deviation=1.0;

double buf1[];
double buf2[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(2);
   IndicatorDigits(MarketInfo(Symbol(), MODE_DIGITS));
   SetIndexDrawBegin(0,BB_Period);
   SetIndexLabel(0,"BBandWidthRatio");
   SetIndexBuffer(0, buf1);
   SetIndexDrawBegin(1,BB_Period);
   SetIndexBuffer(1, buf2);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {

   int i ;
   if(Bars<=BB_Period) return(0);
   int counted_bars=IndicatorCounted();
   int limit = Bars - counted_bars;
   if(counted_bars>BB_Period) i=Bars-counted_bars-1;

   i=Bars-BB_Period;

   for (i=limit - BB_Period; i>=0; i--)
   {
      buf1[i] = iBands( NULL, 0, BB_Period, Deviation, 0, PRICE_CLOSE, 1, i) -  iBands( NULL, 0, BB_Period, Deviation, 0, PRICE_CLOSE, 0, i);
    }

    if(MA_Period >1){
      for (i=limit - BB_Period; i>=0; i--)
      {
         buf2[i] = iMAOnArray(buf1,0,MA_Period,0,MODE_EMA,i);
      }
   }
   else     // MA_Period が 1 のとき
   {
      for (i=limit - BB_Period; i>=0; i--)
      {
         buf2[i] = buf1[i+1];
      }
   }
    return(0);

  }
//+------------------------------------------------------------------+

###

平均足システムの別種 / Heiken_Ashi_Realで平均足の移動平均線クロス(2)

前回の記事「平均足システムの別種 / Heiken_Ashi_Realで平均足の移動平均線クロス」 でご紹介したシステムを若干改良してみました。

改良点は、以前に作った従来の平均足システムの売買条件と決済条件を加えたこと。

売買の際は

  • 1つ前の足が売り買いと同じ方向を向いている場合に限定(アンド条件)・・・これはおそらく無意味

イクシットの際には

  • 1つ前と2つ前の足が売り買いと逆の方向を向いている場合も決済する(オア条件)

結果(ドル円 4時間足 2014/1/1 – 2015/1/1)

最大ドローダウンが減少し、総損益が上昇

売買回数が増えていますが、早く抜けている分、次の売り買いのタイミングを逃さないですむからでしょうね。

ちなみに前作(yasciiHA03)の結果

 

関連記事

プログラムソース

//
// yasciiHA03a.mq4
//           Heiken_Ashi_Real(移動平均線クロス)を使用
//         通常平均足との組み合わせ

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

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

extern int Fast_period = 14 ;
extern double margin = 0.0 ;

extern double ILC = 20.0 ;

//変数の設定//
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 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) ;

       double HA_open1 = ( Open[2] + Close[2] ) / 2.0 ;
       double HA_close1 = ( Open[1] + Close[1] + High[1] + Low[1] ) / 4.0 ;
       double HA_open2 = ( Open[3] + Close[3] ) / 2.0 ;
       double HA_close2 = ( Open[2] + Close[2] + High[2] + Low[2] ) / 4.0 ;

       double HA_openMA1 = iCustom(NULL,0,"Downloads\\Heiken_Ashi_Real",2,1);
       double HA_openMA2 = iCustom(NULL,0,"Downloads\\Heiken_Ashi_Real",2,2);
       double HA_closeMA1 = iCustom(NULL,0,"Downloads\\Heiken_Ashi_Real",3,1);
       double HA_closeMA2 = iCustom(NULL,0,"Downloads\\Heiken_Ashi_Real",3,2);

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

   //買いポジションのエグジット
    OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);  
    OOPL = OrderOpenPrice();
    if(    ((HA_openMA1 > HA_closeMA1 && HA_openMA2 > HA_closeMA2) || ( HA_open1 > HA_close1 && HA_open2 > HA_close2) ||( OOPL - lc*Point >= Close[1] ) ) 
            && ( 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(    ((HA_openMA1 < HA_closeMA1 && HA_openMA2 < HA_closeMA2)||( HA_open1 < HA_close1 && HA_open2 < HA_close2)||( OOPS + lc*Point <= Close[1] ) ) 
          && ( Ticket_S != 0 && Ticket_S != -1 ))
    {     
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Aqua);
      if( Exit_S ==1 ) {Ticket_S = 0;} 
    }   

   //買いエントリー
   if( HA_openMA1 < HA_closeMA1 && HA_openMA2 < HA_closeMA2 && HA_open1 < HA_close1
       && ( 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( HA_openMA1 > HA_closeMA1 && HA_openMA2 > HA_closeMA2 && HA_open1 > HA_close1 
       && ( 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,Aqua);     
    } 

   return(0);

  }

###

いろんなシステムの総括

QQE の弱点を前回指摘しましたが、メインウィンドゥに

  1. 平均足移動平均線クロス
  2. ADXcross(赤と青の矢印)

を表示して、サブウィンドゥに、

  1. QQE
  2. VQ
  3. TII(Schaff Trend Cycle と似ています)

を表示してみました。

見比べてください。

売買サインが表示されていない平均足クロス、QQE、TII ではそれぞれの線のクロスでサインが出るとお考えください。

比較すると、売買サインがよく一致するのは、平均足クロス、ADXcross、VQ で、TII と QQE はトレンドはまずまずですが、レンジでボロが出ますね。

パラメーターの調整ではカバーしきれないくらいです。

平均足クロスはもともとの原理ではそもそもパラメーターがないのです。

調整しようがないわけですが、調整なんかしなくても優れているってことはやっぱり優れているってことですね。

オーバーフィッティング(カーブフィッティング)にならないわけですから。

###

QQE を使った自動売買ソフト(3)

前回の記事「QQE を使った自動売買ソフト(2) 」でご紹介した、QQE という指標を使った EA(expert advisor)ですが、昨日のテストではさんざんな結果に。

チャートの楕円で示したようにここのところドル円相場は規則正しい上下のボックス相場~三角もち合いですが、QQE はその動きに全くついていけておりません

メインウィンドゥに表示した平均足クロスがきっちり値幅をとれているのと比較してください。

楕円以外のところを比較しても、平均足クロスに比べて QQE のクロスはポイントをかなりはずしていますね。

ということで、QQE システムは長ーいトレンドがないと、一方的に損失をふくらませてしまう欠点があるようです。

関連記事

###

平均足システムの別種 / Heiken_Ashi_Realで平均足の移動平均線クロス

Heiken_Ashi_Real というインディケーターが MetaTrader4 で無料ダウンロードできます。

平均足の始値と終値で別々に移動平均線を作って、そのクロスを売買シグナルに利用するというものです。

ピンクと黄色(わかりやすいように色をデフォルトとは変えてあります)の2本の移動平均線がクロスした次の足の始値で売買すればいいようです。

本当に役立つのか試しに自動売買プログラム(EA)化してみました。

ドル円 4時間足 2014/1/1 – 2015/1/1

プロフィットファクター1.98、勝率46.93% となかなかいいではないですか。

最大ドローダウンが 29.71%と高いですが。

資産曲線

昨年3ヶ月間(2014/10/1 – 2015/1/1) ならこんな具合。

やはりトレンド相場には強いですね。

いちおう、昨年のドル円相場のちゃぶついている時期の1月1日から8月1日の期間(下の楕円で囲んだ部分)の成績をとってみました。

 

2014/1/1 – 2014/8/1

なんと! 前半は苦しいが、後半の4月以降で(むしろ前半より値幅が減少しているのに!)取り戻しています

トレンドがなくても勝てる可能性があるってことでしょうか。

もっと短い時間足(ミニトレンドが多いはず)では成績は悪くなるようなのですがナゾですね。

もう少し研究してみます。

プログラムソース(Heiken_Ashi_Real.ex4 が必要)

 

//
// yasciiHA03.mq4
//           Heiken_Ashi_Real(移動平均線クロス)を使用
//

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

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

extern int Fast_period = 14 ;
extern double margin = 0.0 ;

extern double ILC = 20.0 ;

//変数の設定//
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 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) ;

       double HA_openMA1 = iCustom(NULL,0,"Downloads\\Heiken_Ashi_Real",2,1);
       double HA_openMA2 = iCustom(NULL,0,"Downloads\\Heiken_Ashi_Real",2,2);
       double HA_closeMA1 = iCustom(NULL,0,"Downloads\\Heiken_Ashi_Real",3,1);
       double HA_closeMA2 = iCustom(NULL,0,"Downloads\\Heiken_Ashi_Real",3,2);

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

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

   //買いエントリー
   if( HA_openMA1 < HA_closeMA1 && HA_openMA2 < HA_closeMA2
       && ( 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( HA_openMA1 > HA_closeMA1 && HA_openMA2 > HA_closeMA2 
       && ( 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,Aqua);     
    } 

   return(0);

  }

//終わり

###

博覧強記の仕事術 / 唐沢 俊一

博覧強記の仕事術 博覧強記の仕事術

唐沢 俊一

アスペクト 2009-06-25

売り上げランキング : 704610

Amazonで詳しく見る

by G-Tools

★★★★☆(えらくマトモ)

怪人にしてオタクのカラサワ堂主人の仕事術というか勉強術を披露。

知識を詰め込むだけではなく、アウトプットのために自分のなかで評価、加工、整理することが重要だというお話。

知識を整理することで、その知識を別の対象に応用できるようになるというわけ。

とにかく本を読んで自分の頭でよく考えるのが最もためになるってことのようです。

あらら、カラサワ堂にしてはまともな結論に・・・

関連記事

###

ADX インディケーターについて

4つのサブウインドゥはいずれも ADX インディケーターです。

上から

  1. 標準の ADXDMI
  2. Advanced_ADX
  3. MW_ADXDMI
  4. 自作(yasciiADX)

です。

問題は、「標準の ADXDMI」の ADX値は白線で表されているのですが、「Advanced_ADX」の ADX値(峰の高さで示されている)と形状が違うことです。

「MW_ADXDMI」は「えつこチャート」で使うものですが、この ADX値はスケールが違うものの「標準の ADXDMI」の ADX値と一致します。

よく見ると、「MW_ADXDMI」、「標準の ADXDMI」の両者には「Advanced_ADX」にはないパラメーターがあり、それが「Smooth」と名付けられています。

もしや平滑化しているのかと思い、ADX のナマの値とそれを Smooth で表された期間で平滑化した値(いわゆるシグナル:ADXRと呼ぶ人も)の2つを表示させるインディケーターを自作したところ、疑問が氷解。

  1. 「MW_ADXDMI」、「標準の ADXDMI」では平滑化された ADXを表示
  2. 「Advanced_ADX」はナマのADX値を使っている

ということですね。

自作のインディケーターは ADX の上昇を知るためにも使えます。

  • 「ADX>平滑化したシグナル」 なら上昇過程
  • 「ADX<平滑化したシグナル」 なら下降過程

ですね。

ADX がある範囲(18~38)を上昇するときはトレンドが強まっているとき(儲けどき)なんです。

プログラムソース(yasciiADX)

//+------------------------------------------------------------------+
//|               yasciiADX
//|               ADX and Signal
//+------------------------------------------------------------------+
#property copyright "yascii"

#property indicator_separate_window
#property indicator_buffers 2

#property indicator_color1 Red
#property indicator_color2 Turquoise

#property indicator_minimum 0
// #property indicator_maximum 100
#property indicator_level1 18
#property indicator_level2 38
#property indicator_level3 50

//---- input parameters
extern int DMIPeriod=14;
extern int Smooth=10;
//---- buffers

double ADXs_S[];
double ADXs[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {

   IndicatorBuffers(2);
   SetIndexBuffer(0,ADXs);
   SetIndexBuffer(1,ADXs_S);
   IndicatorShortName("ADX("+DMIPeriod+","+Smooth+")");

   SetIndexLabel(0,"ADX");
   SetIndexLabel(1,"Signal");

   SetIndexDrawBegin(0,DMIPeriod);
   SetIndexDrawBegin(1,DMIPeriod);

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Average Directional Movement Index                               |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted();
   if(Bars<=DMIPeriod) return(0);
   int   limit = Bars - counted_bars;
   if(limit == Bars) limit -= Smooth-1;
   for(int i=limit-1; i>=0; i--)
   {
       ADXs[i] = iADX(NULL, 0, DMIPeriod, PRICE_CLOSE,MODE_MAIN, i);
   }
   for (i=limit-1; i>=0; i--)
   {
       ADXs_S[i] = iMAOnArray(ADXs,0,Smooth,0,MODE_EMA,i);
   }

      return(0);
  }
//+------------------------------------------------------------------+

###

VQ を使った自動売買ソフト

昔一世を風靡したインディケーターに VQ があります。

最近なぜか人気は下火になっていますが、実力はA級だと思っています。

これもトレンドに強い指標ですね。

 

サブウィンドゥが VQ です。

この矢印の通りに売買すれば結構勝てる気がしませんか?

ちゃぶついているところはミスショットが多いですが、ミニトレンドは結構最初から最後まできれいにとってくれています。

で、この矢印とおりに売買するソフトを作ってテストしてみました。

USDJPY 4時間足(2014/1/1-2015/1/1)

フィルタなしでも結構うまくいっています。

取引数も結構多いので、ここからフィルタをかけて磨けばなかなかよくなりそうな予感がします。

資産曲線

ドローダウンも埋めていけそうな気がしますね。

###

Trend Intensity Index を使った EA(2) Damiani filter版

以前の記事で紹介した Trend Intensity Index(TII) という指標で作った EA ですが、Damiani フィルタにより ノントレンドのときのエントリをカットしてみました。

バックテスト結果(2014/1/1-2015/1/4)USDJPY 1時間足

プロフィットファクター 1.69、勝率 39.84%、最大ドローダウン 15.37% と若干改善。資金は 2.26倍に。

もう少し効きのいいフィルタがほしいですが。

ちなみに改善前

収益曲線

ちなみに改善前

ドローダウンは見るからに改善しましたね。Damiani、やるじゃん。

関連記事

プログラムソース

//
//    yasciiTII03
//            with Damiani
//   動作には TII_RLH.ex4 が必要

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

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

extern int Major_Period=16;
extern int Minor_Period=11;
int Major_MaMode=1; //0=sma, 1=ema, 2=smma, 3=lwma, 4=lsma
extern int Major_PriceMode=0;//0=close, 1=open, 2=high, 3=low, 4=median(high+low)/2, 5=typical(high+low+close)/3, 6=weighted(high+low+close+close)/4
color LevelColor=Silver;
extern int BuyLevel=35;
int MidLevel=50;
extern int SellLevel=77;
extern int R1Level=3;
extern int R2Level=97;
extern int Fast_period = 14 ;
extern double margin = 0.0 ;

extern double ILC = 60.0 ;

//---- input parameters damiani_filter用
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   OOPL;
double   OOPS;

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

       double tii1 = iCustom(NULL, 0,"TII_RLH", Major_Period, Major_MaMode, Major_PriceMode, Minor_Period, LevelColor , BuyLevel, MidLevel , SellLevel, 0 , 1);
       double tii2 = iCustom(NULL, 0,"TII_RLH", Major_Period, Major_MaMode, Major_PriceMode, Minor_Period, LevelColor , BuyLevel, MidLevel , SellLevel, 0 , 2);
       double tii3 = iCustom(NULL, 0,"TII_RLH", Major_Period, Major_MaMode, Major_PriceMode, Minor_Period, LevelColor , BuyLevel, MidLevel , SellLevel, 0 , 3);       
       double tii4 = iCustom(NULL, 0,"TII_RLH", Major_Period, Major_MaMode, Major_PriceMode, Minor_Period, LevelColor , BuyLevel, MidLevel , SellLevel, 0 , 4);   
       double tiiSM1 = (tii1+tii2+tii3) / 3.0 ;
       double tiiSM2 = (tii4+tii2+tii3) / 3.0 ;

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

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

   //買いエントリー
   if( ((tii1 > BuyLevel && tii2 < BuyLevel) || (tii1 > tiiSM1 && tii2 < tiiSM2 && tii1 > BuyLevel && tii1 < R2Level) ) && 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,Red);
    }

   //売りエントリー
   if(( (tii1 < SellLevel && tii2 > SellLevel) || (tii1 < tiiSM1 && tii2 > tiiSM2 && tii1 > R1Level && tii1 < SellLevel)) && 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,Blue);     
    } 

   return(0);

  }
// 終わり

###

Trend Intensity Index を使った EA

以前の記事で紹介した Trend Intensity Index(TII) という指標で作った EA ですが、実際にサーバー上で運用すると致命的バグを発見。

修正したコードを載せます。

バックテスト結果(2014/1/1-2015/1/4)USDJPY 1時間足です。

プロフィットファクター 1.38、勝率 37.50%、最大ドローダウン 26.90% と散々な結果でした。

レンジ相場を除くとまずまずかもしれませんが。

関連記事

プログラソース(TII_RLH.ex4 が必要)

//
//    yasciiTII02
//

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

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

extern int Major_Period=18;
extern int Minor_Period=12;
int Major_MaMode=1; //0=sma, 1=ema, 2=smma, 3=lwma, 4=lsma
extern int Major_PriceMode=0;//0=close, 1=open, 2=high, 3=low, 4=median(high+low)/2, 5=typical(high+low+close)/3, 6=weighted(high+low+close+close)/4
color LevelColor=Silver;
extern int BuyLevel=37;
int MidLevel=50;
extern int SellLevel=65;
extern int R1Level=3;
extern int R2Level=97;

extern int Fast_period = 14 ;
extern double margin = 0.0 ;

extern double ILC = 60.0 ;
// extern double TP = 110 ;

//変数の設定//
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 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) ;

       double tii1 = iCustom(NULL, 0,"TII_RLH", Major_Period, Major_MaMode, Major_PriceMode, Minor_Period, LevelColor , BuyLevel, MidLevel , SellLevel, 0 , 1);
       double tii2 = iCustom(NULL, 0,"TII_RLH", Major_Period, Major_MaMode, Major_PriceMode, Minor_Period, LevelColor , BuyLevel, MidLevel , SellLevel, 0 , 2);
       double tii3 = iCustom(NULL, 0,"TII_RLH", Major_Period, Major_MaMode, Major_PriceMode, Minor_Period, LevelColor , BuyLevel, MidLevel , SellLevel, 0 , 3);       
       double tii4 = iCustom(NULL, 0,"TII_RLH", Major_Period, Major_MaMode, Major_PriceMode, Minor_Period, LevelColor , BuyLevel, MidLevel , SellLevel, 0 , 4);   
       double tiiSM1 = (tii1+tii2+tii3) / 3.0 ;
       double tiiSM2 = (tii4+tii2+tii3) / 3.0 ;

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

   //買いポジションのエグジット
    OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);  
    OOPL = OrderOpenPrice();
    if(    ((tii1 < R2Level && tii2 > R2Level) || (tii1 < tiiSM1 && tii2 > tiiSM2 && tii1 > BuyLevel && tii1 < R2Level) || ( OOPL - lc*Point >= Close[1] ) ) //|| ( OOPL+TP <= Close[1] ))
            && ( 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(    ((tii1 > R1Level && tii2 < R1Level )|| (tii1 > tiiSM1 && tii2 < tiiSM2 && tii1 > R1Level && tii1 < SellLevel)||( OOPS + lc*Point <= Close[1] ) ) //|| ( OrderOpenPrice()-TP >= Close[1] ))
          && ( Ticket_S != 0 && Ticket_S != -1 ))
    {     
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue);
      if( Exit_S ==1 ) {Ticket_S = 0;} 
    }   

   //買いエントリー
   if( ((tii1 > BuyLevel && tii2 < BuyLevel) || (tii1 > tiiSM1 && tii2 < tiiSM2 && tii1 > BuyLevel && tii1 < R2Level) )
       && ( 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(( (tii1 < SellLevel && tii2 > SellLevel) || (tii1 < tiiSM1 && tii2 > tiiSM2 && tii1 > R1Level && tii1 < SellLevel))
       && ( 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);

  }
###

QQE を使った自動売買ソフト(2)

前回の記事「QQE を使った自動売買ソフト」でご紹介した、QQE という指標を使った EA(expert advisor)ですが、プログラムソースを載せます。

QQE_with_Alerts.ex4 というインディケーターが必要ですが、MetaTrader4 からダウンロードできます。

USDJPY 4時間足(2014/1/1-2015/1/1)の結果

パラメーターは SF = 4、LossCut = 20。

プロフィットファクター4.57(過去最高)。勝率 59.38%(過去最高)。最大ドローダウン 6.75%(過去最低=最良)。

ただ、売買回数が少ないです。11日に1回です。

そのため、資産は 3.2倍にしかなりません。^^

USDJPY 1時間足(2014/1/1-2015/1/1)の結果

パラメーターは SF = 5、LossCut = 40。

プロフィットファクター 2.26。勝率 50.00%。最大ドローダウン 8.59% と数字は悪くなりますが、売買回数は倍以上になります。

資産は 1.8倍どまり。なかなかうまくいきません。

いずれにしろトレンド相場でしか稼げないタイプです。

ちなみに時間足が短くなれば成績は悪化します。

関連記事

プログラムソース

//
// yasciiQQEcross01.mq4
//              QQE_with_Alerts.ex4 が必要
//                

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

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

extern int SF = 5;
extern double LossCut = 40.0 ;

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

double   QQE_MAIN1 ;
double   QQE_Signal1 ;
double   QQE_MAIN2 ;
double   QQE_Signal2 ;

int OS ;

int start()
  {

    if (Volume[0]>1 || IsTradeAllowed() == false) return(0) ;

   QQE_MAIN1 = iCustom(NULL, 0, "Downloads\\QQE_with_Alerts" ," --- INDICATOR SETTINGS ---",SF," --- Alerts ---",50,true,true,"alert.wav",false ,0, 1 );
   QQE_Signal1 = iCustom(NULL, 0, "Downloads\\QQE_with_Alerts" ," --- INDICATOR SETTINGS ---",SF," --- Alerts ---",50,true,true,"alert.wav",false ,1, 1 );
   QQE_MAIN2 = iCustom(NULL, 0, "Downloads\\QQE_with_Alerts" ," --- INDICATOR SETTINGS ---",SF," --- Alerts ---",50,true,true,"alert.wav",false ,0, 2 );
   QQE_Signal2 = iCustom(NULL, 0, "Downloads\\QQE_with_Alerts" ," --- INDICATOR SETTINGS ---",SF," --- Alerts ---",50,true,true,"alert.wav",false ,1, 2 );

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

   //買いポジションのエグジット
   OS = OrderSelect(Ticket_L, SELECT_BY_TICKET);  
   if(    ((QQE_MAIN1 < QQE_Signal1  &&  QQE_MAIN2 > QQE_Signal2) || ( OrderOpenPrice() - lc * Point >= Close[1] ))
       && ( Ticket_L != 0 && Ticket_L != -1 ))
    {     
      Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Red);
      if( Exit_L ==1 ) {Ticket_L = 0;}
    }    

   //売りポジションのエグジット
   OS = OrderSelect(Ticket_S, SELECT_BY_TICKET); 
   if(    ((QQE_MAIN1 > QQE_Signal1  &&  QQE_MAIN2 < QQE_Signal2) ||( OrderOpenPrice() + lc * Point <= Close[1] ))
       && ( Ticket_S != 0 && Ticket_S != -1 ))
    {     
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue);
      if( Exit_S ==1 ) {Ticket_S = 0;} 
    }   

   //買いエントリー
   if(    QQE_MAIN1 > QQE_Signal1  &&  QQE_MAIN2 < QQE_Signal2  && QQE_MAIN1 > 50.0
       && ( 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(    QQE_MAIN1 < QQE_Signal1  &&  QQE_MAIN2 > QQE_Signal2 && QQE_MAIN1 <= 50.0
       && ( 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);
  }

 

###

QQE を使った自動売買ソフト

QQE という RSI を元にした指標がありまして、結構精度が高いので気になっていました。

オシレーターの部類なのですが、シグナルを出るように改良した QQE_with_Alerts.ex4 というインディケーターを入手して分析。

それを使って自動売買ソフト(EA: expert advisor)を作ってバックテストしてみました。

こんな感じです。

 

ロジックとしては、青い実線(QQE)が黄色の点線(シグナル)を上抜ければ買い、下抜ければ売りなのですが、そのまま売買すると結構ロスが出ます。

そこで、QQE が 50以上のときに買いのみ、50未満のときは売りのみという制限をつけますと、非常にいい感じになりました。

USDJPY 1時間足で、2014/6/1-2015/1/23 (日時を合わせるのを忘れてこうなりました) での結果です。

 

約8ヶ月の結果としては結構いいのではないでしょうか。

資金が 1.8倍になりました。

なにより最大ドローダウンが 8.87% と過去最良で安心感バツグンです。

プロフィットファクター 2.09、勝率 50% も文句なしです。

ドル円相場はこの期間は前半はレンジ、後半は上りトレンドでした。

レンジ相場で損失を出しておりませんし、トレンド相場でショート方向の勝率もロング方向とほぼ同じというのもありがたいですね。

うちの3番バッターになりそうな予感です。

ちょっと改良してから試験運用してみます。

関連記事

###

実戦デイトレーディング―株取引、革命バイブル / 串田 誠一

実戦デイトレーディング―株取引、革命バイブル (ホームマネジメントシリーズ) 実戦デイトレーディング―株取引、革命バイブル (ホームマネジメントシリーズ)

串田 誠一

ローカス 2000-01

売り上げランキング : 1492136

Amazonで詳しく見る

by G-Tools

★★☆☆☆(そうかもしれないが、やる気は起きない)

これも大昔に買った株の本。著者は弁護士とか。

寄りつきで買ってすぐにリミットを入れ、一日の終わりに売れていなければ手じまうという簡単なもの。

当時は OCO 注文ができなかったものと思われます。

今なら当然 OCO でしょ。

一日の変動で小さな利益を抜くので、一方的な下げのときは利益を得られませんね。

小さい勝ちを積み上げても大きな負けで破滅しそうな気もしますが、今のような安い手数料なら十分通用するかもしれません。

チャートと組み合わせて、もうすこし利幅をとりたいところですね。

###

株 デイトレード常勝のルール / 二階堂 重人

株 デイトレード常勝のルール 株 デイトレード常勝のルール

二階堂 重人

すばる舎 2008-02-20

売り上げランキング : 361489

Amazonで詳しく見る

by G-Tools

★★★☆☆(ごく初歩)

大昔に買って読んだはずの本ですが、読んだ記憶がない・・・

デイトレードのマインドについては他にいい本がありますが、初心者向けの簡単なテクニックを教えてくれるという点で、まあこのページ数では妥当な内容です。

カンではなくルールを作り、それに従うことが重要ということです。となれば、いわゆるシステムトレードなのですが。

株より FX のほうがそれはやりやすいのですから、私は株をやろうとは思いません。

株をやるなら少なくともこの本と、他に20冊くらい読まなきゃ怖くて投資できませんね。

関連記事

###

初期費用0円・在庫0冊でも本が出版できる

昔からこの国には”自費出版ビジネス”というのがあります。

お金持ちの年寄りをだまくらかして自費出版させ、売れない(実際は売ろうとしない)在庫本を自宅に送りつけるだけで過分な費用をむしりとるというものです。

親戚や知人に配っても大量の本が余り、シミのエサにしかならず、亡くなったときには廃棄されてしまう運命の本。

ブックオフでも引き取らないでしょう(実際はちょくちょく見かけますが)。

ところが、進んだこの世の中では初期費用0円・在庫0冊でも本(電子書籍でなく紙の本)が出版できるようになっているのです。

1冊から頼めるオンデマンド出版という安価な出版法もありますが、それよりももっと進んでいますね。

解説記事(Gigazine)>『初期費用0円・在庫0冊で本が出版できる「中林製本所」

で、 こちら(↓)がその製本所のリンクね。

中林製本所 > 中林製本所/在庫0冊からの出版・製本販売サービス

つまり、”通常の出版社にかけだし作家が原稿を持ち込む”というよくある行動をインターネットでやっているだけ。

出版社がこれは売れると思ったものだけを出版する。

ただし、書店に配本しないでネットのみで売るというサービス。

もし売れれば著者に印税を払うというシステムですね。

リスク回避という点で優れています。

考えましたね。

売れそうにない(ビジネスとして成立しない)本は中林製本所は扱ってくれないですから、そのときはこちらで作ってもらいましょう。

> 製本直送.com

これなら 100ページくらいの本なら 1冊 1000円ちょっとで作ってくれるそうです。

1冊単位でいいのだそうですから誰でも作れますね。

え、文章は自分で書くのかって?

ゴーストライターへの謝礼の方がはるかに高いか。

そのうち、文章作成 AI サービスが出るんじゃないの?

###

FXメタトレーダー入門―最先端システムトレードソフト使いこなし術 / 豊嶋 久道

FXメタトレーダー入門―最先端システムトレードソフト使いこなし術 (現代の錬金術師シリーズ 56) FXメタトレーダー入門―最先端システムトレードソフト使いこなし術 (現代の錬金術師シリーズ 56)

豊嶋 久道

パンローリング 2007-12-07

売り上げランキング : 53463

Amazonで詳しく見る

by G-Tools

★★★★★(システムトレードのためのバイブル)

前半は MetaTrader4 の使用方法であり、これについては他の本にも書いてあるので特に優れているわけではありません。

問題は後半のプログラムの作り方。

MQL4 という C言語のサブセット(+独自拡張)についての解説なのですが、これが秀逸。

C言語を使える私はこれでメタトレーダーでプログラミングがあっというまにできるようになりました。

ただ、C言語を使えない人にはかなり難しいでしょう。

この本を理解すれば指標表示プログラムと簡単な自動売買プログラム(EA)が作れます。

さらに高度な EA を作るには続編を読む必要がありますが。

凝ったロジックだとかは書いてありませんが、普通のロジックの実装のやり方がわかるということは、実は非常に大きな壁を越える正攻法(=成功法)だと思います。

関連記事

FX自動売買・ガチンコ投資必勝技 ~ローレバレッジ時代の超堅実システムトレード術~ / 山本 克二

###

スローな TII にしてくれ

TII をさらに使いやすくする方法を考えました。

下のチャートのサブウィンドウに3種類の TII すなわち、

  1. オリジナルの TII
  2. TII にシグナルを付加したもの(自作)
  3. TII のシグナルをさらに平滑化したシグナルのシグナルを付加したもの(自作)

を表示してみました。

 

スローストキャステクスっぽくなってしまいましたネ。

この手の指標は 0からの上離れと 100からの下離れを売買指標にするわけ(一番下のサブウィンドウでの↑↓の部位)ですが、それはこの3種類のどれでも簡単に判定できます。

問題は 50付近での絡み合いの部分です(○で囲った部分)。

ここで S字カーブを描いたり、場合によっては元来た方へ戻る場合があり、それぞれの処理が必要となります。

S字カーブを描いたりする場合、右の○のように TII が連峰状(六ヶ岳?)になるとシグナルがない場合はドテン売買がその都度発生し、ロスがふくらみます。

シグナルとのクロスで 2回までに減らせますし、シグナルと「シグナルのシグナル」とのクロスではパラメーター次第ですがさらに回数を減らせます。

裁量の方にはたいした違いはないのですが、EA化するのには重要な処置になります。

関連記事

プログラムソース(オリジナルの TII_RLH を改変)

//+--------------------------------------------------------------------+
//|                                                   TII_RLH_S2       |
//|                                    Copyright ゥ 2006, Robert Hill   |
//|                                       http://www.metaquotes.net/   |
//+--------------------------------------------------------------------+                                                                   |

#property  copyright "Copyright 2006, Robert Hill "
#property  link      "http://www.metaquotes.net/"
//---- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 3
#property  indicator_color1  Red
#property  indicator_color2  Aqua
#property  indicator_color3  Green

#property  indicator_width1  2
#property  indicator_width2  1
#property  indicator_width3  1

//----
extern int Major_Period=60;
extern int Major_MaMode=1; //0=sma, 1=ema, 2=smma, 3=lwma, 4=lsma
extern int Major_PriceMode=0;//0=close, 1=open, 2=high, 3=low, 4=median(high+low)/2, 5=typical(high+low+close)/3, 6=weighted(high+low+close+close)/4
extern int Minor_Period=30;
extern color LevelColor=Silver;
extern int BuyLevel=20;
extern int MidLevel=50;
extern int SellLevel=80;

extern int SigPeriod1 = 8;
extern int SigPeriod2 = 10;

//---- buffers
double ma[];
double ma_dev[];
double tii[];

double tiis[];
double tiis2[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   IndicatorBuffers(5);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexDrawBegin(0,Major_Period);
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);
//---- 3 indicator buffers mapping
   SetIndexBuffer(0,tii);
   SetIndexBuffer(1,tiis);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexDrawBegin(1,Major_Period);

   SetIndexBuffer(2,tiis2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexDrawBegin(2,Major_Period);

   SetIndexBuffer(3,ma_dev);
   SetIndexBuffer(4,ma);

//---- name for DataWindow and indicator subwindow label
   IndicatorShortName(" TII  ,  Major_Period ( "+Major_Period+" )  ,  Minor_Period  ( "+Minor_Period+" ), ");
   SetLevelStyle(STYLE_DASH,1,LevelColor);
   SetLevelValue(0,BuyLevel);
   SetLevelValue(1,MidLevel);
   SetLevelValue(2,SellLevel);
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| LSMA with PriceMode                                              |
//| PrMode  0=close, 1=open, 2=high, 3=low, 4=median(high+low)/2,    |
//| 5=typical(high+low+close)/3, 6=weighted(high+low+close+close)/4  |
//+------------------------------------------------------------------+
double LSMA(int Rperiod,int prMode,int shift)
  {
   int i;
   double sum,pr;
   int length;
   double lengthvar;
   double tmp;
   double wt;
//----
   length=Rperiod;
   sum=0;
   for(i=length; i>=1;i--)
     {
      lengthvar=length+1;
      lengthvar/=3;
      tmp=0;
      switch(prMode)
        {
         case 0: pr=Close[length-i+shift];break;
         case 1: pr=Open[length-i+shift];break;
         case 2: pr=High[length-i+shift];break;
         case 3: pr=Low[length-i+shift];break;
         case 4: pr=(High[length-i+shift] + Low[length-i+shift])/2;break;
         case 5: pr=(High[length-i+shift] + Low[length-i+shift] + Close[length-i+shift])/3;break;
         case 6: pr=(High[length-i+shift] + Low[length-i+shift] + Close[length-i+shift] + Close[length-i+shift])/4;break;
        }
      tmp =(i - lengthvar)*pr;
      sum+=tmp;
     }
   wt=sum*6/(length*(length+1));
//----
   return(wt);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int i,j,limit;
   double sdPos,sdNeg;

   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   if(counted_bars==0) limit-=1+MathMax(Major_Period,Minor_Period);

//----
   for(i=limit; i>=0; i--)
     {
      if(Major_MaMode==4)
        {
         ma[i]=LSMA(Major_Period,Major_PriceMode,i);
        }
      else
        {
         ma[i]=iMA(NULL,0,Major_Period,0,Major_MaMode,Major_PriceMode,i);
        }
      ma_dev[i]=Close[i]-ma[i];
     }
//========== COLOR CODING ===========================================               
   for(i=0; i<=limit; i++)
     {
      sdPos=0;
      sdNeg=0;

      for(j=i;j<i+Minor_Period;j++)
        {
         if(ma_dev[j]>=0) sdPos=sdPos+ma_dev[j];
         if(ma_dev[j]<0) sdNeg=sdNeg+ma_dev[j];
        }
      tii[i]=100*sdPos/(sdPos-sdNeg);
     } 
   for(i=0; i<=limit; i++)
     {
      tiis[i] = iMAOnArray(tii,0,SigPeriod1,0,MODE_EMA,i); 
     }
   for(i=0; i<=limit; i++)
     {
      tiis2[i] = iMAOnArray(tiis,0,SigPeriod2,0,MODE_EMA,i); 
     }

//----
   return(0);
  }

//+------------------------------------------------------------------+

###

Trend Intensity Index という指標(2) シグナルを付加

以前の記事『Trend Intensity Index という指標』で紹介したインディケーターもシグナルを表示するように改変してみました。

シグナルというのは指標の移動平均をとったもので、平滑されている分、遅れて動くので、指標とのクロスで売買のシグナルにすることができるのです。

 

サブウィンドウの上が TII_RLH.ex4(オリジナル)で、下が私の改良したシグナル付加版。

下のシグナル付加版で赤と水色の線のクロスしたところ(平行して重なったところではない)が買いまたは売りとなります。

シグナルがないと指標の反転を判断するのに数値で比べないといけないのですが、シグナルがあるとクロスの有無で判定でき、より簡単にプログラムできるという裏事情があるのです。

関連記事

プログラムソース

#property  copyright "Copyright ゥ 2006, Robert Hill "
#property  link      "http://www.metaquotes.net/"
//---- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 2
#property  indicator_color1  Red
#property  indicator_color2  Aqua
#property  indicator_width1  2
#property  indicator_width2  1

//----
extern int Major_Period=60;
extern int Major_MaMode=1; //0=sma, 1=ema, 2=smma, 3=lwma, 4=lsma
extern int Major_PriceMode=0;//0=close, 1=open, 2=high, 3=low, 4=median(high+low)/2, 5=typical(high+low+close)/3, 6=weighted(high+low+close+close)/4
extern int Minor_Period=30;
extern color LevelColor=Silver;
extern int BuyLevel=20;
extern int MidLevel=50;
extern int SellLevel=80;

extern int SigPeriod = 8;

//---- buffers
double ma[];
double ma_dev[];
double tii[];

double tiis[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   IndicatorBuffers(4);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexDrawBegin(0,Major_Period);
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2);
//---- 3 indicator buffers mapping
   SetIndexBuffer(0,tii);
   SetIndexBuffer(1,tiis);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexDrawBegin(1,Major_Period);

   SetIndexBuffer(2,ma_dev);
   SetIndexBuffer(3,ma);

//---- name for DataWindow and indicator subwindow label
   IndicatorShortName(" TII  ,  Major_Period ( "+Major_Period+" )  ,  Minor_Period  ( "+Minor_Period+" ), ");
   SetLevelStyle(STYLE_DASH,1,LevelColor);
   SetLevelValue(0,BuyLevel);
   SetLevelValue(1,MidLevel);
   SetLevelValue(2,SellLevel);
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| LSMA with PriceMode                                              |
//| PrMode  0=close, 1=open, 2=high, 3=low, 4=median(high+low)/2,    |
//| 5=typical(high+low+close)/3, 6=weighted(high+low+close+close)/4  |
//+------------------------------------------------------------------+
double LSMA(int Rperiod,int prMode,int shift)
  {
   int i;
   double sum,pr;
   int length;
   double lengthvar;
   double tmp;
   double wt;
//----
   length=Rperiod;
   sum=0;
   for(i=length; i>=1;i--)
     {
      lengthvar=length+1;
      lengthvar/=3;
      tmp=0;
      switch(prMode)
        {
         case 0: pr=Close[length-i+shift];break;
         case 1: pr=Open[length-i+shift];break;
         case 2: pr=High[length-i+shift];break;
         case 3: pr=Low[length-i+shift];break;
         case 4: pr=(High[length-i+shift] + Low[length-i+shift])/2;break;
         case 5: pr=(High[length-i+shift] + Low[length-i+shift] + Close[length-i+shift])/3;break;
         case 6: pr=(High[length-i+shift] + Low[length-i+shift] + Close[length-i+shift] + Close[length-i+shift])/4;break;
        }
      tmp =(i - lengthvar)*pr;
      sum+=tmp;
     }
   wt=sum*6/(length*(length+1));
//----
   return(wt);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int i,j,limit;
   double sdPos,sdNeg;

   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   if(counted_bars==0) limit-=1+MathMax(Major_Period,Minor_Period);

//----
   for(i=limit; i>=0; i--)
     {
      if(Major_MaMode==4)
        {
         ma[i]=LSMA(Major_Period,Major_PriceMode,i);
        }
      else
        {
         ma[i]=iMA(NULL,0,Major_Period,0,Major_MaMode,Major_PriceMode,i);
        }
      ma_dev[i]=Close[i]-ma[i];
     }
//========== COLOR CODING ===========================================               
   for(i=0; i<=limit; i++)
     {
      sdPos=0;
      sdNeg=0;
      for(j=i;j<i+Minor_Period;j++)
        {
         if(ma_dev[j]>=0) sdPos=sdPos+ma_dev[j];
         if(ma_dev[j]<0) sdNeg=sdNeg+ma_dev[j];
        }
      tii[i]=100*sdPos/(sdPos-sdNeg);
     } 
   for(i=0; i<=limit; i++)
     {
      tiis[i] = iMAOnArray(tii,0,SigPeriod,0,MODE_EMA,i); 
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+<>

###

究極のテクニカル分析 / 黒岩 泰

究極のテクニカル分析 究極のテクニカル分析

黒岩 泰

オーエス出版 2004-03-19

売り上げランキング : 231964

Amazonで詳しく見る

by G-Tools

★★☆☆☆

株式投資について書かれていますが、テクニカルの教科書なので FX にも応用できるかなと思って買いました。

「窓」と「ひげ」について持論を述べておられますが、ちょっと強引なところもあり、曖昧模糊な部分もあり。

ということで、実際に役に立つ印象ではないですね。

最後のテクニカル指標のランク付けが一番よかったかも。一目均衡表ストキャスティクスの点が高いですね。

###

いつかまた逢える / 日向敏文

いつかまた逢える(TVサントラ いつかまた逢える(TVサントラ

日向敏文

アルファレコード 1995-08-09

売り上げランキング : 106526

Amazonで詳しく見る

by G-Tools

★★★☆☆

1995年夏にフジテレビでやっていたドラマ『いつかまた逢える』のサントラCD。

作曲家は『東京ラブストーリー』を手がけて一世を風靡した日向敏文

私は日向さんのCDはこれを含めて今のところ 23枚紹介しましたが、まだまだありそうですね。

残念ながら私はドラマを観ておりません。

wiki/いつかまた逢える

フクヤマが主役だったそうな・・・

「東京ラブストーリー」の音楽を手掛けた日向敏文が採用されたことが示しているとおり、このドラマ自体が「東京ラブストーリー」の二番煎じと認識されています。

でも最高視聴率 22.9%(「東京ラブストーリー」は 32.3%)はすごいですねえ。

私は見なかったけど。

ご覧になりたい人は Youtube で中国人がアップロードしていますので、消されないうちにどうぞ。

このCDですが、冒頭から「ああ、日向さんだ」とすぐわかるテイストが・・・

深層心理に暗示をかけられているよう・・・でも気持ちがいいです。

曲目リスト

1. いつかまた逢える

2. フォー・ユー

3. イエスタデイ

4. イッツ・ノット・オーヴァー・イェット

5. スウィート・イヴニング

6. ライク・アン・イーグル

7. センド・ミー・ユア・ラヴ

8. アイル・ビー・ヒア

9. ホェア・ダズ・イット・エンド?

[東京ラブストーリー] Tenderly~Rica’s Theme

関連記事

###

Schaff Trend Cycle について

Schaff Trend Cycle は私の好きな指標の一つで、MACD のストキャスをストキャスしたものです。

0%(売られすぎ=下げトレンド) と 100%(買われすぎ=上げトレンド) に張り付いていることが多いですが、トレンドが変わるときに大きく動きます。

ダマシが少ない特長と敏感さを併せ持つ、なかなか使えるヤツです。

下のチャートはサブウィンドゥが4つありますが、上から

  1. Schaff Trend Cycle.ex4 (MetaTrader4 標準添付)
  2. STC_pure.ex4 (temjin さん作)
  3. Schaff_Trend_s.ex4 (Schaff Trend Cycle.ex4 にシグナルを付加したもの)
  4. STC_pure.ex4 (STC_pure.ex4 にシグナルを付加したもの)

です。

パラメーターは、MA_Short=8 、 MA_Long=13 、 MA_Cycle=5 、Sig_Period=8 に合わせてあります。

 

標準の Schaff Trend Cycle.ex4 は欠点がありまして、下のチャートのようにペアを入れ替えたり、新しい足が立ったりすると計算が狂って、ほとんどゼロになってしまうことです。

Schaff_Trend_s.ex4 にも当然同じ欠点があります。

計算値が狂うと EA にしたときに売買ができなくなるので困るのです。

そこで重宝するのが STC_pure.ex4 でして、temjin さんのお作りになったものです。

計算値が Schaff Trend Cycle.ex4 と全く同じにならない(おそらく Schaff Trend Cycle.ex4 のほうが正しい)のですが、上記のような欠点がありません。

STC_pure.ex4 は残念ながらシグナルが出ませんが、出た方が絶対に便利なので、シグナルが出るように私が改変してみました。

要するに、STCがシグナルと交差して上抜けると「買い」、下抜けると「売り」になります。

STC_pure_S.mq4 (改変 by やすきー)

//+------------------------------------------------------------------+
//|                               STC_pure_S.mq4(Schaff Trend Cycle) |
//|                           Copyright (c) 2009, temjin.m@gmail.com |
//|                                   http://temjins.blog43.fc2.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright (c) 2009, temjin.m@gmail.com"
#property link      "http://temjins.blog43.fc2.com/"

#property indicator_separate_window
#property indicator_buffers 2 //改変 by やすきー
#property indicator_color1 Turquoise
#property indicator_color2 Yellow

#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_level1 5
#property indicator_level2 95
#property indicator_levelcolor LightSlateGray
//---- input parameters
extern int MA_Short=8;
extern int MA_Long=13;
extern int MA_Cycle=5;
extern int PriceType=0;
extern int SigPeriod=23; //改変 by やすきー

//---- buffers
double mcd[];
double stc1[];
double stc2[];
double pf1[];
double pf2[];
double pfs[]; //改変 by やすきー
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorShortName("Schaff Trend Cycle("+MA_Short+","+MA_Long+","+MA_Cycle+")");
   IndicatorBuffers(6); //改変 by やすきー
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,pf2);
   SetIndexLabel(0,"STC");
   SetIndexBuffer(1, pfs); //改変 by やすきー
   SetIndexStyle(1,DRAW_LINE); //改変 by やすきー
   SetIndexBuffer(2, mcd); //改変 by やすきー
   SetIndexBuffer(3, stc1); //改変 by やすきー
   SetIndexBuffer(4, stc2); //改変 by やすきー
   SetIndexBuffer(5, pf1); //改変 by やすきー
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int   limit = Bars - IndicatorCounted();
   int   n;
   double   ema_s,ema_l;
   double   llv, hhv;
   double   smconst = 0.5;

   if(limit == Bars) limit -= MA_Long-1;
   for(int i=limit-1; i>=0; i--)
   {
      //MACDの計算
      ema_s = iMA(NULL,0,MA_Short,0, MODE_EMA, PriceType,i);
      ema_l = iMA(NULL,0,MA_Long,0, MODE_EMA, PriceType,i);
      mcd[i] = ema_s - ema_l;

      //MACDのストキャス計算
      for (n = 0; n < MA_Cycle; n++)
      {
         if (n == 0)
         {
            llv = mcd[i];
            hhv = mcd[i];
         }
         else
         {
            if (llv > mcd[i+n]) llv = mcd[i+n];
            if (hhv < mcd[i+n]) hhv = mcd[i+n];
         }
      }
      if (hhv - llv > 0)
         stc1[i] = ((mcd[i] - llv)/(hhv - llv)) * 100;
      else
         stc1[i] = 50;  

      //ストキャス値の指数平滑
      pf1[i] = smconst * (stc1[i] - pf1[i+1]) + pf1[i+1];

      //2回目のストキャス計算
      for (n = 0; n <MA_Cycle; n++)
      {
         if (n==0)
         {
            llv = pf1[i];
            hhv = pf1[i];
         }
         else
         {
            if (llv > pf1[i+n]) llv = pf1[i+n];
            if (hhv < pf1[i+n]) hhv = pf1[i+n];
         }
      }
      if (hhv - llv > 0)
         stc2[i] = ((pf1[i] - llv)/(hhv - llv)) * 100;
      else
         stc2[i] = 50;  

      //ストキャス値の指数平滑
      pf2[i] = smconst * (stc2[i] - pf2[i+1]) + pf2[i+1];
   }
   for(int k = limit-1 ; k>=0 ; k--)  //改変 by やすきー
   {
      pfs[k] = iMAOnArray(pf2, 0, SigPeriod, 0, MODE_EMA, k);  //改変 by やすきー
   }

   return(0);
  }
//+------------------------------------------------------------------+

西の関ヶ原 / 滝口 康彦

西の関ヶ原 (人物文庫) 西の関ヶ原 (人物文庫)

滝口 康彦

学陽書房 2012-07-05

売り上げランキング : 136712

Amazonで詳しく見る

by G-Tools

★★★☆☆

滝口さんは佐賀県の歴史小説家。2004年に亡くなっています。

この人の書く話はとても切ない。

この小説は 1984年(私が医師になった年)に「悪名の旗」のタイトルで刊行された作品を文庫化したもの。

悪名を伝えられる田原紹忍田原親賢)を主人公にしています。

関ヶ原の戦いのときに東西に分かれた大名たちが九州でも争いました。去年NHKの大河ドラマで黒田如水をやりましたが、その最後の戦いのできごとを描いています。

ただし、ここでは黒田如水は田原紹忍(大友宗麟の義兄)の敵役として登場。

前半が如水との戦い、後半が太田飛騨守一吉との戦いが描かれています。

前半では旧主の大友義統を勝利に導けず、後半は新しい主の中川秀成のために戦うも最後は華々しく散っていきます。

主人のことを思ってなしたことがことごとく裏目に出てしまった主人公の悲しい生き様を描いており、万人に人生を考えさせる名著と言えましょう。

関連記事

###

Trend Intensity Index という指標

Schaff Trend Cycle について調べていたら、似たような指標 Trend Intensity Index について書かれたブログを見つけました。

Trend Intensity IndexにAlert をつける。

早速、インディケーターの TII_RLH.mq4 をダウンロードさせていただき、自前の EA に組み込んでみました。

バックテストを行うと、これが過去最高の成績に。

USDJPY 1時間足 2014/1/1~2015/1/1

なんと、プロフィットファクター 2.97!

勝率も44%となかなかいい。

ドローダウンも低めで安心感があります。

ちょっと改良しがいがありそうです。

GBPJPY H4 も成績がいいです。

GBPJPY H4 2014/1/1-2015/1/1

Minor_period =7, Major_period = 20 に変更しています。

プロフィットファクター 3.06投資資金 3.8倍は魅力的。

 

 

しめしめと思ったら落とし穴が・・・

関連記事

プログラムソース(重大なバグあり使用不可)

//
//    yasciiTII01
//         動作にはTII_RLH.mq4 が必要

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

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

extern int Major_Period=18;
extern int Minor_Period=12;
int Major_MaMode=1; //0=sma, 1=ema, 2=smma, 3=lwma, 4=lsma
extern int Major_PriceMode=0;//0=close, 1=open, 2=high, 3=low, 4=median(high+low)/2, 5=typical(high+low+close)/3, 6=weighted(high+low+close+close)/4
color LevelColor=Silver;
extern int BuyLevel=35;
int MidLevel=50;
extern int SellLevel=75;

extern int Fast_period = 14 ;
extern double margin = 0.0 ;

extern double ILC = 100.0 ;
// extern double TP = 1100 ;

//変数の設定//
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 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) ;

       double tii1 = iCustom(NULL, 0,"TII_RLH", Major_Period, Major_MaMode, Major_PriceMode, Minor_Period, LevelColor , BuyLevel, MidLevel , SellLevel, 0 , 1);
       double tii2 = iCustom(NULL, 0,"TII_RLH", Major_Period, Major_MaMode, Major_PriceMode, Minor_Period, LevelColor , BuyLevel, MidLevel , SellLevel, 0 , 2);
       double tii3 = iCustom(NULL, 0,"TII_RLH", Major_Period, Major_MaMode, Major_PriceMode, Minor_Period, LevelColor , BuyLevel, MidLevel , SellLevel, 0 , 3);       
       double tii4 = iCustom(NULL, 0,"TII_RLH", Major_Period, Major_MaMode, Major_PriceMode, Minor_Period, LevelColor , BuyLevel, MidLevel , SellLevel, 0 , 4);   
       double tiiSM1 = (tii1+tii2+tii3) / 3.0 ;
       double tiiSM2 = (tii4+tii2+tii3) / 3.0 ;

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

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

   //買いエントリー
   if( ((tii1 > BuyLevel && tii2 < BuyLevel) || (tii1 > tiiSM1 && tii2 < tiiSM2) )
       && ( 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(( (tii1 < SellLevel && tii2 > SellLevel) || (tii1 < tiiSM1 && tii2 > tiiSM2))
       && ( 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);

  }

 

###

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

以前の記事「スイスフラン暴騰騒動」でも書きましたが、スイス銀行のおかげでスイスフランが一瞬で高騰し、いろんな人が迷惑を被りました。

なんと、世界最大級の FX 業者であるアルパリ(UK) Limited までもが破綻しました。

私も子会社のアルパリジャパンにデモ口座を開いていたのですが、現在は以下のチャートのようにサーバーがあの日から停止しています。

 

 

MetaTrader4 のストラテジテスターは使えるのですが、サーバーから現在のデータを取得する「現在のスプレッド値」を使用することはできません。

他の業者(FX-CMジャパンOANDAジャパン)にも口座を持っているので私には全く問題はないのですが、まあ歴史的な事件だったってことで、ここに記念としてチャートを残しておくことにします。 ^^

デモ口座を開いているFX-CMジャパンも親会社の米FX-CMがつぶれかけた(株価が 1/10 になった!)そうですが、何とか借金して乗り切ったそうな。

私が唯一リアル口座を開いている OANDA はまったく大丈夫だったもよう。

スイス銀行のかけたハシゴにみんな乗っかかっていたのをドカンとはずしたわけですが、こんな大きなハシゴはそうそうなかったでしょう。

スイス銀行もスイスイ、いやせいせいしたのではないでしょうか。

###

FX 2015/1/20 デモトレード

昨日 2015/1/20 のデモトレードでは円安が進行したので、3つの自作 EA が複数起動し、驚くほどの利益を出してくれました。

下のチャート(USDJPY 1時間足:時間表示は日本時間より7時間遅れ)では平均足、QQE、VQ、Schaff Trend Cycle、ADXcross のいずれも買いマークを出しており、その後最高で 1円40銭近く上昇しました。

一時は利益が 52万円ほどいきましたが、その後調整に。

プログラムの入れ替えのため、23:00(サーバーの時間は日本より 7時間遅れています)に手動で停止しました。

次のような結果になりました。

2015-01-16 17:00:00 buy  1   usdjpy 117.044 2015-01-20 16:00:30 118.525  148100
2015-01-16 20:00:00 sell 1   gbpusd 1.51471 2015-01-20 16:01:54 1.5193   -54414
2015-01-16 20:00:00 buy  1   usdjpy 117.557 2015-01-19 04:00:00 117.157  -40000
2015-01-19 15:14:27 buy  1.1 usdjpy 117.42  2015-01-20 11:00:00 118.075   72050
2015-01-19 15:15:00 buy  0.9 usdjpy 117.447 2015-01-20 16:00:37 118.533   97740
2015-01-19 16:00:00 buy  1   usdjpy 117.466 2015-01-20 16:00:33 118.53   106400
2015-01-19 20:00:00 buy  1   usdchf 0.87859 2015-01-20 10:01:08 0.87713  -19669
2015-01-20 13:37:20 buy  1.1 usdjpy 118.58  2015-01-20 16:00:56 118.514   -7260
2015-01-20 13:51:25 buy  1.1 usdjpy 118.691 2015-01-20 13:55:26 118.711    2200

合計 305147円。バーチャルだけどねっ。

一日の記録としてはもちろん過去(EA を作り始めて1ヶ月だけど)最高。

  • gbpusd は Nikkori という他人作のブレイクアウトシステム。 これ、TP と LC が固定のため、途中で反転するとアウトなんです。
  • usdchf は kolachi という他人作の移動平均線クロスシステム。 前日から起動しており、反転をまともにくらったようです。
  • usdjpy のはどれも自作のシステム(3種類)で、トレード数が 3つを超えているのは時間足の違うチャートで動いているのが一斉に発火したため。

まあ、こんな調子のいい日は年に数回もないと思います。

そろそろリアル口座で少額(デモの 1/10程度)でのテストに入ろうかと思います。

余談その1

私の現段階での考えは「レンジ相場はリスクも多いので無視してもいい。2-3割ほどあるトレンド相場で利益を確実にいただければそれで十分」というものです。

短い時間足で見るとレンジ相場の中にもトレンドは潜んでいますし(その分長期に比べリスクも高いですが)。

余談その2

平均足、QQE、VQ、Schaff Trend Cycle、ADXcross の組み合わせが最高と思っているのですが、なかなかプログラミングできないで試行錯誤中。

今回も VQ の最後の反転で手じまっていればもっと取れたはず。

###

FX自動売買・ガチンコ投資必勝技 ~ローレバレッジ時代の超堅実システムトレード術~ / 山本 克二

FX自動売買・ガチンコ投資必勝技 ~ローレバレッジ時代の超堅実システムトレード術~ FX自動売買・ガチンコ投資必勝技 ~ローレバレッジ時代の超堅実システムトレード術~

山本 克二

技術評論社 2010-07-24

売り上げランキング : 32078

Amazonで詳しく見る

by G-Tools

★★★★★(自動売買には必須)

私の好きな 技術評論社(技評) の本。

技評の本にしては表紙がアヤシイ・・・

しかし、内容はいたってまとも。

どのプログラムを選んでどれと組み合わせてどういう配分を与えて、ドローダウンが来ても安全に、しかも投資効率よく運用できるか、ということが確率論の観点からきちっと理詰めで書いてあるので、非常に役に立ちます。

トレード技法や EAの作り方は書いていないので、ほかの本をあたってください。

本書は実際に EA を稼働させる段階について書かれた、おそらくそれについては日本で一番的確な本だと思います。

リアルトレードする前には必読ですね。

###

簡単な平均足システム (2)

以前の記事「簡単な平均足システム」で作った簡単な平均足システムを改良してみました。

改良その1

エントリシグナルの 「陽線の平均足が3本連続したら買い、陰線の平均足が3本連続したら売り 」の3本を4本に。

結果(2014/1/1-2015/1/1 USDJPY H4 以下同じ)

オリジナルより悪化した・・・

改良その2

決済シグナルの 「売り待ちの際に陰線に変われば決済、買い待ちの際に陽線に変われば決済 」を「売り待ちの際に陰線が2本連続すれば決済、買い待ちの際に陽線が2本連続すれば決済 」に。

結果

オリジナルよりはるかに改善されました。

改良その3

改良その1とその2を両方加えてみました。

結果

その1その2(オリジナルよりよかったもの)を加えたのにその1よりもさらに悪くなった・・・

総評

意外なことに改良その2がバツグンですね。

オリジナルより勝率は悪いが、最大勝ちと平均勝ちの金額がグンと伸びたことが効いています。

オリジナルではトレンドから早く飛び降りすぎていたようです。

その2はちょっと粘ってみただけの改良なのですが、それだけでトレンドにより長くしがみつくことができています。

で、改良その3はなんでこんなにダメになってしまうのでしょうか。

関連記事

簡単な平均足システム

 

###

スイスフラン暴騰騒動

今朝こんなメールが来てました。使っている FX 業者の OANDA からです。

件名:スイスフラン関連の状況および弊社対応内容について

平素よりご高配を請け賜わり、誠に有難うございます。
スイス中央銀行(国立銀行)が2011年9月以来設定していた
EUR/CHFにおける1.2000フランの上限ラインを廃止すると
突然発表した事により、スイスフランは対ユーロで一時約40%急騰し、
為替市場には大変な混乱が訪れました。

​このため、お客様方だけでなく、FX業者や市場参加者などが
多くの損失を被りました。

しかしながら、OANDA JAPAN株式会社ならびにOANDAグループでは、
十分な資本金を確保しており、各国の規制も遵守し、
自己資本規制比率などの財務状況の数値も問題ございません。

お取引、ご入金、ご出金等も通常通り、
滞りなく実施できますので、どうぞご安心ください。

OANDAは「価格の透明性-Transparency」は会社の経営哲学上、
非常に重要な事だと考えております。

今回の出来事は、弊社でも少なからず損失が発生しましたが、
OANDAグループ発足以来のポリシーである
「約定拒否なし、再クオートなし」は今回も同様に徹底し、
実施させていただきました。

弊社でお取引いただいているお客様につきましては、
約定価格の事後の変更などはございません。

今後もご信頼いただきお取引を実施頂ければ幸いです。

OANDA自身もお客も大変な事態だったみたいですね。

歴史的なできごとだったのは確かですから。

私も30万円ほど損しましたが、デモ口座のバーチャル資金だったので全然応えておりません。

ちなみに本日のデモ口座ではすでに 30万円は取り返しております。

クリックで拡大します

 

バーチャルだけどねっ。

関連記事

FX 大ダメージ 暴落対策用コードの導入

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

###

簡単な平均足システム

平均足(コマ足)という価格表示の方法があります。

ローソク足の代わりに使うもので、トレンドがわかりやすいという特徴があります。

超シンプルな平均足システムを作ってみました。

  • エントリシグナル: 陽線の平均足が3本連続したら買い、陰線の平均足が3本連続したら売り
  • 決済シグナル: 売り待ちの際に陰線に変われば決済、買い待ちの際に陽線に変われば決済あるいは最初に決めたロスカットを割った場合

ロスカットは無意味のはずなのですが、なぜか設定値によって結果が変わります。

意外なことによけいなフィルタなしでも、そこそこいい結果。

USDJPY H4 2014/1/1-2015/1/1

 

全然だめだろうと思ったら、勝率40%、プロフィットファクター 1.40 は立派。

 

トレンドがないとまったくダメなタイプですので、トレンド用のフィルタを加えて仕上げていこうかと思います。

プログラムソース

//
// yasciiHA01.mq4
//           超シンプルな平均足システム

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

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

extern double ILC = 45 ;

//変数の設定//
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(){

    if (Volume[0]>1 || IsTradeAllowed() == false) return(0) ;

       double HA_open1 = ( Open[2] + Close[2] ) / 2.0 ;
       double HA_close1 = ( Open[1] + Close[1] + High[1] + Low[1] ) / 4.0 ;
       double HA_open2 = ( Open[3] + Close[3] ) / 2.0 ;
       double HA_close2 = ( Open[2] + Close[2] + High[2] + Low[2] ) / 4.0 ;
       double HA_open3 = ( Open[4] + Close[4] ) / 2.0 ;
       double HA_close3 = ( Open[3] + Close[3] + High[3] + Low[3] ) / 4.0 ;

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

   //買いポジションのエグジット
    OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);  
    OOPL = OrderOpenPrice();

    if(    (HA_open1 > HA_close1 || ( OOPL - lc*Point >= Close[1] ) ) 
            && ( 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(    (HA_open1 < HA_close1 ||( OOPS + lc*Point <= Close[1] ) ) 
          && ( Ticket_S != 0 && Ticket_S != -1 ))
    {     
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue);
      if( Exit_S ==1 ) {Ticket_S = 0;} 
    }   

   //買いエントリー
   if( HA_open1 < HA_close1 && HA_open2 < HA_close2 && HA_open3 < HA_close3
       && HA_close1 > HA_close2 && HA_close2 > HA_close3 
       && ( 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( HA_open1 > HA_close1 && HA_open2 > HA_close2 && HA_open3 > HA_close3
       && HA_close1 < HA_close2 && HA_close2 < HA_close3 
       && ( 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);
  }

関連記事

簡単な平均足システム (2)

###

藪医者って

藪医者という言葉の語源には諸説ありますが、兵庫県の養父(やぶ)に名医がいて、インチキ医者が「養父で修行した」と言いふらしたため、逆に悪い意味になってしまったというものがあります。

藪医者にもなれない最低ランクを筍(たけのこ)医者というらしいですね。

なにかと悪評の多い公立八鹿病院も養父市にありますね。

この前TVで養父の手作り自転車レースを観たときに、「ここでの病院開業は二重の意味で難しいだろうな」と思ったことがあります。

最近の医療は EBM(evidence-based medicine) 全盛ですので、治療法はほとんど決まっています。

投薬量のきめ細やかなさじ加減というのも「気のせい」とか「医者の自己満足」という人もいますね。

外科では事情が異なりますが、、内科的治療ではもはや差がなかなかつけられないようになっています。

医師の力量や経験での差は問題でなくなっているような時代です。

じゃあ、どこで差がつくかというと、診断の段階。

うちの母方の伯母さんは2人ほど看護婦をやっていたのですが、私が高校生の頃に「頭がいいのなら医者になりなさい」と言っておりました。

「なぜ?」と訊くと「頭の悪い医者は診断が全然当たらず患者を苦しめて、最終的には逃げられてしまうのをよく見ているから」と言ってました。

「頭のいいお医者さんはすぐに診断してすぐに治療するので患者離れが早いけど、巷での評判はすぐに広まる」とも言ってました。

診断能力はいい医者の最低限必要な能力だと思うんですね。外科医は診断力よりウデがまだまだ重要視されていますが。

研修医や医学生の間でも昨今は臨床的診断能力を養う総合内科が人気です。

ついでに言うと画像診断はたいへん重要です。^^

別に万能だということではないですけど、これ一発で最終診断までいけるケースも多いわけですから。

英語では藪医者を quack というらしいですね。

クヮック・・・

アヒルの鳴き声のことで、うるさくごまかしてしまうサマをよく表しています。

確かに藪医者は、診断がつかずに患者から突き上げられると叫ぶしかない。

突き上げられる前から叫んでいる人も多いようですけど。

###

雪猫 ― 鬼悠市 風信帖 / 高橋 義夫

雪猫―鬼悠市 風信帖 (文春文庫) 雪猫―鬼悠市 風信帖 (文春文庫)

高橋 義夫

文藝春秋 2010-02-10

売り上げランキング : 829587

Amazonで詳しく見る

by G-Tools

★★★☆☆

高橋義夫の時代小説で、鬼悠市風信帖というシリーズの5作目(おそらく最新作)。

主人公は北国の藩の隠密で、武道の達人。普段は竹細工をこしらえて藩に上納しているという設定。

この作品には 7編の連作短編が収められています。

題名の雪猫はストーリーとはほぼ関係ありませんが、この猫と脇役の太兵衛(藩の江戸屋敷の隠密)の境遇をかぶらせているようで、まだまだこのシリーズは続いていきそうな雰囲気です。

と見せかけて終わりかも・・・

関連記事

###

FX 現在稼働中のオリジナルシステム

現在 Windows VPS 上で稼働中の自作システムは3種類。

簡単にまとめてみます。

  1. yasciiADXcross02
  2. yasciiMACD_3cross07
  3. yasciiBreakout05

いずれも 2-3 日に一度くらい改良を加えています(最後の数字はメジャーバージョンアップを意味)。

なお、運用している通貨ペアと時間足は、ADXcross02 が USDJPY H4、yasciiMACD_3cross07 と yasciiBreakout05 は USDJPY H1 です。

運用成績として、スプレッド 5 の場合の 2014/1/1 – 2015/1/1 の一年間のバックテストの結果をお出しします。

yasciiADXcross02

ADX 指標を使って売り買いサインを出しています。

トレンド相場で力を発揮。

ドローダウンはありますが、比較的安定しています。

トレンドに乗るのが素早く、降りるのもそこそこ早いのに、長いトレンドを最初から最後までよく捕まえるな、という印象です。

なので最大勝ち額が高く、大勝ちのときは実に気持ちがいいでしょう。

  • エントリシグナル: +DI と -DI のクロス+ADX フィルタ+Damiani フィルタ
  • 決済シグナル: +DI と -DI の反転、もしくはHLBand のブレイク、もしくは固定ロスカット値を割る、もしくは暴落時

 

yasciiMACD_3cross07

MACD という指標を3つ使って売り買いのサインを出しています。現在は買い専用。

  • エントリシグナル: 短期、中期、長期の3つのMACD指標がすべて陽転+Damiani フィルタ
  • 決済シグナル: 短期、中期のMACDが反転、もしくは固定ロスカット値を下回る、もしくはHLBand のブレイク、もしくは暴落時

トレンド相場に強いですが、トレンドでない場合でのミスショットが結構あります。

Damiani フィルタが大甘なので、BBWフィルタやタイムフィルタやマルチタイムフィルタなどの導入を計画中。

このままですと、本番に使えるかやや疑問です。

yasciiBreakout05

定番のブレイクアウトシステムなので、トレンド相場でないときの突発的なブレイクアウトも拾ってくれます。

ドローダウンも一番低いですかね。

  • エントリシグナル: HLBand のブレイク+value range フィルタ
  • 決済シグナル: HLBand のブレイク、もしくは固定ロスカット値を割る、もしくは暴落時

関連記事

FX デモ口座運用実績(2014/12/16~2015/1/15)

###

FX デモ口座運用実績(2014/12/16~2015/1/15)

Windows VPS サーバー上での FX デモ口座(FXCM)の運用が1ヶ月になったので、実績をまとめてみました。

(2014/12/16~2015/1/15)

日付、時刻、売買の種類、ロット、通貨ペア、約定価格、日付、時刻、決済価格、損益 の順番です。

最後の損益の金額は円です。

2014-12-16	02:00:01	buy	0.1	usdchf	0.96558	2014-12-16	10:32:12	0.96251	-3726
2014-12-16	05:26:11	buy	1	eurusd	1.2453	2014-12-16	07:06:58	1.24542	1409
2014-12-16	07:40:32	sell	1	usdjpy	117.31	2014-12-16	10:29:11	117	31000
2014-12-16	12:27:59	sell	1	gbpusd	1.5692	2014-12-16	13:42:52	1.57421	-58164
2014-12-16	14:45:00	sell	1	gbpusd	1.57407	2014-12-17	04:38:39	1.57336	8279
2014-12-29	18:10:00	buy	1	usdjpy	120.634	2014-12-30	07:40:04	120.429	-20500
2014-12-30	07:40:04	sell	1	usdjpy	120.429	2014-12-31	04:24:42	119.326	110300
2014-12-30	11:47:37	sell	1	usdjpy	119.535	2014-12-30	21:00:00	119.532	300
2015-01-02	05:44:58	buy	1	usdjpy	120.362	2015-01-02	17:00:00	120.626	26400
2015-01-02	23:00:00	buy	1	usdjpy	120.477	2015-01-05	05:39:40	120.478	100
2015-01-05	19:50:00	sell	1	usdjpy	119.588	2015-01-05	20:33:19	119.789	-20100
2015-01-05	21:10:00	sell	1	usdjpy	119.579	2015-01-06	01:00:07	119.327	25200
2015-01-06	02:45:00	sell	1	usdjpy	119.351	2015-01-06	02:53:11	119.351	0
2015-01-06	04:25:00	sell	1	usdjpy	119.296	2015-01-06	07:32:18	119.127	16900
2015-01-06	10:45:00	sell	1	usdjpy	118.937	2015-01-06	12:37:31	118.899	3800
2015-01-07	00:00:04	sell	0.3	eurusd	1.18861	2015-01-07	13:34:48	1.18291	20373
2015-01-07	06:10:00	buy	1	usdjpy	119.064	2015-01-07	07:42:32	118.914	-15000
2015-01-07	08:30:01	buy	1	usdjpy	119.024	2015-01-07	11:19:45	118.877	-14700
2015-01-07	13:34:48	sell	0.3	eurusd	1.18287	2015-01-08	12:04:31	1.17717	20481
2015-01-07	17:00:00	buy	1.1	usdjpy	119.517	2015-01-07	21:50:49	118.857	-72600
2015-01-08	03:32:28	buy	1.1	usdjpy	119.547	2015-01-08	05:29:29	119.735	20680
2015-01-08	08:57:41	buy	1.1	usdjpy	119.858	2015-01-08	09:31:20	119.914	6160
2015-01-08	09:29:54	buy	1.1	usdjpy	119.937	2015-01-08	14:00:00	119.812	-13750
2015-01-08	12:04:32	sell	0.3	eurusd	1.17716	2015-01-09	15:25:42	1.18222	-18080
2015-01-09	03:00:00	buy	1.1	usdjpy	119.82	2015-01-09	03:12:49	119.598	-24420
2015-01-09	17:00:00	sell	0.3	eurusd	1.17836	2015-01-12	16:34:52	1.18131	-10510
2015-01-12	08:00:02	buy	1	audusd	0.82527	2015-01-14	08:00:00	0.8093	-187028
2015-01-12	14:27:49	sell	1	eurusd	1.17938	2015-01-12	20:00:00	1.18258	-36142
2015-01-13	10:00:00	buy	0.3	eurusd	1.18505	2015-01-15	11:33:47	1.16898	-56541
2015-01-13	11:45:43	sell	1	eurusd	1.17979	2015-01-14	00:07:03	1.17736	28644
2015-01-13	16:00:00	sell	1	eurusd	1.177	2015-01-16	05:01:00	1.16319	160298
2015-01-13	16:00:00	buy	1	usdchf	1.02035	2015-01-15	07:48:38	1.02047	1385
2015-01-13	20:30:00	sell	1	usdjpy	117.819	2015-01-14	20:00:00	117.04	77900
2015-01-14	13:03:07	sell	1	eurusd	1.17545	2015-01-14	15:30:04	1.17903	-41751
2015-01-15	20:35:14	buy	1.1	usdchf	0.8808	2015-01-16	05:07:06	0.86037	-303152
2015-01-15	02:30:00	buy	1	usdjpy	117.545	2015-01-15	11:30:00	117.537	-800
2015-01-15	03:03:36	buy	1.1	audusd	0.82088	2015-01-16	05:06:43	0.82425	43067
2015-01-15	04:00:02	sell	1	eurusd	1.17745	2015-01-16	01:00:00	1.16289	169206
2015-01-15	08:00:05	buy	1.1	gbpusd	1.52297	2015-01-15	20:00:00	1.5153	-98468
2015-01-15	12:00:01	sell	0.3	eurusd	1.17164	2015-01-15	16:15:42	1.16594	20033
2015-01-15	13:30:00	sell	1	usdjpy	116.459	2015-01-16	06:34:58	116.414	4500


損益は通算して、マイナス 198117円
となりました。

本日のドルフランの暴落の -303152円がなければプラス 105035円だったのに・・・シクシク。

2015-01-12 の -187028円の負けは買ったとたんに相場が反転しました。これに対する対策(急落対策ではない)はすでに昨日織り込んであります。

稼働しているプログラムは自作が3種類、他作が2種類(kolachi, Nikkori)です。

自作の分は毎週順調に進化していますので、勝率とプロフィットファクターは初期のものよりパワーアップしています。

他作の Nikkori はドローダウンを減らすいいアイディアを考えたので、似たようなシステムを自作することを考えています。

2月からリアル口座に入金して小額から運用していこうかと思っています。

###

FX 大ダメージ 暴落対策用コードの導入

 

自動売買のデモ口座が今朝とんでもないことに。

昨日は調子よく、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)

###

ADXcrosses を EA に

前々回の記事「未来を予測する(?)便利なインジケータ AdamPriceReflection」の最後にちょこっと紹介したインディケーターの ADXcrosses をもとに自動売買ソフトを作りました。

ADXDMI という指標を使い、+DI  と -DI の 2本のクロスで売り買いをするという、どんな教科書に載っているくらいのごく初歩的なロジックです。

ドテンになりますし、都合の悪いときにも売買してしまうので、Damiani フィルタ(効きが悪い!)と ADX フィルター(簡易版)をかませています。

USDJPY(ドル円) 4時間足の結果がいいです。

プロフィットファクター 1.41、勝率 36.49%。

取引回数が多いので、22ヶ月で資金は 4.29 倍になっています。

最大ドローダウンが破滅的に大きいですけど・・・

資産曲線を見ると、トレンド以外は全くだめで資金を浪費していますから、 トレンド以外には起動しないようにもっと強めのフィルタをかけるように改良していくつもりです。

プログラムソース

//
// yasciiADXcross01a.mq4
//                with Damiani
//

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

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

extern int ADXcrossesPeriod = 14;

extern double ILC = 730.0 ; 
// extern double TP = 110.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   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()
  {

   if (Volume[0]>1 || IsTradeAllowed() == false) return(0) ;

     double plusdi2 = iADX(NULL, 0, ADXcrossesPeriod, PRICE_CLOSE, MODE_PLUSDI, 2);
     double plusdi1 = iADX(NULL, 0, ADXcrossesPeriod, PRICE_CLOSE, MODE_PLUSDI, 1);
     double minusdi2 = iADX(NULL, 0, ADXcrossesPeriod, PRICE_CLOSE, MODE_MINUSDI, 2);
     double minusdi1 = iADX(NULL, 0, ADXcrossesPeriod, PRICE_CLOSE, MODE_MINUSDI, 1);  

     double maindi1 = iADX(NULL, 0, ADXcrossesPeriod, PRICE_CLOSE, MODE_MAIN, 1); 

   OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);  
   OOPL = OrderOpenPrice();   

   //買いポジションのエグジット
   if(    ((plusdi1 < minusdi1 && plusdi2 > minusdi2 ) || ( OOPL - ILC*Point >= Close[1] ) ) //|| ( OOPL+TP*Point <= Close[1] ))
       && ( Ticket_L != 0 && Ticket_L != -1 ))
    {     
      Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Yellow);
      if( Exit_L ==1 ) {Ticket_L = 0;}
    }    

   OS2 = OrderSelect(Ticket_S, SELECT_BY_TICKET); 
   OOPS = OrderOpenPrice();

   //売りポジションのエグジット
   if(    ((plusdi1 > minusdi1 && plusdi2 < minusdi2 ) ||( OOPS + ILC*Point <= Close[1] ) ) //|| ( OrderOpenPrice()-TP*Point >= Close[1] ))
       && ( Ticket_S != 0 && Ticket_S != -1 ))
    {     
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Red);
      if( Exit_S ==1 ) {Ticket_S = 0;} 
    }   

   //買いエントリー
   if(    (plusdi1 > minusdi1 && plusdi2 < minusdi2 ) && maindi1 > 18.0 && maindi1 < 50.0 && damiani_f() ==1  // && maindi1 > mainsig
       && ( 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(    (plusdi1 < minusdi1 && plusdi2 > minusdi2 ) && maindi1 > 18.0 && maindi1 < 50.0 && damiani_f() ==1  // && maindi1 > mainsig
       && ( 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);
  }

外国為替トレード 勝利の方程式 (投資を極める! 本当は教えたくないプロのノウハウ) / 今井雅人

外国為替トレード 勝利の方程式 (投資を極める! 本当は教えたくないプロのノウハウ) 外国為替トレード 勝利の方程式 (投資を極める! 本当は教えたくないプロのノウハウ)

今井雅人

日本実業出版社 2005-08-01

売り上げランキング :

Amazonで詳しく見る

by G-Tools

★★★☆☆

今井さんのFX本ですが、これもメンタルなどのお話が主で、戦術は書いてありません。

初心者向けなのかと思ったら、職業トレーダー向けに書いてあるんだそうな。

その割りにはさほど意外な話や高尚な話はありません。

うーん、勝利の方程式はどこにあるのでしょう。

関連記事

【かんたん図解】しっかり儲けるFX入門 / 今井 雅人 酒匂 隆雄

###

未来を予測する(?)便利なインジケータ AdamPriceReflection

ドル円15分足

 

AdamPriceReflection という変わった名称のインジケータ(MetaTrader4用)がありまして、上の桃色で示した黄色いラインを表示してくれます。

アダムセオリーに基づいて未来を予測するそうです。

作者のサイト(無料ダウンロード)> http://d.hatena.ne.jp/fai_fx/20100819/1282170104

もちろん 100%当たるわけではありません。

当たるなら誰でも数日で億万長者になってしまいますね。

私も試しにデモ口座で売買してみました。

今回は OANDA のデモ口座を初めて使います。ここのサーバーの時間も Alpari のサーバーと同じく 日本より 7時間遅れています。

  • 2015.01.14 10:11:16 sell 1.00 usdjpy 116.963  ⇒  2015.01.14 10:19:14 116.749 +21400

なんと 8分弱で 21400円ゲット(デモ口座なのでバーチャルです)。

ただ、チャートの時間足を変えると、曲線の形状はめまぐるしく変化し、いったいどれが正しいのかよくわかりません。^^

おかしいなと思ってプログラムソースを見ると、おそらくジョークのようです。^^

上のチャートのように、Schaff Trend Cycle、VQ、ADX、平均足、ボリンジャーの足並みを見て判断するのがいいと思います。

メインウィンドウは平均足が使われており、白(上昇)と赤(下降)で表示され、赤の次は赤が、白の次は白が続きやすくなっています。

赤が2-3個続いたら売り、白が2-3個続いたら買いで入り、色が変わったら手仕舞いする(線の長さが短ければ様子見でもいい)のが基本。

メインウィンドウの赤矢印と青矢印は ADXcrosses で出しています。これもなかなかイケルやつです。

###

FXで稼ぐ人はなぜ「1勝9敗」でも勝つのか? 利回り100%の外貨投資戦略 / 松田 哲

FXで稼ぐ人はなぜ「1勝9敗」でも勝つのか?  利回り100%の外貨投資戦略 FXで稼ぐ人はなぜ「1勝9敗」でも勝つのか? 利回り100%の外貨投資戦略

松田 哲

技術評論社 2007-02-22

売り上げランキング : 293460

Amazonで詳しく見る

by G-Tools

★★★☆☆

投資戦略と書いてあるとおり、戦術的なことは書いてありません。

上の写真とは違うのですが、私の買った本には、「村上龍氏絶讚!!」とオビに書いてあったので、シロウト向けの観念本かなと思って読み始めましたら、その通りでした。

メンタルについての話がほとんどです。

ちょっと役に立ったのは、一年のスケジュール。

欧米の職業的トレーダーはうまくいった人は 12月は完全に休みを取るらしいです。うまくいっていない人があがいて12月にがんばるために荒れる、と。金曜日の深夜の相場みたいに。

1月はリハビリ、手探りの月らしく方向は定まりません。

実際の今月の相場も上に下にどちらに行くかさっぱり読めません。デモ口座で動かしている EA もさっぱり波に乗れません。月曜日午前中の相場みたいです。

ということで、FX は 火曜日~金曜日日中、2月~11月に取引するのがいいということですね。

関連記事

###