NinjaPlatform
- Experts
- Saburo Harada
- Versão: 1.0
このEAは、NinjaPlatformの無料のサンプル版です。
まず、 NinjaPlatformの説明をします。
NinjaPlatformは、お客様が自由にソースコードをいじって勝てる売買ロジックを構築できるEAのプラットフームです。
次のように思っておられる客様は、是非NinjaPlatformをご検討下さい。
- 投資はギャンブルであるので、やるなら大きく勝ちたい。
- 勝つ自動売買プログラムを自分で創ってみたい。
- 勝つための理論や手法を学びたい。
お客様が勝てる売買ロジックを構築するために、 NinjaPlatformがサポート出来る事は、以下です。
1.豊富な売買ロジックやひな型が準備してある。お客様は、それらを簡単に微調整・変更・新規作成できる。
具体的には、
- オープンロジックとして、一目均衡表/HULL移動平均/MACD/ AlligatorTrend/RCI/RCI_3line/STO/RSI/DMI/ Accelerator/ ボリジャーバンド/PIVOT/ ParabolicSAR/疑似グランビルの法則/疑似SinglePenetrationなどを用いた、15個のロジックが準備してある。
- オープンロジックを制御するフィルターロジックを、 8個準備してある。
- クローズロジックを、13個準備してある。
- 同時に4つの時間軸の オープンロジック 、 フィルターロジック 、クローズロジック等を処理できる。
2.オーダー処理に関わる領域は、自動で処理してくれのでお客様が気に留める必要はありません。具体的には、
- 最大オーダー数を設定すると、その範囲でオーダーしてくれる。
- 余剰証拠金の何割をオーダーに廻すかを指定すると、それに合わせてロット計算してくれる。
- オーダーアクションが生じると、メール連絡してくれる。
- メンテ等で一時止めても、最後の状態を引き継いで稼働してくれる。
- 検討等のために、成績などを出力することができる。
注)この部分は、ソースコードを公開していません。
3.勝つための理論手法がある。具体的には、
- オーダーをクローズする損益値を設定する事により、オープンシグナルの優位性を確率的に判断できるようにしている。
- その損益値も、どのように設定すれば良いか論理的に示している。
- オープンシグナルの優位性を何処まで求めるべきかを、還元率で示している。
4.著作権
ソースコートを表示している部分は、お客様が自由に改変出来ますし、改変ししたものを、お客様自身のトレードに自由にお使い頂けます。
しかし、改変したソースコードを第3者に譲渡する場合は、有償無償を問わず、以下の事を守って下さい。
- NinjaPlatformを元に改変を行った事を明記する事。
- 改変したソースコードは、どのような形(EAの一部若しくはEA全体を形成する)であれ、 NinjaPlatformのソフトに含まれるライブラリープログラムを使わないと、バックテストや実際のトレードを行えない事。
NinjaPlatformは、弊社shopで販売しています。SHOPには、ここで提供している「 NinjaPlatformの無料のサンプル版」の
ソースコードも無料で提供しています。興味にある方は、是非ご覧ください。
shop) https://www.ninjaplatform.shop
又、次も、参考にして下さい。
HP) https://ninjaplatform.jimdofree.com
使い方の動画説明) https://www.youtube.com/@ninjaplatform.hls109
続いてNinjaPlatformの無料サンプル版の説明をします。
この 無料サンプル版は、 USDJPY 1Hで良い成績が出せるように調整してあります。
オープンシグナルは、 一目均衡表の基準線と転換線のクロスでシグナルを出します。
クローズシグナルは、損益が±0.5円を超えると、トレーリングストップでシグナルを出します。
オーダー管理では、オーダーロットは指定や自動計算でき、同時に持てるオーダー数は1です。
1.ソフトウエアーのインストール
まず、インストール先のフォルダを開きます。
メタトレーダーを起動して出てきた実行画面の左上にある「ファイル(F)」のプルダウンメニューから、「データフォルダを開く(D)」をクリックしタトレーダーのデータフォルダを開きます。更に、その下のMQL4 フォルダを開きます。
次に、Sample_software.zip にある全てのプログラムをインストールします。インストールすると言う事は、プログラムをコピペする事です。
NinjaEA_sample3.ex4 は、MQL4 フォルダの下のExpers のフォルダにコピペして下さい。インストールすると、EA 本体である「NinjaEA_sample3」は、そのままで使えるようになっています。試しに、バックテストで動かしてみて下さい。
2.EA システムの目指す所
FX に限らず投資はギャンブルと言えます。もっと言うと、投資は一般のギャンブルより難しいです。一般のギャンブルは賭ける時に、得られるであろう利益や損失額が判りますが、投資は手仕舞い時も自分で判斷するので、その判斷の良し悪しによって損益が変わります。つまり、投資は利益を得るためにより多くの判断が必要で、その意味では難しいギャンブルと言えます。
ギャンブルで勝ち残る人は稀です。その理由は以下です。
- 勝小損大に至りやすい。(ちょっと勝って大きく負ける)
- 疑心暗⿁に至りやすい。(自分の判断に迷いが生じる)
- 常にプレッシャに晒され、心技体が下がってくるいと押し潰される。
これらに打ち勝って利益を出し続けるためには、メタトレーダーのような自動売買が適しています。そして、全て失っても気にならない範囲で売買する事が肝要です。しかし、ギャンブルと捉えるからには、リスクを負っても、大きな利益を目指したいものです。このプログラムでは、倍々ゲームの手法を用い大きな利益を得る事を目標にしています。具体的には、4倍/年位を狙った手法を考案しています。
このプログラムには、前述の負ける3つの理由に陥らないように、以下に注力しています。
- クローズする損益巾を決めて、勝大損小を狙う。
- 投資をギャンブルと捉えて、理論に裏打ちされた確率を重視した手法を採用しているので、一時的な成績不振に陥っても乗り切る事が出来きます。
- 常に勝てるロジックはありません。なぜなら、今まで色々な手法が考案されて来ましたが、未だに常勝ロジックが見つかっていないからです。このプログラムでは、多数の売買ロジックを準備しています。そして、その時々で最も調子の良い(確率的に良い成績が望める)売買ロジックを採用する事により、期待する成績が望めるようにしています。(サンプル版には、ない)
この特徴を実践できるように、このプログラムには多くの手法が準備されています。又、プログラム中には、各々の手法を丁寧に説明しています。手法を編み出し、ちゃんと動くようにし、丁寧な解説を加える事には、膨大な時間が掛かっています。お客様はプログラムを購入する僅かな投資により、「確率に基づく投資手法を手に入れる」、「その手法に基づく多数のちゃんと動くサブプログラムを手に入れる」、「サブプログラムはパターン化されているので、簡単に独自のサブプログラムを作れる」などを手に入れられます。 (サンプル版には、ない)
3.EA システムの特徴
最初に本システムの主要な2つの特徴を説明します。
特徴Ⅰ)売買シグナルを評価する論理的な考え方や評価方法を用いている。
FX などの投資では、色々な手法が世の中に溢れている。これから投資を始めようとしている人は、どの手法を取り入れるべきは判断に迷うはずです。なぜなら手法同士を比べる考え方を持ってないからです。ギャンブルなどでは、昔から確率・期待値・還元率など研究されており、ある
ギャンブルの確率・期待値・還元率は明確に示す事が出来ます。しかし投資の世界では、それらはあまり考慮されていないように思われます。一般的な投資では、ある投資の損益は手仕舞して初めて確定します。賭ける時点では損益は不明です。そのため賭ける時点で、明確な確率・期待値・還元率を出せません。だから投資手法の基本的な判断材料に使われないのです。
私は、あるオーダー方法に優位性がない場合、ある値段でオーダーした時に±α 値段ほど動く確率は、(+α)が50%、(-α)が50%であると定義します。ある取引手法で勝つ確率が60%だとすると、損益は(+α)✕0.6+(-α)✕0.4 になります。
しかし、実際の損益はスプレッド分目減りした(+α)✕0.6+(-α)✕0.4-スプレッドになります。
従って、還元率は{(+α)✕0.6+(-α)✕0.4-スプレッド}/{(+α)✕0.6+(-α)✕0.4}と言えます。
スプレッドは小さな値なので無視できるのではないかと考えがちですが、FX などでは売買を繰り返して利益を積み上げて行きますので小さな値でも損益への影響が大きく出ます。
以下に例で説明します。
USDJPY・スプレッド0.01 円で、100 回取引し勝率60%の時を例にして説明します。1回のトレードの値動き幅は、±0.5 円と仮定します。
注)テクニカル指標を用いた自動売買では、外乱(トピック的な値動き)に影響されないよう、この値幅を例として設定しました。
勝った60 回の真の利益は0.5✕60=30 円になります。
負けた40 回の真の損失は20 円になります。
スプレッドのよる損失は、0.01✕100=1 円になります。
この場合、100 回の取引で真の利益10 円を得られましが、スプレッドがあるので9円の損益となります。
還元率は、9 円/10 円の90%となります。
ここでは、勝率が落ちても、目標利益幅±0.5 円が小さくなっても還元率が90%を割ってきます。
私は、総利益・取引回数・スプレッドで決まる還元率が、90%以上になるように売買ロジックを作るよう提唱します。
なぜなら還元率が低いと、⾧く勝ち続ける事が困難だからです。
上記の説明から大きな利益を上げるためには、スプレッドが小さいほうが良いことが判ります。
FX 取引会社を選ぶ時には、その観点に注力して下さい。
特徴Ⅱ)お客様は、売買シグナルのみ考えれば自動売買が出来る。
その他の色々なプログラムの部分は、本システムがカバーします。
この部分をお客様が作るには、弊社が費やしたように多くの労力と根気が必要です。
本システムがカバーしている主要な事は、
- 複数の売買シグナルを同時に扱える(サンプル版は、1個のみ)
- 複数の時間軸の売買シグナルを同時に扱える(サンプル版は、1個のみ)
- 同時に扱えるオーダー数を規定できる(サンプル版は、1個のみ)
- 投資するロット数の自動計算
- 自動売買
- お客様が常に監視しなくて良い様に、売買情報などをメール連絡(サンプル版は、ない)
- 本システムを何時止めても売買の連続性を保つ事が出来る。(サンプル版は、ない) 止める理由)Windows のアップデートや売買シグナルの修正など
- 個々の売買シグナルの週間成績などを可視化(グラフ化)出来る。 (サンプル版は、ない) 理由)オーダーに使う売買シグナルの入れ替えなどのため
更には、色々な売買を行える様にするために、以下の様々なプログラムを準備しています。
<一目均衡表などの指標を用いたオープンシグナル発生サブプロ>
・「SignalPro_***」~1 プロ
<クローズシグナル発生プロ>
・「PreCloseSignBy***」~1 プロ
・「calcuProfit」~損益計算プロ
・「CloseSignControll」~クローズシグナ発生条件規定プロ
注)このEA システムでは、FX 取引で不要な情報を出さないように
Stoploss やtakeprofit はオーダーに含めていません。それを含めて、このプロでコントロールします。
注)又、このプロは、オープンシグナル発生プロの良し悪しを評価するため、Stoploss やtakeprofit のみでクローズシグナルを出す設
定もあります。(サンプル版は、ない)
<上記を組み合わせて売買シグナルを発生する売買シグナルサブプロ>
・「SubOrderPro_***」~1 プロ
<SubOrderPro の売買シグナルをメインプロへどう使うかを設定するプロ>
・「SubproUsage_enableODR」~どのサブオーダープロをメインプロへ使うかを設定
又、本システムでは扱えない事もあります。それらは
- 複数の通貨ペアを同時に扱えない。但し、別々のEA として動かせば可能です。
- ナンピン(難平)売買のしくみは準備していない。 理由)ナンピンは結果的に売買タイミングを遅らせ利益を出し難い
- 生成中のローソク足を売買シグナルに用いない。 理由)バックテストが難しくなる。お客様か作った売買シグナルの動作検証が難しくなる。
4.テスト/実践の設定の仕方
このEAプログラムは、以下の状態で育成してあります。ユーザーが使用する時は、この状態を理解した上で、色々試してみて下さい。
▪エキスパートアドバイザー:NinjaEA_sample3
▪通貨ペア:USDJPY
注)このEAは、USDJPYで開発しています。プログラムの一部
変更などを行わないと、他の通貨ペアで良い結果を得られません。(サンプル版は、出来ない)
▪期間:H1 注)H1は1時間足を示す
▪モデル:初値のみ 注)このプログラムは、初値のみの検証で十分
注)実践では、設定出来ません。
▪スプレッド:5 注)事実と乖離しているのであれば訂正して下さい。
注)実践では、設定出来ません。
【パラメーターの入力】
MT4では、EAをテストや実践で使う時に、外部パラメーターで使い方を指定するようになっています。テストでは、「エキスパート設定」ボタンから入って「パラメーターの入力」タブで設定します。実践では、EAをチャートにドロップした時に出る「パラメーターの入力」タブで設定します。
以下の説明は、EAプログラム中にコメントの形で記してあります。これらは、実際に使う時に設定するようになるので、ざっと読んで頂いて結構です。
注)通常、以下の項目は初期設定の値(後述の値)を示していますが異なる値が表示されていれば、リセットするか、直接上書きして下さい。
▪Magic:10000
EAのオーダー番号や色々な記録の識別に用いられる。マジックナンバーは、各サブオーダープロ毎に割り当てられる。
その値は、後述するサブオーダープロに割り当てるxナンバーを用いる。例)xのマジックナンバーは、10000(初期値)+xとする。
(サンプル版は、x=1)
注)初期設定のマジックナンバーを変えるとオーダー番号や色々な記録を区別出来ますが、EA自体は変わりません。従って、EAのプログラムを変更した時や複数のEAを同意に用いる時は、EAの名称を変更して下さい。
▪MaxODN:1 (サンプル版は、1のみ)
同時に持てる注文数。
▪SubNumber:1 (サンプル版は、1のみ)
サブオーダープロに割り当てるxナンバーの最大数を示す。
▪ShortPeriod:60 (サンプル版は、1のみ)
短いタイムフレームとして60分足を使う事を示す。
▪MidPeriod:60 (サンプル版は、1のみ)
中間タイムフレームとして60分足を使う事を示す。
▪LongPeriod:240 (サンプル版は、1のみ)
長いタイムフレームとして240分足を使う事を示す。
▪ConstSpread:5
このプログラムで成績計算に用いるスプレッドを示す。
一定の値に設定すればバックテストでの成績評価がブレないので、一定の値に設定する事を推奨。
ストラテジーテスターセッティング画面のスプレッド設定と同じ値にすることが望ましい。
注)実践では意味がありませんが、テスト環境と同じ設定にして下さい。
理由は、実践中もテスト環境と同じ記録が出来るようにするため。
注)FX取引会社の通常のスプレッドに準拠するよう設定して下さい。
▪Slippage:5
実オーダー時に、この範囲の値段変化であれば、オーダーする事を示す。
▪TradeRatio:0.7; (サンプル版は、使えない)
余剰証拠金の内、この割合分をオーダーに用いる。
▪Setlots:0.1
優先的にこのロットを使用するために用いる。
”0”で不使用となり余剰証拠金の70%、オーダーに適用される。
理由)
このEAは、概ね一定のクローズ値動き幅を想定した売買ロジックとなっているので、利益とクローズ値動き幅の相関関係を直感的に判るようにしたいため。
売買ロジックのテスト中に、証拠金不足などの外乱要因が入らない ようにするため。
テストでTradeRatioを使うと、テスト期間終盤の成績がクローズアップされて全体の傾向が判り難くなります。
整理すると、
*テストでは、まずSetlots=0.1(最小ロット)で、儲かるかどうか(利益)を見る。
*実践では、Setlots=0、で自動売買を行う。
注)0.1が設定できない場合は、オーダー出来る最小ロットを確認し、その値に設定して下さい。
▪UseLastStatus:0 (サンプル版は、使えない)
EAを止めた時、最後の状態を保存するかどうかを示す。
最終状態を保存しておくと、その状態からEAを再開する事が出来る。
この値が
0:何もしない
1:(write)既存ファイルを削除し、新たに最終状態を書出し保存する。
2:(read)既存ファイルを読み出し
3:(read and write)EA実行の冒頭でreadし、最後にwriteする
4:(delete)既存ファイルを削除
テスト時は、tester>filesの中の"LastStatus_of_********(M10000)"フォルダ内に保存。
実オーダー時は、MQL4>Filesの中の"LastStatus_of_********(M10000)"フォルダ内に保存。
最後の結果を引き続いで実行したい場合(一旦止めて再開する時)は、最後の結果が残してある必要があります。
但し、最終状態のローソク足が、現在のローソク足より800以上前だと読み込まない。
800以下になるように、再度、もっと近い最終状態を保存しましょう。
テスト結果を実践に引き継ぎたい時は、最終状態のデータをフォルダごと移動して下さい。
1や3設定時には、消す前に現在あるデーターを”BackUp_LastStatus_ ********(M10000)_yyyy.mm.dd_hh_mm(LastStatusTime)” フォルダに保存します。
誤って1や3に設定しEAを実行した場合には、復元のため、このデータを活用下さい。
この記録は、どんどん保存されますので、適時削除下さい。
▪ExportOrderHistory:0 (サンプル版は、使えない)
オーダー記録をファイルに書出すかどうかを設定するために用いる。
書出しするのは、各オーダー結果。(各サブプロ、メイン、実オーダー)
書出す目的は、新しいプログラムの検証の為や、実オーダー実績を記録に残す為などです。
この値が
0:何もしない
1:既存ファイルを削除し、新たに全記録を書出し保存。
3:既存ファイルあれば、新しいオーダーを続けて書き出し
4:既存ファイル削除
テスト時は、tester>filesの中の" OrderHistory_of_********(M10000) "フォルダ内に保存。
実オーダー時は、MQL4>Filesの中の" OrderHistory_of_********(M10000) "フォルダ内に保存。
▪ExportWeeklyHistory:0 (サンプル版は、使えない)
各サブオーダープロの週間結果をファイルに書出すかどうかを設定するために用いる。
注)最大15ケのサブオーダープロを保存する。
書出すのは、各サブプロの週間成績。
書出す目的は、サブプロの週間成績の推移を比較検討するため。
この値が
0:何もしない
1:既存ファイルを削除し、新たに全記録を書出し保存。
3:既存ファイルあれば、新しい週から続けて書き出す
4:既存ファイル削除
テスト時は、tester>filesの中の"WeeklyHistory_of_*******(M10000)"フォルダ内に保存。
実オーダー時は、MQL4>Filesの中の"WeeklyHistory_of_********M(10000 )"フォルダ内に保存。
▪WriteStartDay:1970.1.1 (サンプル版は、使えない)
ExportOrderHistory/ExportWeeklyHistoryで書き出し設定した時、この日付分から書き出す。
1970.1.1は、0を意味する。
▪MailEnable:0 (サンプル版は、使えない)
0以外にすると、実践時(テストでない)に、指定アドレスにメールを送る。
目的は、オーダーのOPEN/CLOSEやEAが稼働中であることを知らせる為である。(外出先で知る事が出来る)
この値が、
0:メール出さない。
2:スタートメール+定時メール+オーダーメール+エラーメール。
上記以外:スタートメール+定時メール+エラーメール。
以上