日別アーカイブ: 2015年1月25日

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

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

串田 誠一

ローカス 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);
  }
//+------------------------------------------------------------------+<>

###