(EAコード無料公開)ニャン吉Repeatの補助EA

前回の記事の最後の方で「あとニャン吉Repeatでは各通貨ペア1チャートを除いてトレール処理命令文を削除しましたが、更に軽量化を狙って売り指値のないチャートでは売り処理命令文も削りました」と記載しましたが、そのコードが載っていなかったので貼ります。
「ニャン吉Repeat」ではトレール決済を外していますが、売値買値両方で指値が可能です。
「ニャン吉Repeat」では更に売値の命令文と設定欄を消してあります。買いの指値だけが可能です。
但しこれらEAもあくまでニャン吉が自分用として使う前提で制作しています。
ご利用は自己責任のうえLive口座での本稼働は避けるようにお願いします

これらの補助EAは5月27日公開の「ニャン吉Repeat」がないと決済をしないまま放置してしまうので意味がありません。
必ず最初に刺さる指値の設定には「ニャン吉Repeat」を用い、他チャートへの設定にこれら「ニャン吉Repeat2」と「ニャン吉Repeat3」を適宜用いてください。
最初に刺さる指値に「ニャン吉Repeat」を用いていないと、ニャン吉Repeatが刺さるまでの間トレール処理がされませんのでご注意ください。
全ての同一通貨ペアチャートに「ニャン吉Repeat」を使うと命令のバッティングが起こりますし、売指値を入れないつもりで設定欄に「0」と記載してしまうと逆に制限なく常に売指値を入れるようになってしまいます。
不具合回避策として他チャートには必ず該当命令文が削除された補助EAを適用してください。

//+------------------------------------------------------------------+
//|                                                     ニャン吉Repeat2 |
//|                      商用利用及び再配布を禁じます,c2021.5.27,ニャン吉ちゃんねる|
//|                                          https://ニャン吉ちゃんねる.com |
//|                                        (楽天MT4を前提とした設定内容です) |
//+------------------------------------------------------------------+
#property copyright   "商用利用及び再配布を禁じます,c2021.5.27,ニャン吉ちゃんねる"
#property link        "https://ニャン吉ちゃんねる.com"
#property description "(楽天MT4を前提とした設定内容です)"
#property strict

input int    Magic =11;//チャート毎に別ナンバー割り振る(0は避ける)
input double Lot =0.01;//ロット(ロット数よりも通貨ペアを追加してポジション数増を推奨)
input double Kagen =120;//売り指値(指値を置きたくない場合には過去値幅外の数値を入力)
input double Jougen =105;//買い指値
input int MaxSpread  =30;//スプレッドによるエントリー制限
input int MaxSlippage =10;//スリッページによるエントリー制限
double   TakeProfit =0;

   //エントリーカウント
   int CurrentOrder()
    {
   int cnt=0; 
   for(int i=0;i<OrdersTotal();i++) {   
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;     
      if(OrderType()==OP_BUY) {
         cnt++;
      }
      if(OrderType()==OP_SELL){
         cnt++;
      }   
    }
    return(cnt);
    }   

void OnTick(void)
  {
   int    ticket,total;

   if(Bars<100)
     {
      Print("bars less than 100");
      return;
     }

   total=OrdersTotal();   

   if(CurrentOrder()<1)
     {   
     
      if(AccountFreeMargin()<(1000*Lot))
        {
         Print("We have no money. Free Margin = ",AccountFreeMargin());
         return;
        }


    // 買エントリー処理
    if(Ask<Jougen && MarketInfo(Symbol(),MODE_SPREAD)<MaxSpread )
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,MaxSlippage,0,0,NULL,Magic,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("BUY order opened : ",OrderOpenPrice());
           }
         else
            Print("Error opening BUY order : ",GetLastError());
         return;
        }

    // 売エントリー処理
    if(Bid>Kagen && MarketInfo(Symbol(),MODE_SPREAD)<MaxSpread )
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,MaxSlippage,0,0,NULL,Magic,0,Red);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("SELL order opened : ",OrderOpenPrice());
           }
         else
            Print("Error opening SELL order : ",GetLastError());
        }
        
      return;
     }

  }
//+------------------------------------------------------------------+
//|                                                     ニャン吉Repeat3 |
//|                      商用利用及び再配布を禁じます,c2021.5.27,ニャン吉ちゃんねる|
//|                                          https://ニャン吉ちゃんねる.com |
//|                                        (楽天MT4を前提とした設定内容です) |
//+------------------------------------------------------------------+
#property copyright   "商用利用及び再配布を禁じます,c2021.5.27,ニャン吉ちゃんねる"
#property link        "https://ニャン吉ちゃんねる.com"
#property description "(楽天MT4を前提とした設定内容です)"
#property strict

input int    Magic =11;//チャート毎に別ナンバー割り振る(0は避ける)
input double Lot =0.01;//ロット(ロット数よりも通貨ペアを追加してポジション数増を推奨)
input double Jougen =105;//買い指値
input int MaxSpread  =30;//スプレッドによるエントリー制限
input int MaxSlippage =10;//スリッページによるエントリー制限
double   TakeProfit =0;

   //エントリーカウント
   int CurrentOrder()
    {
   int cnt=0; 
   for(int i=0;i<OrdersTotal();i++) {   
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;     
      if(OrderType()==OP_BUY) {
         cnt++;
      }
      if(OrderType()==OP_SELL){
         cnt++;
      }   
    }
    return(cnt);
    }   

void OnTick(void)
  {
   int    ticket,total;

   if(Bars<100)
     {
      Print("bars less than 100");
      return;
     }

   total=OrdersTotal();   

   if(CurrentOrder()<1)
     {   
     
      if(AccountFreeMargin()<(1000*Lot))
        {
         Print("We have no money. Free Margin = ",AccountFreeMargin());
         return;
        }


    // 買エントリー処理
    if(Ask<Jougen && MarketInfo(Symbol(),MODE_SPREAD)<MaxSpread )
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,MaxSlippage,0,0,NULL,Magic,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("BUY order opened : ",OrderOpenPrice());
           }
         else
            Print("Error opening BUY order : ",GetLastError());
         return;
        }
        
      return;
     }

  }

FXの自動売買を始めてみました(設定更新)

自動売買と言っても自作のMT4用EAのことです。
一応「ニャン吉EA」と「ニャン吉Repeat」の2つを作ったので、先程設定を終わらせてMT4のLive口座で稼働開始しました。結局2つのEAは別々の口座での稼働しています。
自動売買とは言っても完全自動で済ませるつもりではなくて、マイナススワップ対応で裁量指値を入れたり、ニャン吉EA側ではUSDJPYはEAに任せていないのでこれまで通り裁量取引をします。

これまで通り勝率100%を維持することを目指しています。
但し、本気で勝率100%を狙うならマイナススワップ側へのエントリーはしない設定にすべきだったのかもしれません。
この先の修正ではマイナススワップ側への絞りを更に厳しく判断することになると思います。

言い忘れるところでしたが、これら2つのEAはあくまでニャン吉が自分用として使う前提で制作しています。
ご利用は自己責任のうえLive口座での本稼働は避けるようにお願いします
使っている本人ですら不具合を探るための実弾フォワードテストの感覚です。
不具合探しは殆ど終わってはいるものの責任なんて持てません^^;

ニャン吉EAでは売値下限と買値上限で悩みましたが、一旦安全性と頻出価格帯を考慮して設定してみたつもりです。
上位通貨ペア以外はロスカットラインから1000~2000pips以内で売り買い開始なので、一見取り扱い本数は多く見えますが余裕があります。
OandaMT4では更に裁量指値を2~3置くつもりでいます。
本来の想定設定や注意点については過去の記事をご覧ください。このEAは設定を間違えるとひたすら負ける可能性もあるので、慎重に設定を行う必要があります。
とりあえず以下の通りに上限下限を設定しましたが、これからも様子をみながら適当に変更を加えていくつもりです:
CADJPY : 116 / 88 , USDCAD : 1.45 / 1.00
AUDJPY : 95 / 75 , AUDUSD : 1.00 / 0.60 , AUDNZD : 1.30 / 1.06
EURJPY : 135 / 110 , EURUSD : 1.25 / 1.06 , EURGBP : 0.85 / 0.60 , EURCHF : 1.60 / 1.06
GBPJPY : 240 / 145 , GBPUSD : 2.00 / 1.3

ニャン吉RepeatはEAチャートを25枚・通常チャート5枚にしておきました。
様子を見て更にチャート数を増やす予定でしたが、ニャン吉EAでも11枚EA稼働・チャートのみを5枚を表示させているので、セキュリティーソフトが裏で動くと思ったよりも動きが重くなってしまいました。
とりあえず以下の通りに売値買値を置いています(売値は2つずつ・残りは全て買値):
GBPJPY : 190 240 / 122 125 128 131 134 137 140 143 146 149
CADJPY : 115 130 / 70 72 74 76 78 80 82 84 86 88
USDJPY : 120 140 / 100 102 104 106 108
CADJPYとUSDJPYはトレール開始と幅の設定を2000/600に変更してあります。

karakama_canada_graph_2
ワクチン接種進むカナダがいち早く「量的緩和の終了」決定。拡大する先進国と新興国の格差、日本は「蚊帳の外」 | Business Insider Japanより引用

ワクチン接種進むカナダがいち早く「量的緩和の終了」決定。拡大する先進国と新興国の格差、日本は「蚊帳の外」 | Business Insider Japan」をみてもわかるように、実はポンドとカナダドルは当分上昇が期待されているので、テクニカル的にはそろそろ上限とのサインも出ていますが指値の価格帯からは外れて行くかもしれない通貨です。
それでもGBPJPYとCADJPYを選んだ理由としましては、①もともと割合と良く動く通貨であることと、②下限近くから指値をいれても頻出価格帯まで指値を置いていけるので都合が良かったこと、③プラススワップへ重点的に指値を置いていきたかったこと、が挙げれらます。
USDJPYはそれほど動かないし、今後長期に渡って頻出価格帯を外れてしまう可能性も無いわけではない為、今は指値価格帯から離れていく可能性が高い通貨ペアではありますがGBPJPYとCADJPYをメインの通貨ペアとして選びました。
付け加えるなら、ワクチンとテーパリングの影響なんて各国状況が追いつけば収まるだろうし、あまりにも酷い上昇が続くようでしたら改めて通貨ペアを変更するだけです。
もちろんこれはニャン吉の個人的な意見感想でしかありません。

本当はもっと指値を細かく置いていきたかったのですが、今EA用に使っている事務用PCが低消費ロースペックタイプな為、あまりEA本数を増やすと止まりかねないので本数を増やすのは諦めようかとも考えています。
実はこのPC、スペアがまだあと2つあるのと超低消費電力なのが気に入っています。
UPS使っての放置にとことん向いていたのですが、軽いはずのMT4でもEA本数次第では稼働が怪しいみたいです・・・OTZ

設定では安全を優先したため現在一つも指値が刺さっていません。
実は先週だとAUDNZDでエントリー条件を満たしていたため本当に残念です。
安全性にはかなり自信を持っていますが、収益率のほうは・・・というEAなので惜しいチャンスでした。
仕方がないのでこのまま勝率100%維持を狙います(ノ_く。)

あとニャン吉Repeatでは各通貨ペア1チャートを除いてトレール処理命令文を削除しましたが、更に軽量化を狙って売り指値のないチャートでは売り処理命令文も削りました。
本当はEAは2つともOnTickではなくてOnTimerにしておきたかったのですが、後者ではバックテストが不可能なMT4仕様のためエラー確認が不便になる事もあって、怖くて未だOnTickを利用しています・・・

FX勝率100%を維持、でも・・・

以前紹介しました「FX勝率100%の方法」は今も長期口座で実行していて、当然勝率は100%を維持しています。
ここで資金管理取引手法の話を繰り返す気はないので、初見の方は是非FX勝率100%の方法の記事をご確認ください。
但し、下に2021年1月1日以降の口座履歴を貼りますが、今年はエントリー数が余りにも少なく、儲けも少ないのです・・・
やはり大統領が変わるとドル円の流れも大きく変わるようで、今の流れもこのまま変わらないのかもしれません(ノ_く。)

損益欄を見れば全取引全勝でマイナスが無いことを確認できます。
しかしながら内容を見れば分かるように、本来のエントリー以外にも遊びのエントリーが目立ちます。
これば今迄の取引手法ではエントリーが少なすぎて、ついエントリーしてしまったものです。
勝率は100%を維持できる場所でのエントリーなので、どう動いても焦ることはありませんでしたが、やはり取引手法の変更を考えていました。
言うまでもないことですが、ここで言う勝率100%の方法とは過去成績においてであって、将来の成績を保証する方法ではありません

その一方、アーカイブで5月のブログ記事を見ればわかるように、5月はEA開発に夢中になっていました。
FXの長期取引に飽きてきたというのもありますが、FXは比較的作業量が多いので自動化できることは自動化しておきたかったということもあり、この長期口座も一旦EA口座にしてしまおうと考えています。
本当は半年という区切りの良い7月1日からEAを開始しようと考えていましたが、もう興味の対象が完全にEAに向いてしまっていることと、バイデンさんがトランプさんのようなポカをやらかさないことから、来月6月1日からさっさとEAを開始してしまおうかと思います。
そのため、口座履歴上buylimit(指値)もキャンセルしていました。

使う予定のEAはニャン吉EAニャン吉Repeatの2つですが、ニャン吉EAは今迄の長期口座であるOandaMT4でドル円以外の通貨ペアで本稼働させます。
但しニャン吉EAでは通貨ペアの数こそ増えるものの、今迄の長期口座と取引手法はたいして変わらないため、相場に大きな変動が起こらない限りエントリーしないままの状態が続くかもしれません。
正直今の相場のままが続くとしたら、もう一方のニャン吉Repeatのほうが成績に期待できるかもしれません。

その期待のニャン吉Repeatですが、一旦別口座を用意して実弾フォワードテストをすることにします。少し慎重に不具合を確認してみます。
楽天MT4が0.01ロット(1000通貨)の少額からエントリー可能なので、資金を分散させて20~25ポジションくらいで様子を見てみます。
問題なければ更に20~25ポジションくらいずつ増やしてみるつもりです。
但し、ポジションごとに別チャートを建ててそれぞれ別EAを稼働させることになるので、今迄のプレフォワードテストでも確認していなかった不具合がでる可能性もあります。

もともとMT4は同時に一つのタスクしか処理できないので、注文が同時に処理される場合バッティングが起こり、同時処理予定の注文にズレが起きない限りひたすらお互いの注文を打ち消し合って動作を止めてしまう欠点があります。
実際には数秒から数分程度の処理遅れになって終わるのですが、ニャン吉Repeatでは大量のチャートがMT4上で処理されることを予定しており、その全てでEAが稼働します。
この問題はニャン吉Repeatでのみとは言いませんが、こちらの方が問題となる可能性がより高いため一旦別口座で稼働させることにしました。

折角2020年1月以降Oanda口座で全取引全勝、勝率100%を維持してきたので、EA口座となってもなるべく勝率100%を維持していこうと思います。