月別アーカイブ: 2月 2015

日本人の成功法則 / 神田昌典 渡部昇一

日本人の成功法則 日本人の成功法則

神田昌典 渡部昇一

フォレスト出版 2010-12-14

売り上げランキング : 114049

Amazonで詳しく見る

by G-Tools

★★★★☆(おぼえるんだ!)

私の心の師匠渡部昇一先生とマーケティングの神様神田昌典との対談集。

明治時代以来の日本人の成功法則を説く渡部先生と現代の成功法則を補足する神田さんとの対談なので、漏れのない法則が描かれています。

ほとんどは渡部先生の話であり、さすがに碩学の実体験に基づいた話は説得力があります。

神田さんの話は軽いですけどね。まあ、ほとんどこの本に書いてあることは他の神田本でも読んでいるので読み飛ばしてもいいのですが。

お二人とも暗記の重要性を強調していたのが印象的。

画像診断医と暗記

画像診断医にとっても暗記は最重要です。

知らないもの(病気)は見えないから。

知っていてもときどき見落とすくらいなので、まず知っていることが重要不可欠。

「ウロおぼえでも本を調べたらわかるからいい」というのは言語道断。そんな状態では一日30件も所見をつけられないでしょう。給料泥棒だよ。

いちいち調べる時間の給料まで病院はあなたに払っているわけではない。

病院のホンネは「本で勉強しているヒマがあったらその分仕事をしろ」ということです。

必要なことはアタマにたたき込んでおくと、仕事場以外でも(歩いているときも 入浴しているときも 眠っているときも)それについて考えて理解を深めることが簡単にできます。

そしてさらに深い洞察を得ることができるわけです。

もう一度言う・・・

「おぼえるんだ!」

###

超シンプルな自動売買プログラム(11) 前週の平均値と逆張り(4) さらに改良型

前回の記事「超シンプルな自動売買プログラム(11) 前週の平均値と逆張り(3) 改良型」ですが、考えてもよくわからないことが。

EURUSD 日足 2014/1/1 – 2015/1/1

という結果はなかなかですし、最適化パラメーターもほとんどないのでカーブフィッティングの心配もありません。

「直前5日間の平均値より安く始まれば買い、直前5日間の平均値より高く始まれば売り」ですから、トレンドのない相場でうまくいきそうなのですが、EURUSD の 2014/1/1 – 2015/1/1 の相場は下のチャートのように後半が下降トレンド。

下降トレンドが続くと逆張り(上がる方に賭ける)なので損失を被るはずですよね。

なのに上の収益曲線は後半に利益を積み重ねています。

ナゾですね。

プログラム改良

日足で動作させないとまずいので、日足以外のチャートで動作させるとエラーが出て EA が動かないようにしてみました。

プログラムソース

//
// yasciiWeekly03.mq4 日足で動作

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

#import "dummy.dll" //存在しないDLLから、存在しない関数を宣言
  void    EA_STOP();
#import

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

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

int OS1 ;
int OS2 ;
double   OOPL;
double   OOPS;

int init()
  {
   if (iClose(NULL, 1440, 1)!= iClose(NULL, 0, 1)){
      MessageBox(" 日足専用です!");
      EA_STOP();
   }
  return(-1);  
  }

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(  TimeDayOfWeek(Time[0]) >= 1 && TimeDayOfWeek(Time[0]) <= 4 && iMA(NULL, 1440, Fast_period, 0, 0, PRICE_CLOSE, 1) > Open[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,Blue);
    }

   //売りエントリー
    if(  TimeDayOfWeek(Time[0]) >= 1 && TimeDayOfWeek(Time[0]) <= 4 && iMA(NULL, 1440, Fast_period, 0, 0, PRICE_CLOSE, 1) < Open[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,Red);
    }

   return(0);
  }

###

超シンプルな自動売買プログラム(11) 前週の平均値と逆張り(3) 改良型

以前の記事「超シンプルな自動売買プログラム(11) 前週の平均値と逆張り」で作ったプログラムを「月曜朝に売買し金曜朝に決済」から、「毎朝売買し翌朝決済(すぐにその日の売買を繰り返す)」に変更しました。

  • 買い 月曜日から木曜日にその日の始値が直前5日間の平均より低い
  • 売り 月曜日から木曜日にその日の始値が直前5日間の平均より高い
  • 決済 翌朝に強制決済

結果 EURUSD 日足 2014/1/1 – 2015/1/1

ユーロドルでこんなにいい結果はめったに出ないですねえ。

ドルフランもいけてます。

ちなみにユーロドルの 2015/1/1 – 2015/2/27 の結果を調べてみると、総損益 8478 と2ヶ月で 1.8倍ペースの絶好調じゃないですか。

PF 2.37、勝率 65.63%。

正式運用EA に採用決定です。

関連記事

 

プログラムソース

//
// yasciiWeekly03.mq4 日足で動作

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

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

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

int OS1 ;
int OS2 ;
double   OOPL;
double   OOPS;

int start()
  {

   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(  TimeDayOfWeek(Time[0]) >= 1 && TimeDayOfWeek(Time[0]) <= 4 && iMA(NULL, 1440, Fast_period, 0, 0, PRICE_CLOSE, 1) > Open[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,Blue); 
    }

   //売りエントリー
    if(  TimeDayOfWeek(Time[0]) >= 1 && TimeDayOfWeek(Time[0]) <= 4 && iMA(NULL, 1440, Fast_period, 0, 0, PRICE_CLOSE, 1) < Open[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,Red); 
    } 

   return(0);
  }

###

超シンプルな自動売買プログラム(11) 前週の平均値と逆張り(2) 曜日属性

以前の記事「超シンプルな自動売買プログラム(11) 前週の平均値と逆張り」ですが、月曜日に買って金曜日に売るのは期間が長過ぎるかなと思い、何曜日が一番儲かっているか調べました。

テスト用のプログラムソースは後述します。

結果 EURUSD 日足 2014/1/1 – 2015/1/1

PF 総損益(ドル) 勝率(%)
月曜に売買し、火曜に決済 4.44 9114 75
火曜に売買し、水曜に決済 1.11 883 53.85
水曜に売買し、木曜に決済 1.38 3530 54.9
木曜に売買し、金曜に決済 1.92 6631 56.86
20158

 なんと、月曜日だけ売買したほうがいいという結果が。次が木曜日。

月曜日はさすがに前週の平均値を気にしている人が多いということでしょう。

木曜日が次に多いのは週末に近づいたのでそろそろ今週の落としどころを予想しようと考えるからでしょうか。

しかし、曜日別に走らせて、それぞれを合計したらすごい損益(20158ドル)になりますね。元金が1年で3倍になっちゃいます。

 

関連記事

プログラムソース

//
// yasciiWeekly02.mq4 日足で動作

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

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

//変数の設定//
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(  TimeDayOfWeek(Time[0]) == weekday + 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(   TimeDayOfWeek(Time[0]) == weekday + 1   
       && ( Ticket_S != 0 && Ticket_S != -1 ))
    {     
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Red);
      if( Exit_S ==1 ) {Ticket_S = 0;} 
    }   

   //買いエントリー
   if(  TimeDayOfWeek(Time[0]) == weekday && iMA(NULL, 1440, Fast_period, 0, 0, PRICE_CLOSE, 1) > Open[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,Blue); 
    }

   //売りエントリー
    if(  TimeDayOfWeek(Time[0]) == weekday && iMA(NULL, 1440, Fast_period, 0, 0, PRICE_CLOSE, 1) < Open[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,Red); 
    } 

   return(0);
  }

###

web-keepers Windows VPS についてのトラブル(3)

ご契約者 様
平素より弊社サービスをご利用いただき深謝申し上げます。
本日、ご契約の環境のホストサーバ内にてシステムが正常に
動作していないことを確認した為、誠に恐縮ではございますが、
ホストサーバー及び、ご契約サーバーの再起動を行わせて頂きました。
日時:2015年02月27日(金)8時00分(日本時間)

昨年年末から利用している Windows VPS(仮想専用サーバー)の web-keepers のトラブルですが、ちゃんと動き出したと思ったら、今朝また上記のメールが。

案の定、MetaTrader4 が落ちていました。

これでは自動売買などできません。

昨日からのデモ口座での自動売買の成績は幸いに影響を受けていませんでしたが。

2/25 09:00:00 buy 1 gbpjpy 183.996 2/26 08:00:26 184.89 89400
2/26 10:00:00 sell 1 eurjpy 134.881 2/26 11:29:07 134.829 5200

 

これでうまくいくと思ったのですが、他の VPS サーバーに移行するときが来たようです。

とりあえずは自宅サーバーに移行させますかね。

関連記事

 

###

平均からの乖離

平均(移動平均線)からの乖離をトレードシグナルにしていらっしゃる人が結構います。

ということで、乖離率を表示するインディケーターを自作してみました。

ついでに、乖離率の移動平均であるシグナルも表示します。

乖離率の計算に使用する移動平均線の種類も4種類から選べるようにしました。

サブウィンドウが乖離率です。

え、ボリンジャーバンドを見るから要らない!?

プログラムソース

//+------------------------------------------------------------------+
//|                          yasciiKairi01.mq4 
//+------------------------------------------------------------------+

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Orange
#property indicator_color2 Violet
#property indicator_level1   0

//---- input parameters
extern int  MA_period = 20;
extern int  Sig_period = 9;
extern int MA_method = 0; // SMA(0), EMA(1), SMMA(2), LWMA(3)

//---- buffers

double kairi[];
double kairiX[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
 {
//---- indicators
  IndicatorBuffers(2);
  IndicatorShortName("Kairi(" + MA_period + ")");
  SetIndexStyle(0, DRAW_LINE);
  SetIndexBuffer(0, kairi);
  SetIndexBuffer(1, kairiX);
  SetIndexStyle(1, DRAW_LINE);

 //----
  return(0);
 }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
 {
 //----
  return(0);
 }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars = IndicatorCounted();
   int i, j, limit ;

// to prevent possible error
   if(counted_bars < 0)
     {
       return(-1);
     }
   if(MA_method >= 4)
     {
       MA_method = 0;
     }

   limit = Bars - counted_bars;

   for(i = limit - MA_period ; i >= 0; i--)
     {
       double sma20 = iMA(NULL, 0, MA_period, 0 , MA_method , PRICE_CLOSE, i) ;
       kairi[i] = 100.0 * (Close[i]- sma20) / sma20 ;
      }

   for(j = limit - MA_period - Sig_period; j >= 0; j--)
      {
        kairiX[j] = iMAOnArray(kairi,0,Sig_period,0,MODE_EMA,j);
      }

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

###

web-keepers Windows VPS についてのトラブル(2)

昨年年末から利用している Windows VPS(仮想専用サーバー)の web-keepers のトラブルですが、先週末のメンテナンス以降、MetaTrader4 は一度も落ちていません。

奇跡的、というかこれが当たり前の姿のはずです。

メンテ後のデモ口座での自動売買の成績は、

2/23 10:00:00 buy 1 usdjpy 119.217 2/23 13:32:45 119.071 -14600
2/23 11:00:00 sell 1 eurjpy 135.305 2/23 13:41:16 134.64 66500
2/23 12:00:00 buy 1 gbpjpy 183.275 2/24 06:11:29 183.796 52100
2/23 13:00:00 sell 1 gbpjpy 182.699 2/23 15:44:32 183.151 -45200
2/24 18:00:00 sell 1 gbpjpy 184.241 2/25 01:00:00 183.858 38300
2/25 04:00:00 sell 1 eurjpy 134.635 2/25 09:00:00 134.816 -18100
2/25 10:00:00 buy 1 eurjpy 135.154 2/25 13:00:00 134.827 -32700
2/26 00:00:24 sell 1 eurjpy 135.018 2/26 02:38:05 135.153 -13500

 

ポンド円とユーロ円ばっかりですが、差し引き 32800円と出入りの激しい相場です。

ギリシャ問題のせいでしょうか。

ドル円は一向にチャンスが来ない(トレンドが出ない)みたいですね。

関連記事

web-keepers Windows VPS についてのトラブル

###

超シンプルな自動売買プログラム(11) 前週の平均値と逆張り

FXシステムトレード 年率200%儲ける投資術 FXシステムトレード 年率200%儲ける投資術

池田 悟

日本実業出版社 2006-05-24

売り上げランキング : 178070

Amazonで詳しく見る

by G-Tools

 

上の本の p80 に載っているこの本2つ目のシステムはウィクリートレード(月曜日に売買し、週末に決済) で、日足で動作するものです。

  • 買い 月曜日の始値が前週の 5日の平均より低い
  • 売り 月曜日の始値が前週の 5日の平均より高い
  • 決済 金曜日に強制決済

土曜日に決済したかったのですが、サーバーの時間がずれている(サマータイムもあるしね)のと、日足が週 5本と6本のサーバーがあるのとで、金曜日に決済することにしました。

プライスは前の週のピボット値(平均値に近い)に向かうという傾向があるので、逆張りになっているのでしょう。

EA にしてみると、なるほど多くの通貨ペアで利益が出ますネ。

ユーロ・ドル が一番優秀でした。

EURUSD 日足 2014/1/1 – 2015/1/1

ほとんど元金を割っていないので、運用中は気分がいいんじゃないでしょうか。

金曜日の朝に決済してしまうのが気になりますが、金曜日夜の狂騒劇に巻き込まれなくて、かえっていいですもんね。

関連記事

プログラムソース

//
// yasciiWeekly01.mq4 日足で動作

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

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

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

int OS1 ;
int OS2 ;
double   OOPL;
double   OOPS;

int start()
  {

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

   //買いポジションのエグジット
   OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);  
   OOPL = OrderOpenPrice();
   if(  TimeDayOfWeek(Time[0]) == 5  
       && ( 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(   TimeDayOfWeek(Time[0]) == 5 
       && ( Ticket_S != 0 && Ticket_S != -1 ))
    {     
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Red);
      if( Exit_S ==1 ) {Ticket_S = 0;} 
    }   

   //買いエントリー
   if(  TimeDayOfWeek(Time[0]) == 1 && iMA(NULL, 1440, Fast_period, 0, 0, PRICE_CLOSE, 3) > Open[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,Blue); 
    }

   //売りエントリー
    if(  TimeDayOfWeek(Time[0]) == 1 && iMA(NULL, 1440, Fast_period, 0, 0, PRICE_CLOSE, 3) < Open[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,Red); 
    } 

   return(0);
  }

 

###

超シンプルな自動売買プログラム(10) 移動平均線(MA)クロス マクロス+バルキリー

FXシステムトレード 年率200%儲ける投資術 FXシステムトレード 年率200%儲ける投資術

池田 悟

日本実業出版社 2006-05-24

売り上げランキング : 178070

Amazonで詳しく見る

by G-Tools

 

上の本の p79 に載っているこの本最初のシステムは 2本の移動平均線(MA)のクロスを使った超シンプルなもの。

  • 買い 5期間平均の移動平均線が 25期間平均の移動平均線を上回る
  • 売り 5期間平均の移動平均線が 25期間平均の移動平均線を下回る
  • 決済 10期間保有した後 あるいは 逆の売買サインが出たとき

MAクロスなのでマクロスと私は呼んでいます。

一定期間の保有で仕切る(見切る)というのは私はやらないのですが、やってみました。

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

本にはないのですが、私のいつもの固定ロスカットをつけたのが下。

最大ドローダウンが半減し、曲線も少しなだらかになりました。

固定ロスカットは一定の値(ヴァリュー)で切るのでバルキリーとでも呼びましょうか。なかなか効果があります。

このマクロスはバルキリー付きでもパフォーマンスは他の EA と比べていまいちですが、保有期間を制限するというアイディアはありだと思います。

なお、保有期間の数値を最適化で決めるようにすると最適解はもっと長くなるようです。ただし、総損益と最大勝ち金額が増えますが、勝率と最大ドローダウンは下がります。

関連記事

FXシステムトレード 年率200%儲ける投資術 / 池田 悟

プログラムソース

//
// yasciiMAcross01.mq4

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

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

//---- input parameters

extern int Slow_period = 25;
extern int Fast_period = 5;
extern int pos_timeMAX = 10;
int pos_time = 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;

extern double ILC = 12.0 ; 

int start()
  {

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

   pos_time += 1 ;

     double ma5 = iMA(NULL, 0, Fast_period, 0, 0, PRICE_CLOSE, 1);
     double ma25 = iMA(NULL, 0, Slow_period, 0, 0, PRICE_CLOSE, 1);
     double ma5s = iMA(NULL, 0, Fast_period, 0, 0, PRICE_CLOSE, 2);
     double ma25s = iMA(NULL, 0, Slow_period, 0, 0, PRICE_CLOSE, 2);

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

   //買いポジションのエグジット

   OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);  
   OOPL = OrderOpenPrice();
   if(  ((ma5 < ma25 && ma5s > ma25s)|| pos_time > pos_timeMAX || OOPL - lc*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;}
          pos_time = 0;
    }    

   //売りポジションのエグジット

   OS2 = OrderSelect(Ticket_S, SELECT_BY_TICKET); 
   OOPS = OrderOpenPrice();
   if(   ((ma5 > ma25 && ma5s < ma25s) || pos_time > pos_timeMAX || OOPS + lc*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;} 
          pos_time = 0;
    }   

   //買いエントリー
   if(  ma5 > ma25 && ma5s < ma25s
       && ( 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);    pos_time = 0;
    }

   //売りエントリー
    if(  ma5 < ma25 && ma5s > ma25s
       && ( 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);     pos_time = 0;
    } 

   return(0);
  }

###

オシレーターの解釈(数値判定)について

オシレーター系の評価には、「基準となる数値をどうとるか」 や「順張りととらえるかあるいは逆張りと考えるか」など難しい問題が多数あります。

上のチャートではサブウィンドウに RSI を表示してあります。

ここでは点線のラインは 30 と 70 を採用することにしますが、どの時点でどういう判断をくだすかでいろいろ変わってきます。

たとえば、

  • A地点(RSI が買われすぎゾーンに突入)
  • B地点(RSI が買われすぎゾーンを脱出)
  • C地点(RSI が売られすぎゾーンに突入)

のどの地点を判断基準にするかということを考えてみます。

A地点(RSI が買われすぎゾーンに突入)を買われすぎと判定

よくみる考えですが、バンドウォークの始点だったりするとこれからずっと買われすぎの状態が続きます。

ここで売ったりするプログラムでは大負けすることが多いです。損切りはしっかりとしましょう。

B地点(RSI が買われすぎゾーンを脱出)を売られ始めと判定

これもよく見る考えですが、しっかりしたレンジ相場以外ではあまり有効ではありません。

C地点(RSI が売られすぎゾーンに突入)を買われすぎの終焉と判定

これを売られすぎとするという考えは「A地点(RSI が買われすぎゾーンに突入)を買われすぎと判定」することの逆パターンになりますので省略しますが、そうではなく、ここまでが買われすぎの状態とする考え方です。

そう間違いではないのですが、上のチャートのようにトレンドや非トレンド(上昇&下降)がごった混ぜの状態を区別できていませんね。

まとめ

オシレーター系の指標はレンジ相場などでは有効ですが、トレンド相場では有効でなくなるばかりか、むしろ有害になる危険性も高いです。

そのためレンジ相場かトレンド相場かを別の方法で判別してから適用する必要があります。

関連記事

超シンプルな自動売買プログラム(9) RSI クロス

###

超シンプルな自動売買プログラム(9) RSI クロス

超シンプルな自動売買プログラム として RSI とそのシグナル(直前3本の平均値)とのクロスを考えてみました。

RSI はオシレーター系では最も有名なものですね。

  • 買い RSI がBuyLevel 以上のときに RSI が上昇(シグナルを上抜け)
  • 売り RSI がSellLevel 以下のときに RSI が下降(シグナルを下抜け)
  • 決済 逆のサインが出たとき または 固定ロスカットにひっかかったとき

 

結果

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

最適化した後のパラメーターは RSI Period = 11、BuyLevel = 48、SellLevel =52 です。

固定ロスカットはつけましたが、ほとんど無意味です。

利益曲線を見るとトレンド時に頑張るタイプです。RSI はオシレーターのくせにヘンですよね。

まあ、RSI のシグナルとのクロスなので RSI の上昇が買いのサイン、下降を売りのサインとみなしているわけですから、順張りとしての使い方です。そう考えるとヘンではないでしょう。

オシレーターっぽいところかな、と思うのは、トレンドのないときのロスが比較的少ないところでしょうか。

プログラムソース

//
// yasciiRSI01.mq4
//

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

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

extern int RSI_Period = 14 ;
extern double BuyLevel = 50.0;
extern double SellLevel = 50.0;

extern double ILC = 40.0 ;

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

int start()
  {

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

      double RSI_MAIN1 = iRSI(NULL, 0, RSI_Period , PRICE_CLOSE, 1 );
      double RSI_MAIN2 = iRSI(NULL, 0, RSI_Period , PRICE_CLOSE, 2 );
      double RSI_MAIN3 = iRSI(NULL, 0, RSI_Period , PRICE_CLOSE, 3 );
      double RSI_MAIN4 = iRSI(NULL, 0, RSI_Period , PRICE_CLOSE, 4 );
      double RSI_Signal1 = (RSI_MAIN1 + RSI_MAIN2 + RSI_MAIN3)/3.0 ;
      double RSI_Signal2 = (RSI_MAIN4 + RSI_MAIN2 + RSI_MAIN3)/3.0 ;

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

   //買いポジションのエグジット
   OS = OrderSelect(Ticket_L, SELECT_BY_TICKET);  
   if(    ((RSI_MAIN1 < RSI_Signal1 && RSI_MAIN2 >= RSI_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(    ((RSI_MAIN1 > RSI_Signal1 && RSI_MAIN2 <= RSI_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(    RSI_MAIN1 > RSI_Signal1 && RSI_MAIN2 <= RSI_Signal2 && RSI_MAIN1 > BuyLevel
       && ( 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(    RSI_MAIN1 < RSI_Signal1 && RSI_MAIN2 >= RSI_Signal2 && RSI_MAIN1 <= 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);
  }

###

web-keepers Windows VPS についてのトラブル

昨年年末から利用している Windows VPS(仮想専用サーバー)の web-keepers ですが、常時稼働させている MetaTrader4 が落ちてしまうというトラブルが十数回。

その後値上げの通知が。

まともに動かないのにこれではいかんな、FC2-VPS に乗り換えか、と思っていたところ、先週末にメンテナンスがあり、それも予定より遅れて 2/21 終了。

2/22 は全く接続できず。

やっぱりと思ったら、2/23 13:45 に接続可能になり、その後奇跡的に動いています。

とりあえず数日様子をみて、もし元通りなら FC2-VPS に乗り換えを敢行します。

###

英傑の日本史 激闘織田軍団編 / 井沢 元彦

英傑の日本史 激闘織田軍団編 英傑の日本史 激闘織田軍団編

井沢 元彦

KADOKAWA / 角川学芸出版 2013-03-14

売り上げランキング : 11045

Amazonで詳しく見る

by G-Tools

★★★★☆

織田信長に関わりのあった武将たちを詳しく紹介しています。

前田利家の実像をあばき、秀吉をこきおろしているのが痛快。

足利義昭もそこそこ有能な男に描かれています。

柴田勝家と佐々成政、佐久間盛政、浅井長政など、勝者によって不当におとしめられた者たちをきちんと再評価しているのがすばらしいです。

しかし、秀吉は最低なやつですな。

関連記事

###

かげろう飛脚―鬼悠市 風信帖 / 高橋 義夫

かげろう飛脚―鬼悠市 風信帖 (文春文庫) かげろう飛脚―鬼悠市 風信帖 (文春文庫)

高橋 義夫

文藝春秋 2006-12

売り上げランキング : 966864

Amazonで詳しく見る

by G-Tools

★★★☆☆

順番が逆になりましたが、昨日ブックオフで見つけたので・・・

鬼悠市 風信帖シリーズ第2弾。

今回の指命は分家の元家老の警護というもの。

家老の命を狙う刺客を倒すことはもちろん、情報収集をしたり、暗殺計画を事前に防ぐなど文字通り鬼神のような働きを行います。

かげろう飛脚とはなにか、そしてその正体は?

後の話に繋がる伏線も豊富にあって、なかなかよかったです。

閑話休題

一昨日、電車の中吊り広告で「御隠居剣法」が出版と・・・おおっ!

え、鳥羽亮?

高橋義夫さんの「御隠居忍法」シリーズの新作ではないのね、とがっかりしました。

関連記事

###

影丸と胡蝶―ほか七編 (講談社漫画文庫―横山光輝時代傑作選) / 横山 光輝

影丸と胡蝶―ほか七編 (講談社漫画文庫―横山光輝時代傑作選) 影丸と胡蝶―ほか七編 (講談社漫画文庫―横山光輝時代傑作選)

横山 光輝

講談社 2001-05

売り上げランキング : 545746

Amazonで詳しく見る

by G-Tools

★★★☆☆

郷土の名士である横山光輝先生の短編集。

忍者の伊賀の影丸が出てくるので買いましたが、残りの作品は影丸は出てきません。

「ムササビ」の1作は忍者ものですが、残り2作は任侠もの。

「カニの赤槍」は可児才蔵が主役の豪快なお話。

「影丸と胡蝶」、「稚児地蔵」、「仇討ち始末」と「ほらふき陣左」は悲話ですが、「恋と十手とお銀ちゃん」はユーモア捕物帖。

いろいろあって余韻も深く、人生の勉強になります。

収録作品

  • 影丸と胡蝶
  • 稚児地蔵(人形佐七)
  • 仇討ち始末
  • ほらふき陣左
  • カニの赤槍
  • 恋と十手とお銀ちゃん
  • ムササビ(3編)

関連記事

###

24時間ですっきり! ぐちゃぐちゃデスクのシンプル整理術 / ズザンネ・ロート

24時間ですっきり! ぐちゃぐちゃデスクのシンプル整理術 24時間ですっきり! ぐちゃぐちゃデスクのシンプル整理術

ズザンネ・ロート

技術評論社 2006-09-26

売り上げランキング : 1061222

Amazonで詳しく見る

by G-Tools

★★★★☆

ズザンネ・ロートさんはその響きのとおりドイツ人(英語ではスザンナ・レッドになります)。

オフィスの整理術についての本ですが、24時間で一通り終わらせてしまおうという趣向の本。

分類に独特のものを感じますが、なんとなくうまくいきそうです。

やらないよりやったほうがいいのは確か。

いつ24時間をとるのか、そもそもオフィスに24時間連続でいられるのか、なんて疑問はさておき、とりあえず次の年末にはやってみたい・・・

たぶん忘れているでしょうけどね。

###

大摩のガロ (小学館文庫―忍法秘話) / 白土 三平

大摩のガロ (小学館文庫―忍法秘話) 大摩のガロ (小学館文庫―忍法秘話)

白土 三平

小学館 1996-05

売り上げランキング : 554035

Amazonで詳しく見る

by G-Tools

★★★☆☆

白土三平の忍者マンガ短編集。

大摩のガロという相手の考えを遠方からでも読みとる忍者が主人公。

テレパシーというわけですね。

一度死んでもよみがえり、バッタバッタと相手を倒していく大摩のガロ。

しかし、最後には根来忍法に破れて死んでしまいます。

その仇をこれまた白土さんのマンガではおなじみの四貫目がとるという展開はさすがと言えましょう。

大摩のガロとは無関係の話も収録されており、そのうち一つは有名な忍者飛び加藤が主人公。

しかし、こういうSFチックな話が昭和に書かれていたというのがすばらしい。

マンガじゃないけど山田風太郎はもっと古いけどね。

###

スガル (小学館文庫―忍法秘話) / 白土 三平

スガル (小学館文庫―忍法秘話) スガル (小学館文庫―忍法秘話)
白土 三平
小学館 1996-07
売り上げランキング : 772557
Amazonで詳しく見る
by G-Tools

★★★☆☆

白土三平さんの忍者マンガ短編集。

スガルはくのいちの名前です。

カムイ外伝にも凄腕の女忍者スガルが出てきますが、この本はそれとは無関係。

スガルの誕生から最期までを断続的につづっていますが、これらのスガルが同一人物なのかは不明です。

スガルとは無関係の話も収録。

しかし、忍者というのは実に日本人らしい職業と思います。

職人気質がないとなかなかこういうシステムが根付きませんから。

現代の日本にもこういう存在が必要だと思うのですが。

###

マーフィーのスパンモデルについて

マーフィーの最強スパンモデルFX投資法 マーフィーの最強スパンモデルFX投資法

柾木 利彦

日本実業出版社 2010-12-16

売り上げランキング : 46055

Amazonで詳しく見る

by G-Tools

前回の記事「一目均衡表のずれ(26と25)」で紹介したこの本ですが、マーフィー(柾木)さんのスパンモデルとは、一目均衡表から転換線と基準線を除き、先行スパンAと先行スパンBと遅行線とを使うものです。

ただし、 先行スパンAと先行スパンB を先行させません。

え、先行スパンでないただのスパン? だからスパンモデルなんですかね。

リアルタイム雲とかカレント雲とかちまたで呼ばれているものと同じです。

坂の上の雲ではなく、ここの上の雲。

 

とりあえずプログラムしてみました。

プログラムソース

//+------------------------------------------------------------------+
//|              Span Model          yasciiSpan01.mq4 
//+------------------------------------------------------------------+
#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 Black          // Tenkan-sen
#property indicator_color2 Black         // Kijun-sen
#property indicator_color3 SandyBrown   // Up Kumo
#property indicator_color4 Thistle      // Down Kumo
#property indicator_color5 Yellow         // Chikou Span
#property indicator_color6 SandyBrown   // Up Kumo bounding line
#property indicator_color7 Thistle      // Down Kumo bounding line
//--- input parameters
input int InpTenkan=9;   // Tenkan-sen
input int InpKijun=26;   // Kijun-sen
input int InpSenkou=52;  // Senkou Span B

int    ExtBegin;

//--- buffers
double tenkan[];
double kijun[];
double senkouA[];
double senkouB[];
double chikou[];
double senkouAL[];
double senkouBL[];
//---

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit(void)
  {
   IndicatorDigits(Digits);
//---
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,tenkan);
   SetIndexDrawBegin(0,InpTenkan-1);
   SetIndexLabel(0,"Tenkan Sen");
//---
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,kijun);
   SetIndexDrawBegin(1,InpKijun-1);
   SetIndexLabel(1,"Kijun Sen");
//---
   ExtBegin = InpKijun;
   if(ExtBegin < InpTenkan) ExtBegin = InpTenkan;
//---
   SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_DOT);
   SetIndexBuffer(2,senkouA);
   SetIndexDrawBegin(2,InpKijun+ExtBegin-1);
   SetIndexLabel(2,NULL);
   SetIndexStyle(5,DRAW_LINE,STYLE_DOT);
   SetIndexBuffer(5,senkouAL);
   SetIndexDrawBegin(5,InpKijun+ExtBegin-1);
   SetIndexLabel(5,"Senkou Span A");
//---
   SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_DOT);
   SetIndexBuffer(3,senkouB);
   SetIndexDrawBegin(3,InpKijun+InpSenkou-1);
   SetIndexLabel(3,NULL);
   SetIndexStyle(6,DRAW_LINE,STYLE_DOT);
   SetIndexBuffer(6,senkouBL);
   SetIndexDrawBegin(6,InpKijun+InpSenkou-1);
   SetIndexLabel(6,"Senkou Span B");
//---
   SetIndexStyle(4,DRAW_LINE);
   SetIndexBuffer(4,chikou);
   SetIndexShift(4,1-InpKijun);
   SetIndexLabel(4,"Chikou Span");
//--- initialization done
  }
//+------------------------------------------------------------------+
//| Ichimoku Kinko Hyo                                               |
//+------------------------------------------------------------------+
int start()
{
   int limit = Bars - IndicatorCounted();
   if(limit == Bars) limit -= InpKijun+InpSenkou-1;
   for (int i =limit -1; i>=0; i--)
   {
        tenkan[i] = (High[iHighest(NULL, 0, MODE_HIGH, InpTenkan, i)] + Low[iLowest(NULL, 0, MODE_LOW, InpTenkan, i)]) / 2.0 ;
        kijun[i] = (High[iHighest(NULL, 0, MODE_HIGH, InpKijun, i)] + Low[iLowest(NULL, 0, MODE_LOW, InpKijun, i)]) / 2.0 ;
        senkouA[i] = (High[iHighest(NULL, 0, MODE_HIGH, InpKijun, i)] + Low[iLowest(NULL, 0, MODE_LOW, InpKijun, i)] + High[iHighest(NULL, 0, MODE_HIGH, InpTenkan, i)] + Low[iLowest(NULL, 0, MODE_LOW, InpTenkan, i)]) / 4.0 ;
        senkouB[i] = (High[iHighest(NULL, 0, MODE_HIGH, InpSenkou, i)] + Low[iLowest(NULL, 0, MODE_LOW, InpSenkou, i)])/2.0 ;
        senkouAL[i] = senkouA[i] ;
        senkouBL[i] = senkouB[i] ;
        chikou[i] = Close[i];
     }

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

関連記事

一目均衡表(関数版)

一目均衡表のずれ(26と25)

###

一目均衡表のずれ(26と25)

マーフィーの最強スパンモデルFX投資法 マーフィーの最強スパンモデルFX投資法
柾木 利彦
日本実業出版社 2010-12-16
売り上げランキング : 46055
Amazonで詳しく見る
by G-Tools

 

上の本を読んでいたら、「MetaTrader4 での一目均衡表(Ichimoku.ex4 )は本来の一目均衡表とは1本ズレているので、パラメーターの InpKijun を 26 から 25 にしろ」と書いてありました。

一目均衡表では「当日を含めて26日ずらす」と書いてあるので、25ずらすのが正解なのです。

「MetaTrader4 での一目均衡表(Ichimoku.ex4 )は本来の一目均衡表とは1本ズレている」のは正しいです。

でも後半の「パラメーターの InpKijun を 26 から 25 にしろ」は間違いでしょう。

Ichimoku.mq4 のソースを読むと、そうしてしまうと基準線や先行スパンA の計算値自体が狂ってしまうからです。

InpKijun は 26 のままで、

  1. SetIndexShift(2,InpKijun);⇒SetIndexShift(2,InpKijun-1);
  2. SetIndexShift(3,InpKijun);⇒SetIndexShift(3,InpKijun-1);
  3. SetIndexShift(4,-InpKijun);⇒SetIndexShift(4,-InpKijun+1);
  4. SetIndexShift(5InpKijun);⇒SetIndexShift(5,InpKijun-1);
  5. SetIndexShift(6,InpKijun);⇒SetIndexShift(6,InpKijun-1);

 

の5ケ所を変更しないといけないと思います。

もっとも柾木さんの記述はスパンモデルのもので、オリジナルの一目均衡表のものではありません。

それともスパンモデルの先行スパンAは一目均衡表の先行スパンAとは計算方法が違うというのでしょうか?

*

ともあれ、MetaTrader4 での一目均衡表(Ichimoku.ex4 )は修正すべきですね。

以前の記事「一目均衡表(関数版)」のも変更しておきました。

関連記事

一目均衡表(関数版)

###

仕事が10倍速くなる! スピード手帳術 / 松本幸夫

仕事が10倍速くなる! スピード手帳術 仕事が10倍速くなる! スピード手帳術
松本 幸夫
日本実業出版社 2008-02-28
売り上げランキング : 537272
Amazonで詳しく見る
by G-Tools

★★★★☆(簡潔にまとまっている)

時間活用術とそれに則した手帳術を紹介。

普遍的な方法ばかりですので、簡単でだれでもできると思います。

手帳初心者あるいはビジネスマン初心者にはまずこの本から始めることをお勧めします。

関連記事

###

METROというインディケーター

ネットで配布されている METRO という無料のインディケーターがあります。

ダウンロード> METRO.mq4

サブウィンドゥの3本の線で構成されているのが METRO インディケーターです。

RSI を元にした指標のようですが、水色と紫色のラインのクロスで売買できそうです(茶色は RSI)。

ということで、EA にしてみました。

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

最適化しなくても結構いい感触ですね。

RSI というオシレーターを元にしている割にはトレンド相場に強いという、ちょっと意外な性格のようです。

プログラムソース

//
// yasciiMETRO01.mq4

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

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

//---- input parameters

extern int PeriodRSI=14;
extern int StepSizeFast=5;
extern int StepSizeSlow=15;
extern int Fast_period = 14;

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

int OS1 ;
int OS2 ;
double   OOPL;
double   OOPS;

extern double ILC = 25.0 ; 

int start()
  {

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

     double index1 = iCustom(NULL, 0, "METRO", PeriodRSI, StepSizeFast, StepSizeSlow, 1, 1);
     double index2 = iCustom(NULL, 0, "METRO", PeriodRSI, StepSizeFast, StepSizeSlow, 2, 1);
     double index1p = iCustom(NULL, 0, "METRO", PeriodRSI, StepSizeFast, StepSizeSlow, 1, 2);
     double index2p = iCustom(NULL, 0, "METRO", PeriodRSI, StepSizeFast, StepSizeSlow, 2, 2);

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

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

   //買いポジションのエグジット

   OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);  
   OOPL = OrderOpenPrice();
   if(  (index1 < index2 ||OOPL - lc*Point >= Close[1] || Close[1] < FastLL2 )  
       && ( 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(   (index1 > index2 || OOPS + lc*Point <= Close[1] || Close[1] > FastHH2 ) 
       && ( Ticket_S != 0 && Ticket_S != -1 ))
    {     
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Red);
      if( Exit_S ==1 ) {Ticket_S = 0;} 
    }   

   //買いエントリー
   if(  index1 >= index2 && index1p < index2p
       && ( 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(  index1 <= index2 && index1p > index2p 
       && ( 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);
  }

 

###

リアルタイムクラウドフィルタ

昨日の記事「一目均衡表(関数版)」で、リアルタイム雲(時間がずれていない雲)のフィルタを作る方法に触れましたが、

 

   double high_value9 = High[iHighest(NULL, 0, MODE_HIGH, 9, 1)];
   double low_value9 = Low[iLowest(NULL, 0, MODE_LOW, 9, 1)];
   double high_value26 = High[iHighest(NULL, 0, MODE_HIGH, 26, 1)];
   double low_value26 = Low[iLowest(NULL, 0, MODE_LOW, 26, 1)];
   double high_value52 = High[iHighest(NULL, 0, MODE_HIGH, 52, 1)];
   double low_value52 = Low[iLowest(NULL, 0, MODE_LOW, 52, 1)];

   double tenkan = (high_value9 + low_value9) / 2.0 ;
   double kijun = (high_value26 + low_value26) / 2.0 ;
   double senkouA = (tenkan + kijun) / 2.0 ;
   double senkouB = (high_value52 + low_value52) / 2.0 ;

 

と書きますと、senkouA と senkouB がリアルタイム雲(26個分ずらす前の雲)に相当します。

売買条件のときに、 if(Close[1] > senkouA && Close[1] > senkouB && ・・・)

などと書けばいいのですね。

ちなみに普通の(一目均衡表の)雲は下のように書けます。こう書いただけですでに 26個分ずれています。

    double senkouA = iIchimoku( NULL, 0, 9, 26, 52, 3, 1);
    double senkouB = iIchimoku( NULL, 0, 9, 26, 52, 4, 1);

これらからリアルタイム雲を作ってもいいです。ずらす方向を間違えないようにね。

関連記事

###

一目均衡表(関数版)

MetaTrader4 に付属している一目均衡表のソースを見てみるとずいぶん複雑なので、関数を使って簡単に記述し直してみました。

書き換えたのはほとんど start 関数だけです(バッファ名も長いので変えましたけど)。

これをちょっと変えるとリアルタイム雲のフィルタが簡単に作れます。

プログラムソース

//+------------------------------------------------------------------+
//|              一目均衡表(関数版)          yasciiIchimoku01.mq4 |
//+------------------------------------------------------------------+

#property strict

#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 Red          // Tenkan-sen
#property indicator_color2 Blue         // Kijun-sen
#property indicator_color3 SandyBrown   // Up Kumo
#property indicator_color4 Thistle      // Down Kumo
#property indicator_color5 Yellow         // Chikou Span
#property indicator_color6 SandyBrown   // Up Kumo bounding line
#property indicator_color7 Thistle      // Down Kumo bounding line
//--- input parameters
input int InpTenkan=9;   // Tenkan-sen
input int InpKijun=26;   // Kijun-sen
input int InpSenkou=52;  // Senkou Span B
//--- buffers
double tenkan[];
double kijun[];
double senkouA[];
double senkouB[];
double chikou[];
double senkouAL[];
double senkouBL[];
//---
int    ExtBegin;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit(void)
  {
   IndicatorDigits(Digits);
//---
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,tenkan);
   SetIndexDrawBegin(0,InpTenkan-1);
   SetIndexLabel(0,"Tenkan Sen");
//---
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,kijun);
   SetIndexDrawBegin(1,InpKijun-1);
   SetIndexLabel(1,"Kijun Sen");
//---
   ExtBegin = InpKijun;
   if(ExtBegin < InpTenkan) ExtBegin = InpTenkan;
//---
   SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_DOT);
   SetIndexBuffer(2,senkouA);
   SetIndexDrawBegin(2,InpKijun+ExtBegin-1);
   SetIndexShift(2,InpKijun-1);
   SetIndexLabel(2,NULL);
   SetIndexStyle(5,DRAW_LINE,STYLE_DOT);
   SetIndexBuffer(5,senkouAL);
   SetIndexDrawBegin(5,InpKijun+ExtBegin-1);
   SetIndexShift(5,InpKijun-1);
   SetIndexLabel(5,"Senkou Span A");
//---
   SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_DOT);
   SetIndexBuffer(3,senkouB);
   SetIndexDrawBegin(3,InpKijun+InpSenkou-1);
   SetIndexShift(3,InpKijun-1);
   SetIndexLabel(3,NULL);
   SetIndexStyle(6,DRAW_LINE,STYLE_DOT);
   SetIndexBuffer(6,senkouBL);
   SetIndexDrawBegin(6,InpKijun+InpSenkou-1);
   SetIndexShift(6,InpKijun-1);
   SetIndexLabel(6,"Senkou Span B");
//---
   SetIndexStyle(4,DRAW_LINE);
   SetIndexBuffer(4,chikou);
   SetIndexShift(4,1-InpKijun);
   SetIndexLabel(4,"Chikou Span");
//--- initialization done
  }
//+------------------------------------------------------------------+
//| Ichimoku Kinko Hyo                                               |
//+------------------------------------------------------------------+
int start()
{
   int limit = Bars - IndicatorCounted();
   if(limit == Bars) limit -= InpKijun+InpSenkou-1;
   for (int i =limit -1; i>=0; i--)
   {
        tenkan[i] = (High[iHighest(NULL, 0, MODE_HIGH, InpTenkan, i)] + Low[iLowest(NULL, 0, MODE_LOW, InpTenkan, i)]) / 2.0 ;
        kijun[i] = (High[iHighest(NULL, 0, MODE_HIGH, InpKijun, i)] + Low[iLowest(NULL, 0, MODE_LOW, InpKijun, i)]) / 2.0 ;
        senkouA[i] = (High[iHighest(NULL, 0, MODE_HIGH, InpKijun, i)] + Low[iLowest(NULL, 0, MODE_LOW, InpKijun, i)] + High[iHighest(NULL, 0, MODE_HIGH, InpTenkan, i)] + Low[iLowest(NULL, 0, MODE_LOW, InpTenkan, i)]) / 4.0 ;
        senkouB[i] = (High[iHighest(NULL, 0, MODE_HIGH, InpSenkou, i)] + Low[iLowest(NULL, 0, MODE_LOW, InpSenkou, i)])/2.0 ;
        senkouAL[i] = senkouA[i] ;
        senkouBL[i] = senkouB[i] ;
        chikou[i] = Close[i];
     }

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

###

ふるさと納税初めてやってみた

住民税だけでも毎月20万円以上払っていますが、大津市はなんの見返りもくれません。

それどころかうちのマンションの排水管を壊したのに弁償もせず、恨み骨髄です。

そこで仕返しのためにふるさと納税をやることにしました。

ふるさと納税=ふるさとでなくても寄付

納税と言ってもじつは寄付金です。

でも寄付をすることで納めた税金が戻ってくるので、納税と同じ(納める方ももらう方も)です。

今より 2000円多く払うことでたくさんの見返りがもらえるのですから、やらなきゃソン。

食品をもらえばその分食費が浮くので節約にもなります。

詳しくはこちらを> ふるさと納税ポータルサイト

初めてのふるさと納税

ということで、まず手始めにパソコン。

長野県飯山市がやっています。

価格.com で最安値 64584円 のマウスコンピューター製 LuvMachines Lm-iH301S(ただし Windows7搭載)がよかろうと。

これとはちょっと異なる飯山市用スペシャルモデルはこちら(若干グレードアップされています)。

LM-iH301S-IIYAMA

  • ・OS Windows 8.1 Update 64ビット
    ・CPU インテルCore i5-4590プロセッサー(4コア/3.30GHz/TB時最大3.70GHz/6MBキャッシュ

    ・CPUファン LGA 1150用CPU FAN

    ・CPUグリス 標準CPUグリス

    ・メモリ 8GBメモリ(4GB×2 DDR3 SDRAM PC3-12800)/デュアルチャネル

    ・HDD 500GB 7200rpm(6Gbps対応)

    ・グラフィック機能 インテルHD グラフィックス4600

    ・光学ドライブ DVDスーパーマルチドライブ

    ・マザーボード インテルH81 Expressチップセット(MicroATX)

    ・ケース ミニタワーデスクトップ(ブラック/フロントUSB2.0対応)

    ・電源 350W電源

    ・LAN オンボード10/100/1000BASE-T GigaBit-Ethernet LAN

    ・サウンド ハイデフィニション・オーディオ

    ・キーボード 標準オリジナルキーボード(USB有線/102日本語キー/ブラック)

    ・マウス 標準オリジナルマウス(USB有線/オプティカル/スクロール機能付き3ボタン/ブラック)

    ・サポート 1年間センドバック修理保証※1か月間初期不良対応を含む

実は使い回しのできる筐体(ケース)が以前から改造用にほしかった(最近のデル製は裏のパネルがはずれずマザーボード交換がしにくい)のですが、これにはもちろん中身もついています。^^

10万円の寄付が必要ですが、来年 98000円が返ってくるので、結局 2000円なわけで。

いつ届くか楽しみです。

*

次は液晶モニタ、米、カニ、肉、果物、ワイン、ラーメンといきますかね。

###

「近くて遠い国」でいい、日本と韓国 (WAC BUNKO) / 渡部昇一 呉善花

「近くて遠い国」でいい、日本と韓国 (WAC BUNKO) 「近くて遠い国」でいい、日本と韓国 (WAC BUNKO)

渡部昇一 呉善花

ワック 2013-04-22

売り上げランキング : 319487

Amazonで詳しく見る

by G-Tools

★★★★★(わかりやすいし、じつに納得できる)

呉善花氏の著書はとっても面白くてためになります。

渡部昇一さんは高校生時代からの心の師です。

韓国人の国民性がじつによくわかります。そして日本人の特異性も。

理解し合うことはまず無理でしょう。

しかし、それでいいのです。

見かけが似ているから変な期待をするのでしょうが、中身は全く違うのです。

ヨーロッパ人やアメリカ人、アフリカ人、アラブ人などの全く文化が異なる人と同じように考えて、接していけばいいだけの話です。

関連記事

###

FX最強チャート GMMAの真実 / 陳 満咲杜 (3)

FX最強チャート GMMAの真実 FX最強チャート GMMAの真実

陳 満咲杜

扶桑社 2012-06-29

売り上げランキング : 79239

Amazonで詳しく見る

by G-Tools

★★★★★(中級者の指南書としては最適)

以前紹介した GMMA というチャートについてですが、こういうものです。

 

赤い6本の移動平均線(EMA)と青い6本の移動平均線(EMA)をそれぞれ投機筋と投資筋にみたてて、それらのクロスで売買します。

エッセンスだけを EA にしてみました。

こんなシンプルなものでも、ドル円、ポンド円、豪ドル円、NZドル円の1時間足では利益が出ます。

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

最大ドローダウンが大きいので改良が必要ですね。

移動平均線のクロスという定石通りなので、トレンド相場では強いのは当たり前ですけどね。

関連記事

プログラムソース

//
// yasciiGMMA01
//

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

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

extern int MA_Period1 =3;
extern int MA_Period2 =60;

extern double ILC = 15.0 ;
//extern double TP = 240.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 ema3 = iMA( NULL, 0, MA_Period1, 0, MODE_EMA, PRICE_CLOSE, 1);
   double ema3s = iMA( NULL, 0, MA_Period1, 0, MODE_EMA, PRICE_CLOSE, 2);
   double ema60 = iMA( NULL, 0, MA_Period2, 0, MODE_EMA, PRICE_CLOSE, 1);
   double ema60s = iMA( NULL, 0, MA_Period2, 0, MODE_EMA, PRICE_CLOSE, 2);

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

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

###

鳥の歌 遥かなる同胞たちの歌 / 宗次郎

鳥の歌~遥かなる同胞たちの歌~ 鳥の歌~遥かなる同胞たちの歌~

宗次郎

ユニバーサル ミュージック 2007-07-31

売り上げランキング : 1097734

Amazonで詳しく見る

by G-Tools

★★★☆☆

オカリナ奏者で作曲家の宗次郎のアルバム。

離れた小国にもすぐれた音楽があり、それを聴いているとみんな同胞に感じるという趣旨のアルバムで、11曲目以外はカバー曲となっていますが、アレンジが凝っています。

「スカボローフェア」や「マイムマイム」は誰でも知っていますが、イントロからは予測がつきません。

「泣きながら」は昔はやった「ランバダ」の原曲。

「花祭り」はよく聞く民族音楽です。

「鳥の歌」はカザルスゆかりのカタロニア民謡。

「ミッション」はエンニオ・モリコーネ作曲の同名映画の主題曲である「ガブリエルのオーボエ」です。サラ・ブライトマンも歌詞をつけて歌ってましたね。

「4つのフィンランド民謡」はアレンジのせいか日本の民謡のように聞こえるものがあり、確かに同胞感満載です。

ケーナもいいですが、オカリナも実にいろんな表情が出せるのです。

曲目リスト

  1. スカボローフェア
  2. 4つのフィンランド民謡
  3. ミッション
  4. 天国への階段
  5. 泣きながら
  6. 瑶族舞曲
  7. 鳥の歌
  8. 花祭り
  9. マイム マイム
  10. 風とケーナのロマンス
  11. 魂の島々
  12. ムーンチャイルド

関連記事

###

一目均衡表の教えてくれるもの

FX の話です。

株の世界から導入された一目均衡表ですが、最近勉強し直してみると実に多くのウロコが目から飛び出してきます。

同時に足下がグラグラ崩れてきたりもします。

終値は使わない

一目均衡表では終値でなく、高値と安値とその半値を使用します。

今まで EA(expert advisor)という自動売買プログラムを作ってきました。ほとんどすべて終値をベースにしています。

でも終値というのはサーバーの時間が 1秒ずれただけで変わってしまうわけですよね。

こんなアバウトなもので判断したり、それで作った指標をアテにしていいのかと思ってしまいます。

一目均衡表ではある期間中の高値と安値を使いますから、多少サーバーの時間がずれようとほとんど変化がありません。

機械の都合で変わる終値より、人間心理で変わる高値、安値のほうが信用できるわけですもんね。

うーん、EA 全部作り直しかも?

終値を半値に置き換えるだけなら簡単なんですが、検証のやり直しが・・・

###

アンディさんのリアルタイム雲(2)

前回の記事「アンディさんのリアルタイム雲」で紹介したリアルタイム雲 ですが、本日ちょっと使ってみたところ、なかなかいい感触でトレードできました。

一目均衡表と違い、たえず分厚いサポートの雲がローソク足の近くにあるので、損切りやトレールが早くできるのが魅力です。

その分、一目均衡表よりハラハラするのですが。

さらに研究を進めましょう。

最終的には EA に組み込んでいきたいです。

本日の結果

エントリ B/S lots 通貨 約定値 決済 約定値 損益$
02:44:07 sell 1 usdjpy 118.888 06:48:12 118.59 251.27
04:00:01 sell 1 usdjpy 118.936 08:15:30 118.6 283.29
08:00:04 sell 1 usdcad 1.24908 10:00:00 1.25175 -213.35

最後に慣れない米ドル/加ドルに手を出したら(私ではなくEAが勝手にエントリしたのです)いきなり逆行して痛い目にあいましたが、 魔の金曜日の東京時間にしては差し引き 321.21ドルのプラスとなったのでよしとしましょう。

○○カタさんふうに言うと「かくにん、よかった」でしょうか。

関連記事

###

アンディさんのリアルタイム雲

  上が一目均衡表で、雲は26本先行しています。 下は有名なトレーダーのアンディさんのリアルタイム雲で、先行していないのが特徴です。 >アンディの FX BLOG 移動平均線っぽい使い方をするならこれもありです。 レジスタンスやサポートとしての力もありそうですから、ストップの目安としても使えそうです。

リアルタイム雲の表示のしかた

Ichimoku.mq4 を kumo.mq4 として別名保存してから、Metaeditor で開き、 void OnInit(void) セクションの中の次の4行を書き換えるだけです。
  • SetIndexShift(2,InpKijun); ⇒ SetIndexShift(2,0);
  • SetIndexShift(5,InpKijun); ⇒ SetIndexShift(5,0);
  • SetIndexShift(3,InpKijun); ⇒ SetIndexShift(3,0);
  • SetIndexShift(6,InpKijun); ⇒ SetIndexShift(6,0);
  書き換えたら保存してください。

関連記事

【FX】アンディさんのリアルタイム雲 (3)   ###]]>

アンディさんのリアルタイム雲

 

上が一目均衡表で、雲は26本先行しています。

下は有名なトレーダーのアンディさんのリアルタイム雲で、先行していないのが特徴です。

>アンディの FX BLOG

移動平均線っぽい使い方をするならこれもありです。

レジスタンスやサポートとしての力もありそうですから、ストップの目安としても使えそうです。

リアルタイム雲の表示のしかた

Ichimoku.mq4 を kumo.mq4 として別名保存してから、Metaeditor で開き、

void OnInit(void) セクションの中の次の4行を書き換えるだけです。

  • SetIndexShift(2,InpKijun); ⇒ SetIndexShift(2,0);
  • SetIndexShift(5,InpKijun); ⇒ SetIndexShift(5,0);
  • SetIndexShift(3,InpKijun); ⇒ SetIndexShift(3,0);
  • SetIndexShift(6,InpKijun); ⇒ SetIndexShift(6,0);

 

書き換えたら保存してください。

関連記事

【FX】アンディさんのリアルタイム雲 (3)

 

###

FX 2015年2月第2週デモ口座運用状況

2/09 09:45:10 buy 1 usdjpy 118.982 2/09 10:02:18 118.9 -68.97
2/09 15:09:24 sell 1 eurjpy 133.771 2/09 15:56:10 133.961 -160.22
2/10 02:58:19 sell 1 usdjpy 118.448 2/10 07:31:42 118.522 -62.44
2/10 03:00:28 buy 1 audusd 0.78078 2/10 04:00:23 0.78165 87
2/10 04:00:23 buy 1 audusd 0.78181 2/10 05:38:05 0.78299 118
2/10 09:00:15 buy 1 usdjpy 118.571 2/10 15:48:52 119.394 689.26
2/10 15:30:15 buy 1 usdjpy 119.55 2/11 05:35:09 119.552 1.68
2/10 16:00:01 buy 1 eurjpy 134.98 2/10 16:02:13 135.043 52.74
2/10 17:06:35 buy 1 audjpy 92.717 2/11 11:17:18 92.81 77.7
2/11 03:30:25 buy 1 usdjpy 119.538 2/11 05:35:02 119.541 2.5
2/12 03:00:02 sell 1 audjpy 92.077 2/12 04:18:39 91.953 103.26
2/12 04:00:00 sell 1 usdjpy 120.014 2/12 04:17:54 120.083 -57.46
2/12 05:13:10 buy 1 usdjpy 120.278 2/12 05:28:28 120.278 0
2/12 07:00:30 buy 1 usdjpy 120.296 2/12 08:04:05 120.245 -42.42
2/12 07:44:18 buy 1 usdjpy 120.308 2/12 08:04:05 120.245 -52.39
小計 688.24

今週は VPS で運用している口座がときどき勝手に落ちていたのでデータがボロボロ。

VPS は使わずに裁量で運用している口座のほうを紹介します。

  1. EA でエントリして、ストップ、リミットを手動で設定
  2. 手動(一目均衡表で判断)でエントリして、ストップ、リミットを手動で設定

という2つの方法で行っています。

この口座は利益を得るためでなく、手法の研究目的で運用しています。

*

EA にエントリさせるのはラクチンでいいです。

放置しても勝手に決済してくれるのですが、仕事の合間にときどき見て、ストップをトレールしたりしています。

裁量をからめているわけですが、けっこう勉強になったり、新しいアイディアが浮かんだりするので、やめられません。

###

艸木虫魚 (岩波文庫) / 薄田 泣菫

艸木虫魚 (岩波文庫) 艸木虫魚 (岩波文庫)

薄田 泣菫

岩波書店 1998-09-16

売り上げランキング : 700463

 Amazonで詳しく見る

by G-Tools

★★★☆☆

高校の時の文学史の授業で名を知った、薄田 泣菫(すすきだ きゅうきん)のエッセイ集。

この前、ブックオフで見つけて買いました。108円。

『茶話』(「さわ」でなく「ちゃばなし」)というエッセイ集(大阪毎日新聞に連載)もありますが、その中からもいくつかこちらの本に収められています。

中国の故事とか日本の田舎の自然風景、京都の古本屋、小動物の寓話、植物の精緻な描写など、さまざまな題材をすっきりこまやかに料理しています。

オチが少ないのはしょうがないですが、題材が結構凝っていて初耳の話も多かったです。

こういうのを明治大正のインテリゲンチャは好んだんでしょうね。

*

あ、買わなくてもよかったようです。

こちらで全文が読めます。>艸木虫魚(青空文庫)

「茶話」も青空文庫にありますね。

天声人語なんか読むと気が狂いそうになりますので、こういう正統派のエッセイをお読みください。

###

2/11 京都水族館行ってきた

日本初の完全な人工海水利用型水族館である京都水族館に昨日カミサンと行ってきました。

人工海水は循環させて再利用しているんですね。

市立水族館ではなく、オリックスが経営しているという変わり種。

小さな建物なので、イルカプールや海獣(アシカ、アザラシ)プールは狭く、飼われている動物にとってはかなりストレスフルな感じですね。

ペンギンはちょうど散歩(特設専用コース)中でした。

とても飼育員になついています(インプリンティングのせいでしょうか)。かなり かまってもらっており、ペンギンは幸せそうでありました。

大水槽は高さ6mながら 500t と小ぶり。目の前をウツボが所在なさげに泳いでいき、珍しいものを見たなとトクをした気分。

川のジオラマにいたオオサンショウウオは見るたびに結構移動しており、意外に思いました。

クラゲも種類が多く、見応えありました。

あ、そうそうダイオウグソクムシが小さな水槽に二匹沈んでいました。メシ食っとるのかぁ。

がっかりしたこと

がっかりしたのは、3Dプロジェクションマッピングと言いながら、スクリーンに映写しているだけで、3D感もなく、プロジェクションマッピングでもないこと。

よかったこと

イルカショーを2回観て,なかなかがんばっている(イルカも人も)なあ、と感心したことでした。

イルカのワザは開店当時より進歩しているそうですから、次に来るときは楽しみです。

###

幕になるど

マクドナルドの大減益が話題になっていますが、日本人って優しいね、まだあんなものをわざわざ食べに行ってあげる人がいるとは。

私は昨年夏の期限切れ鶏肉問題で開いたアホ社長の開き直り会見で完全に見限りました。

こいつは日本人をなめている。

その後客足が減り、経営陣がどう責任をとるかと見ていたら、現場のスタッフを切るだの最悪のジタバタ。

その後トドメの異物混入騒ぎでの会見では、なんとこのアホ・カサノバ女社長はアメリカに逃亡。

代わりに出てきた日本人の重役が”タクシー会社のニセ重役”にも劣る無責任会見。取り巻きもアホばかりか。

タクシー会社のニセ重役とは事故のときに相手方に示談に行くときだけ”重役”になる人(普段はヒラの雑用係)のことね。

*

今月5日ようやくアホ社長が会見を開きました。

髪を短く切っていました。「ボウズちゃうんかい」とつっこみたくなりましたが。

「お客様に多大なご迷惑をかけた」と言っていたが、東京証券取引所でやったということはホンネは

「株主に多大なご迷惑をかけた」

ということが見え見え。

*

TVでよくやっている「ハンバーガーショップ選手権」でも必ず不参加のマクドナルド。

ある人が言うには、「うちは最高の味を提供することを目指していない」からだそうだ。

*

そういえばマクドナルドっていつのまにかジンジャーエールがなくなったねぇ。

藤田田さんの築いた日本マクドナルドもついに幕になるのかと思うと、ちょっとかわいそうな気がしますが、この社長ではショウガない。

###

HL Band(High Low Band) について

チャートでは HL Band というのをよく使います。

High Low Band の略で、ある期間の高値と低値とを抽出してバンド幅にするのです。

そのバンド幅を越えたら決済したりエントリしたり、というふうに活用します。

MetaTrader4 での実装方法では、

double HH2 = Low[iHighest(NULL, 0, MODE_CLOSE, N, 2)];

double LL2 = High[iLowest(NULL, 0, MODE_CLOSE, N, 2)];

というように記述します。

説明

double は実数としての宣言で、HH2、LL2 は変数名(任意)です。

Low[]、High[] というのは予約された配列で、それぞれ低値と高値を示します。

iHighest()、iLowest() というのは関数で、それぞれ決められた期間中の最高値と最低値の位置を返します。

関数の引数のうち、MODE_CLOSE は終値を示す予約定数です。

MODE_OPEN、MODE_HIGH、MODE_LOW でそれぞれ始値、高値、低値を示します。

ちなみに他の関数では PRICE_CLOSE と、アタマに PRICE がくるのに、こいつは MODE なのでよく間違います。

つまり、iHighest(NULL, 0, MODE_CLOSE, N, 2) は、現在の2本前から N 本分の終値の中から最も高いものの位置を示します。

その位置を Low[] に代入して実際の低値を出しているわけです。

たとえばこの値を 1本前の終値と比べるには、

if(Close[1] < HH2)・・・

などとすればいいわけです。

HL Band は人さまざま

上に述べたものがすべてではなく、

double HH2 = Low[iHighest(NULL, 0, MODE_CLOSE, N, 2)];

の代わりに、

  1. double HH2 = Close[iHighest(NULL, 0, MODE_CLOSE, N, 2)];
  2. double HH2 = High[iHighest(NULL, 0, MODE_CLOSE, N, 2)];
  3. double HH2 = Low[iHighest(NULL, 0, MODE_LOW, N, 2)];
  4. double HH2 = Low[iHighest(NULL, 0, MODE_HIGH, N, 2)];
  5. double HH2 = High[iHighest(NULL, 0, MODE_LOW, N, 2)];
  6. double HH2 = High[iHighest(NULL, 0, MODE_HIGH, N, 2)];

などもアリです。

それぞれ意味するものが違うわけですが、どういう意味になるか下のチャートにあてはめて考えてみてください。

###

Tannoy Mercury m2 Cherry 対 KEF Coda9

Tannoy Mercury m2 Cherry
203×380×270mm

KEF Coda9
200 x 835 x295mm

スピーカーセレクターに、タンノイ Mercury m2 Cherry と KEF Coda9 を繋いで切り替えてみました。

M2 は 2ウェイ、Coda9 は 3ウェイ(2.5ウェイ)なので、やはり低域のスケール感が全然違います。

M2 は小さい割に低音は頑張っているのですが、Coda9 と比べると全然足りません。

高域はM2 のほうがクリアです。どちらにもキレはあまり感じませんが、M2 の方が全体にスッキリしています。

Coda9 は雰囲気をよく伝えて、音場も左右に広がりますが、M2 では明らかに音数が減り、音場の広がりもありません。

M2 だけを聴いていると”豊かな低音”と思えないこともなかったのですが、Coda9 との差は歴然。

オーディオファンでない人もすぐにわかったくらいです。

さすが、シャドーウーファーを有するだけはあります。

まあ、小さなブックシェルフスピーカーと大きなタワースピーカーを比べているのだから こうなって当たり前なんですが。

関連記事

###

オーディオ切替器 AVS-40

EXCEL SOUND 製。

1台のアンプに対して4組のスピーカーを切り替えられる切替器(セレクター)です。

逆につなぐと、1組のスピーカーに対して4台のアンプの切り替えができます。

比較試聴には必須のアイテムです。

2系統だと少なすぎますが、店で使うような 10-20セットの切り替えは不要(そうでもなかったりしますが・・・)なので、ちょうどよいと思っています。

しかし、もう売っていないと思います。

同等のものではいろいろありますが、やはりオーディオメーカーのものとしては下のものがよさそうです。

買い替えまではしませんが。

ラックスマン スピーカーセレクター (1台 シルバーグレー W:240xD:95xH:65mm 750g) AS-5III ラックスマン スピーカーセレクター (1台 シルバーグレー W:240xD:95xH:65mm 750g) AS-5III
ラックスマン
売り上げランキング : 22037
Amazonで詳しく見る
by G-Tools

###

平均足+バンドウォーク EA(1)

昔からよく”聖杯”と言われている、バンドウォークに飛び乗るトレンドシステムの研究です。

ADX30以上をフィルタにしている本もありますが、とりあえず簡単に始めてみます。

買いエントリ(下のすべての条件を満たす)

  1. EMA5:上向き
  2. 平均足:最低3本の陽線が連続し、その終値がボリンジャーの1σを上回る

売りエントリ(下のすべての条件を満たす)

  1. EMA5:下向き
  2. 平均足:最低3本の陰線が連続し、その終値がボリンジャーの -1σを下回る

決済(下のいずれかの条件を満たす)

  1. HLバンドトレーリングストップ
  2. 逆の平均足が2本連続

結果

うまく売買が行われているようです。

平均足の終値ですのでボリンジャーの2σを越えることはまれで、特にこの期間では全くないようです(高値にしますと 2σをよく逸脱すると思います)。

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

トレンドのない期間はさっぱりですし、あまり成績はよくありませんが、これから改良に努めます。

プログラムソース

//
// yasciiSayHi01
// 

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

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

extern int Fast_period = 14 ;
extern int BB_Period=20;
extern int MA_Period = 5 ;
double Deviation = 1.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 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 bbp1 = iBands( NULL, 0, BB_Period, Deviation, 0, PRICE_CLOSE, 1, 1) ;
     double bbm1 = iBands( NULL, 0, BB_Period, Deviation, 0, PRICE_CLOSE, 2, 1) ;

     double FastHH2 = Low[iHighest(NULL, 0, MODE_CLOSE, Fast_period, 2)];
     double FastLL2 = High[iLowest(NULL, 0, MODE_CLOSE, Fast_period, 2)];

     double ema5 = iMA(NULL, 0, MA_Period, 0, MODE_EMA, PRICE_CLOSE, 1) - iMA(NULL, 0, MA_Period, 0, MODE_EMA, PRICE_CLOSE, 2);

   //買いポジションのエグジット
    OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);
    OOPL = OrderOpenPrice();
    if( 
            (Close[1] < FastHH2 || (HA_open1 > HA_close1 && HA_open2 > HA_close2)) //bbw1 < bbw2)
            && ( 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(  
          (Close[1] > FastLL2 || (HA_open1 < HA_close1 && HA_open2 < HA_close2)) //bbw1 < bbw2)
          && ( Ticket_S != 0 && Ticket_S != -1 ))
    {   
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue);
      if( Exit_S ==1 ) {Ticket_S = 0;}
    } 

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

以前ここで「超シンプルな自動売買プログラム(2) ボリ平ドラゴン式」でとりあげた ボリ平ドラゴン式 ですが、少し改良してみました。

といっても、固定ロスカットや固定プロフィット、HLバンドトレーリングストップなどを加えただけですが。

若干よくなったのですが、問題が明確に見えてきました。

*

この方法は ZAi FX! の記事「ネットでウワサの「ボリ平ドラゴン式」。」でも紹介されていますが、一目均衡表の遅行線をドラゴンと呼び、そのドラゴンが上昇してボリンジャーバンドの3σを上抜けば買い、下行してボリンジャーバンドの-3σを下抜けば買い、とするものです。

一目均衡表では補助的に使われる遅行線は最もタイミング的には遅いシグナルを出します。

しかもプラスマイナス3σを超えるというハードな条件を設定しているために回数も減少します。

タイミングが遅れる、ハードな条件ということでダマシを減らしているつもりでしょうが、その分エントリの遅れ、利益確定の遅れが生じ、利益をとりこぼす懸念があります。

*

EA にしてやってみますと、ボリ平さんはスキャルピングでお使いということですが、昨年のデータでは日中足ではほとんど利益が出ません。

いろいろ改良したのですが、ドル円の日足でしかまともな利益になりませんでした。

ドル円日足 2014/1/1 – 2015/1/1

チャートを見ると、売買での利益はほとんどが8月から年末までの上昇(円安)相場で得たものです。

この時期はほぼ一方調子の上昇過程なので、ドラゴン(遅行線)がボリンジャーバンドの +3σを上抜いている期間が多いわけです。だから利益になっているということ。

言い換えると、こういう展開が少なければ儲からないわけですし、こういう相場なら他の EA の方が効率的に儲かるものが多いです。

短い日中足で使うと売買回数はうんと多くなりますが、総損益はマイナスになってしまいます。

その理由はダマシが多くて勝率が低下することと、利益確定が早すぎて勝ったときの充分な利益が得られていないことによるのではないかという印象です。

 

ボリ平ドラゴン式 にはこれとは違う逆張り方式もありますが、タイミングの遅れがさらに響きそうで、得られる利益も少なく、勝率も悪そうなので検証していません。

関連記事

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

 

プログラムソース

//
// yasciiSimple08
// ボリ平ドラゴン式(2)
//

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

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

extern int Fast_period =10;
int deviation = 3;
extern int MA_period = 20;

extern double ILC = 20.0 ;
extern double TP = 240.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 bollp3 = iBands( NULL, 0, MA_period, deviation, 0, PRICE_CLOSE, 1, 26);
   double bollm3 = iBands( NULL, 0, MA_period, deviation, 0, PRICE_CLOSE, 2, 26);

   double FastHH2 = Low[iHighest(NULL, 0, MODE_CLOSE, Fast_period, 2)];
   double FastLL2 = High[iLowest(NULL, 0, MODE_CLOSE, Fast_period, 2)];

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

   //買いポジションのエグジット
   OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);  
   OOPL = OrderOpenPrice();   
   if( (Close[1] < OOPL - lc*Point || Close[1] > OOPL + tp*Point || Close[1] < FastHH2 || Close[1] < Close[2])
      && (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[1] > OOPS + lc*Point || Close[1] < OOPS - tp*Point || Close[1]  Close[2])
       && (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] > bollp3
       && ( 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] < bollm3
       && ( 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);
  }

###

超シンプルな自動売買プログラム(8) 3点チャージ変法

3点チャージ法という明地文男さんの開発した株式投資法があります。

昔ちょっと利用したことがあります。

大きく下げたときの買い(グランビルの”買い4”ですかね)を行う逆張り法です。

買いの条件は次の通りです。

・ 26日移動平均線からの乖離率 ≦ -15%

・ 14日 RSI ≦ 25

・ 25日ボリュームレシオ ≦ 70

売りの条件は

・ 26日移動平均線からの乖離率 ≧ -15%

・ 14日 RSI ≧ 70

・ 25日ボリュームレシオ ≧ 250

とします。

これを FX に応用しようと思ったのですが、FX では出来高がないのでボリュームレシオが計算できません。

ティックで代用するのも正確でありません。

どうせなので、この前作った Chande’s Momentum Oscillator シャンデ・モメンタム・オシレーター (CMO) を使わせていただくことに。

CMO が 30以下、70以上というふうに代用することにします(適正値はバックテストでも出しましたが大きく変わらないのでこの値を採用)。

*

もう一つ問題が。

乖離率が 15% を超えるなんて事態は FX では起こりません。国家倒産とか起これば別ですが。

そこで乖離率は可変にしてバックテストで適正値を決めることにしました。

*

さらにもう一つ問題が。

決済条件は任意ということで、決められておりません。

しょうがないので固定ロスカット、固定プロフィット、HLバンドトレーリングストップでやってみることにします。

固定ロスカット、固定プロフィットは影響がないようですが、念のため残しました。

乖離率が 1/3 になるくらいまでとかのほうがいいかもしれないと思ったので、それも加えました。

*

これらを組み込んで、EA を自作してみました。

次のようなところで売買が発生します。うまくいっているようです。

結果 ドル円 30分足 2014/1/1 – 2015/1/1

プロフィットファクターや勝率はそこそこいいです。

他の通貨ペアもやってみましたが、どうも金額的にはたいしたことになりません。

逆張りなのでどかんとは稼げないのはわかっていますが・・・

最大ドローダウンは低いのですが、取引数が少ないことが問題でしょうね。

2014/4/9 から 2014/10/14 まで全く売買がないです。このような”逆張り好機”がそんなに訪れないのが原因でしょう。

株なら銘柄数がFXよりはるかに多いので取引回数が多くなるでしょうから、株では非常に有効なのでしょうが。

プログラムソース

//
// yasciiSimple07
// 3点チャージ法
// cmo_s.mq4 が必要

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

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

extern int MA_period = 26;
extern int RSI_period = 14;
extern int Fast_period =10;

extern bool LastBarOnly = false; 
extern int  CMO_Range   = 25; 
extern int  Sig_Period =9;

extern double kai1level = 1.9 ;
extern double kai2level = -0.6 ;

extern double ILC = 20.0 ;
extern double TP = 40.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 sma26 = iMA( NULL, 0, MA_period, 0, 0, PRICE_CLOSE, 1) ;
   double kairi1 = 100.0 * (Close[1] - sma26) / sma26 ;
   double rsi14 = iRSI( NULL, 0, RSI_period, PRICE_CLOSE, 1) ;
   double cmo25 = iCustom( NULL, 0, "cmo_s" , LastBarOnly , CMO_Range , Sig_Period , 0, 1 ) ;

   double FastHH2 = Low[iHighest(NULL, 0, MODE_CLOSE, Fast_period, 2)];
   double FastLL2 = High[iLowest(NULL, 0, MODE_CLOSE, Fast_period, 2)];

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

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

   //買いエントリー
   if( kairi1 <= kai2level && rsi14 <= 25.0 && cmo25 <= 30.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,Blue);
    }

   //売りエントリー
   if( kairi1 >= kai1level && rsi14 >= 70.0 && cmo25 >= 70.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,Red);     
    } 

   return(0);
  }

###

ザ・ローンチ (ザ・ローンチ 世界一効率的に億万長者になる方法) / ジェフ・ウォーカー

ザ・ローンチ (ザ・ローンチ 世界一効率的に億万長者になる方法) ザ・ローンチ (ザ・ローンチ 世界一効率的に億万長者になる方法)

ジェフ・ウォーカー

ダイレクト出版 2014

売り上げランキング : 24055

Amazonで詳しく見る

by G-Tools

★★★★☆

本屋では買えないダイレクト出版の本(こちらで買えるようです> ザ・ローンチ)

プロダクト・ローンチ・フォーミュラという数年前にはやったプロモーション技法を開発したご本尊の ジェフ・ウォーカー 直筆の本。

プロダクト・ローンチは私はヤニク・シルバーのオンライン講座で知ったのですが、それからインターネットでは結構はやっていますね。

本書は、通常のローンチ(プリ・プリローンチ⇒プリローンチ⇒ローンチ)のほかに、なにもないところから始められるシード・ローンチ、リストがあれば始められるインターナル・ローンチ、リストがなくてもアイディアがあればどかんと儲かるJVローンチ、そして究極のビジネスローンチなどが載っており、なかなか盛りだくさん。

ただ、戦略的(抽象的)なことが結構多く、戦術的なことは不足しているので、他のマーケティング手法と組み合わせなくてはいけないところも多々あります。

そのへんのアレンジが現在多くの変法を生んでいる原因でしょうね。

###

眠る鬼 ― 鬼悠市 風信帖 / 高橋 義夫

眠る鬼―鬼悠市 風信帖 (文春文庫) 眠る鬼―鬼悠市 風信帖 (文春文庫)

高橋 義夫

文藝春秋 2003-05

売り上げランキング : 902051

Amazonで詳しく見る

by G-Tools

★★★★☆

高橋義夫さんの「鬼悠市 風信帖」シリーズの第一巻。

すでに三冊ほど紹介しており、順番が逆になってしまいました。

東北の松ヶ岡藩で、歴代藩主の菩提寺にある竹林に隠棲する主人公 鬼悠市は浮き組の足軽目付。

扶持が少ないので竹篭細工を藩に収める半分職人のようなことをしているが、あまりに細工が見事なためその籠は他藩に高価な値で売られている。

そのため藩内より江戸での名声が高いという変わった人物。

裏では奥山流の遣い手で、直接の上司である奏者番加納正右衛門から密命を下されると、暗殺、諜報、上意討ちなどの仕事も行うという、なにやら東北の必殺仕事人といった境遇。

周囲を取り巻く人物も個性豊かで楽しく読めまする。

おっと、第2巻の『かげろう飛脚―鬼悠市 風信帖』をまだ買っていなかった。

加納は獣の奏者ではなく、鬼の奏者なんだな。

関連記事

###

FX 「シグナル」を先取りして勝つ! -稼ぐ人はなぜ相場の動きを読めるのか? / 松田 哲

FX 「シグナル」を先取りして勝つ! -稼ぐ人はなぜ相場の動きを読めるのか?- FX 「シグナル」を先取りして勝つ! -稼ぐ人はなぜ相場の動きを読めるのか?-

松田 哲

技術評論社 2009-01-09

売り上げランキング : 94890

Amazonで詳しく見る

by G-Tools

★★☆☆☆

技術評論社の本はつい点が甘くなってしまうのですが、この本はちと中身が薄いような。

前半はごく一般的な説明で、特殊な”FXシグナル”とやらが出てくるのかと思ったらスカっとかわされた格好に。

後半は著者オリジナルの「東京ニューヨーク・ローソク足チャート」の解説ですが、長々と解説している割には心に響くものがありません。

ほんとうに有効なのかどうなのかもわからない。

ロンドン時間を無視するという着想はなかなかオリジナリティがありそうですが、東京時間を元に値幅を決めてニューヨーク時間でレンジブレイクに付いていくというのは比較的ポピュラーな方法ですしね。

ということで、前半だけ立ち読みしても結構です。

後半を読むよりは、ロブ・ブッカーさんのNYボックス(NY時間前のレンジを基準にNY時間にレンジブレイクを仕掛ける)を身につける方がいいと思いますね。

###

超シンプルな自動売買プログラム(7) はらみ線(はらみ足)

超シンプルな自動売買プログラムとして、日本古来のローソク足での定番「はらみ足」を利用したものをご紹介します。

孕石(はらみいし)は女性の間では有名ですが、はらみ足(はらみ線)とは1本前のローソク足の実体の中に次の足の実体が含まれるもの。

ラリー・ウィリアムズも信奉しているくらいポピュラーなものです。

はらみ足のうち、「陽の陰はらみ」と「陰の陽はらみ」を売買シグナルにした EA を作ってみました。

そのままだと成績がいまいちなので、「陰の陽はらみ」では「その前が陰線」、「陽の陰はらみ」には「その前が陽線」という前提を加えたところ、いい結果に。

決済条件は損切り 20pips固定、利益確定 40pips固定のみとしました。

ドル円 5分足(2014/1/1 – 2015/1/1)

 

え、「たいしたことないじゃないか」って?

いえ、私が気に入っているのは、

  1. 5分足という短い時間足であること
  2. グラフの前半のドル円相場がトレンドでない時期にもそこそこ稼げている
  3. むしろ後半の強い上昇トレンドでは成績がふるわない

という、これまで私の作ってきた EA とは真逆の性格を持っているからです。

もうちょっと研究してみます。

ちなみに、損切り 50pips、利益確定 420pips とすると、下のように売買回数がぐんと少なくなりますが、最大ドローダウンをそのままに利益を伸ばせます。

ただポジションの保有時間が長くなります(最大7ヶ月)。

プログラムソース

//
// yasciiSimple06
// はらみ足
//

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

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

extern double ILC = 20.0 ;
extern double TP = 40.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 lc = ILC;
   if(( Digits ==3 ) ||(Digits ==5)) lc = lc*10.0 ;
   double tp = TP;
   if(( Digits ==3 ) ||(Digits ==5)) tp = tp*10.0 ;

   //買いポジションのエグジット
   OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);  
   OOPL = OrderOpenPrice();   
   if( (Close[1] < OOPL - lc*Point || Close[1] > OOPL + tp*Point)
      && (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[1] > OOPS + lc*Point || Close[1] < OOPS - tp*Point)
       && (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] && Close[2] < Open[2] && Close[3] < Open[3] && Close[3] > Close[2]
       &&  Close[2] < Open[1] && Open[2] > Close[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] && Close[2] > Open[2] && Close[3] > Open[3] && Close[3] < Close[2]
       &&  Close[2] > Open[1] && Open[2] < Close[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);
  }

###

2015年2月アメリカ雇用統計

昨日のドル円相場です。

すごいでしょ。昇り龍みたいですね。

第一金曜日の夜は毎月恒例のアメリカ雇用統計の発表です。

NHKによると、

6日のニューヨーク外国為替市場は、この日発表された先月のアメリカの雇用統計で市場が注目していた農業分野以外の就業者の数が市場の予想を上回ったことから、雇用環境は順調に改善しているという受け止めが広がりました。
このためドルを買って円を売る動きが加速し、円相場は一時1ドル=119円23銭をつけ、統計の発表前と比べておよそ2円値下がりしました。

ということで、私はウォッチしておりませんでしたが、いつも以上の過熱ぶり。

値幅もすごいが、いつも見られる「揺り戻し」がほとんどなかったですね。

値幅がすごいのはそれまで 2週間くらいがほぼフラットな状態で、売り買い均衡しており、エネルギーも邪念もたまりにたまっていたからでしょう。

サブウィンドゥは自作の BBW ratio ですが、シグナルを下抜けた時点で利益確定というセオリーがここでも有効のようです。

*

自作の自動売買ソフト(EA) たちがどんな反応を見せたかというと、なんと VPS が止まっていたのです。

今借りている VPS はこれまでに 10回近く MetaTrader4 が勝手に終了されていることがあり、サーバーに接続できないことさえありました。

どうも信用ならないので新しい業者を物色しています。

ヤレヤレダゼェ。

###

Chande’s Momentum Oscillator シャンデ・モメンタム・オシレーター

シャンデモメンタムオシレーター(CMO と略される)という指標が本に載っていました。

アメリカの Tushar S. Chande が発表したようで、オシレーター系指標の一つです。

CMOの計算式は次のようになります。

CMO(N) = (CMO1 – CMO2) ÷ (CMO1 + CMO2) × 50 + 50

N = 指標の設定期間

CMO1 = N日間で前日比プラスとした日の値幅合計

CMO2 = N日間で前日比マイナスとした日の値幅合計

RSI(相対力指数)と似ています。

RSIと異なり、値幅を評価しているのでトレンドの強弱を知ることができるのが強みです。

ネットに転がっている CMO はシグナルのない1本線で、スケールも -100~100 とやや異なるので、改造してみました。

一番下のサブウィンドウが CMO です。一つ上は BBW ratio ですね。

CMO も 70 以上で買われすぎ、30以下で売られすぎ。

シグナルとクロスしたゴールデンクロス、デッドクロスは売買シグナルに使えます。

  • 70 以上でデッドクロスは売り
  • 30以下でゴールデンクロスは買い

 

です。

プログラムソース

//+------------------------------------------------------------------+
//|                          Chande's Momentum Oscillator  CMO_S.mq4 |
//+------------------------------------------------------------------+

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Orange
#property indicator_color2 Violet
#property indicator_minimum 0
#property indicator_maximum 100
#property indicator_level1   50

//---- input parameters
extern bool LastBarOnly = false;
extern int  CMO_Range   = 20;
extern int  Sig_Period =9;
//---- buffers
double CMO_Buffer[];
double CMO_signal[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
 {
//---- indicators
  IndicatorBuffers(2);
  IndicatorShortName("Chande`s Momentum Oscillator (" + CMO_Range + ")");
  SetLevelStyle(STYLE_DASHDOT, 1, DodgerBlue);
  SetIndexStyle(0, DRAW_LINE);
  SetIndexLabel(0, "CMO");
  SetIndexBuffer(0, CMO_Buffer);
  SetIndexDrawBegin(0, CMO_Range);
  SetIndexBuffer(1, CMO_signal);
  SetIndexDrawBegin(1, CMO_Range);
  SetIndexStyle(1, DRAW_LINE);

 //----
  return(0);
 }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
 {
 //----
  return(0);
 }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars = IndicatorCounted();
   int i, j, Limit, cnt_bars;
   double dif_close, cmo_up, cmo_dw;
   static bool run_once;
   if(counted_bars < 0)
     {
       return(-1);
     }
   Limit = Bars - counted_bars;
// run once on start
   if(run_once == false)
       cnt_bars = Limit - CMO_Range;
   else
      if(LastBarOnly == false)
          cnt_bars = Limit;
      else
          cnt_bars = 0;
//----
   for(i = cnt_bars; i >= 0; i--)
     {
       cmo_up = 0.0;
       cmo_dw = 0.0;
       //----
       for(j = i + CMO_Range - 1; j >= i; j--)
         {
           dif_close = Close[j] - Close[j+1];
           if(dif_close > 0)
               cmo_up += dif_close;
           else
               if(dif_close < 0)
                   cmo_dw -= dif_close;
         }
       CMO_Buffer[i] = 50.0 +50.0 * (cmo_up - cmo_dw) / (cmo_up + cmo_dw);
     }
   for (i=cnt_bars - Sig_Period; i>=0; i--)
      {
         CMO_signal[i] = iMAOnArray(CMO_Buffer,0,Sig_Period,0,MODE_EMA,i);

      }
//----
   if(run_once == false)
       run_once = true;
//----
   return(0);
  }

###

Seagate HDD また一位

オンラインストレージサービスBackblazeが実際に使用した200種類(合計約4万台)のハードディスク運用データをいつも公表してくれています。

2015年2月最新版ではまたまた Seagate が故障率一位に。

以前より故障率が上がっているような・・・

2014年9月

 

Seagate のHDDは一般消費者向けの2倍以上の値段のプロ版も故障率はほとんど変わらないそうです(むしろ一般消費者向けの方がわずかに故障しにくかったとか)。

*

私も 15年くらいは Seagate は指名買いしておりませんが、DELL のパソコンを買うと中身が Seagate か WD なので、うちにはたくさんあります。

Hitachi (HGST) は少し高いのですが、結局これを買うのが一番安くあがりますね。

###

シャフトレンドサイクルをエントリで使う

シャフトレンドサイクルをフィルタで使うととてもいい感触があるのでいろいろ改造中です。

これをエントリシグナルで使うのも捨てがたいのです。

いろいろつけますと、取引回数がどんどん減っていきますが、プロフィットファクターや勝率はなかなかいいところまでいきます。

たとえば下はシャフでエントリしているのですが、一目均衡表のルールをフィルタに使っています。

「一目均衡表のルールでエントリしてシャフでフィルタリングする」よりはいいかもしれません。

プログラムソース

//
// yasciiSB01c.mq4
// シャフでエントリ 一目をフィルタ的に適用
//

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

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

extern int Fast_period = 12 ;
extern int Slow_period = 38 ;

//---- input parameters
extern int MA_Short= 5;
extern int MA_Long = 10;
extern int MA_Cycle=5;
extern int SigPeriod=3;

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

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()
  {

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

   double STC1 = iCustom(NULL , 0, "Downloads\\STC_pure_S" ,  MA_Short , MA_Long , MA_Cycle , 0, SigPeriod , 0, 1) ;
   double STCSIG1 = iCustom(NULL, 0, "Downloads\\STC_pure_S" , MA_Short , MA_Long , MA_Cycle , 0, SigPeriod , 1 , 1) ;
   double STC2 = iCustom(NULL, 0, "Downloads\\STC_pure_S" , MA_Short , MA_Long , MA_Cycle , 0, SigPeriod , 0 , 2) ;
   double STCSIG2 = iCustom(NULL, 0, "Downloads\\STC_pure_S" , MA_Short , MA_Long , MA_Cycle , 0, SigPeriod , 1 , 2) ;

   if (STC1<1.0) STC1 = 0.0 ;
   if (STC2<1.0) STC2 = 0.0 ;
   if (STCSIG1<1.0) STCSIG1 = 0.0 ;
   if (STCSIG2<1.0) STCSIG2 = 0.0 ;
   if (STC1>99.0) STC1 = 100.0 ;
   if (STC2>99.0) STC2 = 100.0 ;
   if (STCSIG1>99.0) STCSIG1 = 100.0 ;
   if (STCSIG2>99.0) STCSIG2 = 100.0 ;          

   double FastHH2 = Close[iHighest(NULL, 0, MODE_CLOSE, Fast_period, 2)];
   double FastLL2 = Close[iLowest(NULL, 0, MODE_CLOSE, Fast_period, 2)];
   double cla1 = iIchimoku( NULL, 0, Tenkan_sen, Kijun_sen, Senkou_span_b, 3, Kijun_sen);
   double clb1 = iIchimoku( NULL, 0, Tenkan_sen, Kijun_sen, Senkou_span_b, 4, Kijun_sen);
   double ten1 = iIchimoku( NULL, 0, Tenkan_sen, Kijun_sen, Senkou_span_b, 1, 1);
   double kij1 = iIchimoku( NULL, 0, Tenkan_sen, Kijun_sen, Senkou_span_b, 2, 1);

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

   //買いポジションのエグジット
   OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);
   OOPL = OrderOpenPrice(); 
   if( (( (STC1 < 99.0 && STC1 < STC2 && STCSIG1 > STCSIG2)
       ||(Close[1] < FastLL2)) 
       && ( 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(   ( (STC1 > 0.0 && STC1 > STC2 && STCSIG1 <STCSIG2) 
       || (Close[1] > FastHH2)   )
       && ( Ticket_S != 0 && Ticket_S != -1 ))
    {   
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue);
      if( Exit_S ==1 ) {Ticket_S = 0;}
    } 

   //買いエントリー
   if(    STC1 > 0.0 && STC1 > STC2 && STCSIG1 < STCSIG2 
       && (Close[1]> cla1 && Close[1]>clb1 && ten1 > kij1)
       && ( 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(    STC1 < 99.0 && STC1 < STC2 && STCSIG1 > STCSIG2
       && (Close[1] < cla1 && Close[1] < clb1 && ten1 < kij1)
       && ( 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);
  }

###