【製作の動機】
初め基本的なリピート系のEAを使ってみましたが、中央値を手動で一定期間ごとに変更する必要が面倒だと感じました。
AUDNZDのような一定価格を上下する通貨ペアならともかく、USDJPYのような長期にわたってじわじわと上下する通貨ペアならなおさら面倒です。
その為一定期間内で中央値を計算する機能が欲しくなり自分で作り始めたのがこの「りますと」です。
その後、ストラテジーテスタでスワップポイントがプラスの方にのみエントリーすると、勝率が飛躍的に上がることが判り
これも自動で処理できるようにしました。
これによりある程度放置された状態でも確実にトレードできるような作りになっています。
「りますと」の名前の由来は、トレンドの状態を判断し、売られ過ぎや買われ過ぎによる反転等にも対応できるようにフィルターを付け加えた結果に由来します。
【EAの概要】
基本的なリピートEAに以下のような機能を付け加えています。
■一部の通貨ペアだけでなく様々な通貨ペアに対応しています。(複数EA起動時にはマジックナンバーを変える必要があります)
■リピート系売り買い判断の中央値を自動で判断することが出来ます。
(決められた価格に固定することも可能です)
■トレンドが売りなのに買いがエントリーされてしまうことがなるべく無いように様々なフィルターを用意しています。
(無効にすることも出来ます)
■スワップポイントを自動判断し、売りや買い専門でトレードすることが出来ます。
この為スワップポイントがプラスの方向のみのエントリーが出来、即日決済が出来なくてもスワップが手に入るかもしれません。
(※FX会社によってはスワップポイントを取得できない場合があります。その場合手動での設定が可能です。)
■ストップロスが設定できます。(デフォルトでは無効)
■余剰証拠金が少なくなるとエントリーを中止する機能があります。これにより複数EA起動でのポジションの持ちすぎを抑制します。
ポジション持ち過ぎはゼロカットの原因の一つになります。
■設定した金額を基準として余剰証拠金からエントリー時のLot数を自動で設定することが出来ます。(デフォルトでは無効)
これにより余剰証拠金が少ないとLot数が少なく、余剰証拠金が増えていくとそれに合わせてLot数が多いエントリーが自動で出来るようになります。
■エントリーラインが中央値から離れていくごとにLot数を増やす事が出来ます。
■相場が荒れている時や週末の取引終了間近のスプレッドが広くなっている時にエントリーしないように設定できます。
【EAのパラメータについて】
パラメータ | 内容 |
基本関連 | |
StopTrade | 自動取引を停止する余剰証拠金 |
StopPer | 余剰証拠金が残高の指定パーセントを下回ったら取引しない |
StandardCI | 複利基準 設定された余剰証拠金がLotパラメータの×1となる (0無効) 例1:StandardCI=100,000 Lot=0.1 なら 余剰証拠金10万円で Lot0.1となります 例2:StandardCI=100,000 Lot=0.1 なら 余剰証拠金100万円で Lot1.0となります |
Lot | 取引ロット数 (StandardCIが0の時変化はありません) |
MaxPosition | 最大ポジション数 (Tr_ReOpenTimeパラメータ次第で動きが変わる時があります) |
LossPips | ロスカット下降価格 (オーダー時、指定pips分のストップロスを設定できます)(0無効) |
Slippage | 許容スリッページ (カウントダウン取引だと0になります) |
MagicBuy | このEAの買いID (Tr_TrapCount数だけプラスされたIDが生成されます、 他のEAやMagicSellとも一致しない数字を設定してください。 IDの重複は予想外の取引が発生する原因になるので注意してください) |
MagicSell | このEAの売りID (Tr_TrapCount数だけプラスされたIDが生成されます、 他のEAやMagicBuyとも一致しない数字を設定してください。 IDの重複は予想外の取引が発生する原因になるので注意してください) |
TradeON | 実際に売買取引をする(通常そのままで) |
SwapFil | -1=OFF 0=スワップが0以上のみ売り買いする 1=スワップポイントが0より上のみ売り買いする (チャートのコメントでも表示しますが、スワップポイントは通貨ペアの仕様にて確認ください) |
TradeBUY | 買い取引をする(SwapFilがONの場合はそちらが優先されます) |
TradeSELL | 売り取引をする(SwapFilがONの場合はそちらが優先されます) |
SignalPrice | チャートに注文時の価格を表示(通常そのままで) |
SignalPriceBUY | チャート買い注文時の矢印の色(通常そのままで) |
SignalPriceSELL | チャート売り注文時の矢印の色(通常そのままで) |
EmailON | Eメール機能の使用設定 |
NotifiON | 通知機能の使用設定(ユーザーを紐づけているMT4のモバイルアプリに通知させます) |
deinit_ON | EA終了時に必要な処理をさせるか否か (通常そのままで) |
Point_1pip | pointから指定の倍数を1pipsと仮定する(1pips 10pointのFA会社が多いと思います)(0なら自動) |
?フィルター関連 | |
Fil_Spread | スプレッドがこれ以上だとエントリーしない(0無効) |
Fil_Fri_Time | 金曜日の終わりから指定時間前からエントリーしない(0無効) |
Fil_Mon_Time | 月曜日の始まりから指定時間後までエントリーしない(0無効) |
Fil_PipsDay | Fil_StopDay日内の1日で指定Pips以上HighLowの差のPipsが動いたらエントリーをしません。 (荒れた日を避ける為のフィルター)(0無効) |
Fil_StopDay | Fil_PipsDayが作動した場合、結果的に設定数のチャート足更新までエントリーをしません。 |
?移動平均フィルター1 | |
Fil_MA_TimeFrame | 移動平均指定時間足(0=週足であることに注意してください) 1=1 2=5min 3=15min 4=30min 5=1h 6=4h 7=1d 8=1w 9=1Mon |
Fil_MA_Period | 移動平均期間(0なら下記の”Fil_MA_~”フィルターは使用されません) (種別は単純移動平均線、摘要価格はcloseとなります) ※Fil_TimeFrameの時間足を元に作動しています |
Fil_MA_Diff_St | 移動平均差※1(pips)が設定値以上だとFil_MA_Modeに従ってエントリー可能とする |
Fil_MA_Diff_En | 移動平均差※1(pips)が設定値以上急落防止のためエントリーしない |
Fil_MA_Mode | 0=設定値内なら移動平均線の上下方向関係なく売買し、設定値外なら売買しない 1=移動平均差が設定範囲外なら売り買いせず、移動平均線の上下方向のみの売り買い (通常移動平均線が上向きなら買い、下向きなら売りとなります) |
Fil_MA_Separate | 現時点の価格が、指定pip以上移動平均から離れていたら取引しない (0無効) (価格が移動平均から離れすぎると価格反転のリスクが上がる為の措置です) |
Fil_MA_CutOff | 1以上=移動平均差が指定pip反転すると反転前のポジションを決済します -1=移動平均差がFil_MA_Diff_StとFil_MA_Diff_Enの範囲外になるとポジション決済します |
?移動平均orストキャスフィルター2 | |
Fil_MA2_Symbol | 2つ目の移動平均もしくはストキャスの通貨ペア 通貨ペアが空白なら現チャートの通貨、もしくは”USDJPY”みたいに通貨ペアを入れます ※Fil_TimeFrameの時間足を元に作動しています |
Fil_MA2_TimeFrame | フィルター2用の指定時間足(0=チャートの時間軸) 1=1 2=5min 3=15min 4=30min 5=1h 6=4h 7=1d 8=1w 9=1Mon |
Fil_MA2_Period | 2つ目の移動平均の期間、移動平均線が上向きか下向きかだけで売買判断します。 長期短期での判断や、他の通貨ペアとの比較で使用してください。 因みに数値がマイナスならストキャスモードになります。 (0ならこのフィルターは作動しません) |
ストキャスフィルター1 | |
Fil_St_TimeFrame | 移動平均フィルター2用の移動平均指定時間足(0=チャートの時間軸) 1=1 2=5min 3=15min 4=30min 5=1h 6=4h 7=1d 8=1w 9=1Mon |
Fil_St_Mode | 0=このフィルターは作動しません 1=ストキャス線とシグナル線の入れ替わりで判断 (ストキャス線がシグナル線より上なら買い、シグナル線が上なら売りです) 2=1足前のストキャスとの差で判断 (ストキャス線が上向きなら買い、下なら売りです) ※Fil_TimeFrameの時間足を元に作動しています。 ストキャスのパラメーターは設定出来ません。 |
Fil_St_Start | Fil_St_Modeから 1=ストキャス線とシグナル線の差が設定値以上だとエントリーしません 2=前足と現足のストキャス線の差が設定値以上だとエントリーしません |
Fil_St_CutOff | ストキャス差が反転した指定量を超えると決済する (0無効) (ストキャス差は上記Fil_St_Modeでの差です) |
?エントリー関連項目 | |
Tr_EntryCount | エントリー数(価格間隔ごとに仕掛けるエントリー数) |
Tr_CutOffDay | 指定日数以上ポジションを持っていたらカットする(0無効) |
Tr_LotPlus | 中央値から遠ざかるエントリーラインごとにプラスされるロット数(0は同じロット) (値が0.01なら、中央値からの最初のエントリーラインから次のエントリーラインごとにLotが0.01プラスされます) |
Tr_IntervalPips | エントリー幅pip(この間隔で仕掛けます) |
Tr_EntryOverPips | 現足が売り買い方向に指定pips行かないと取引しません(0無効) (値が1なら現足がopen時よりプラス方向に1pips行かないと買いはエントリーしません、 open時よりマイナス方向に1pipsくと売りのエントリーとなります) |
Tr_profitPips | 決済する利益幅(pips) |
Tr_CenterStartPips | 中央値から設定pip離れた位置からエントリーを開始する |
Tr_CenterPrice | 指定中央値、通常は日足から求める自動計算ですが、中央値を指定すると 自動計算はせず、その値が中央値となります。0を指定すると自動計算となります。 |
Tr_CenterMode | 日足を基準とした中央値算出モードです 0=Tr_CenterCalcDay設定日内の(最高値+最低値)/2とします 1=現在日からTr_CenterCalcDay日前の日足Close値を中央値とします 2=CenterCalcDay値を期間とした移動平均値を中央値とします |
Tr_CenterCalcDay | 中央値を計算する為のデータ日数 |
Tr_CenterIntervalDay | この日数ごとに中央値を計算する(3なら3日に1回計算するといった感じです) |
Tr_ReOpenTime | MaxPositionパラメーターのポジションの取り方を変えます(0無効) 値が1以上なら最初の最大ポジション数は1で、設定時間後ごとにMaxPositionの範囲内で1つづつ増やします -1以下ならマイナスを抜いた設定時間後にポジションを持ったままならMaxPositionを一つ増やします 逆側に値が動いているのにトラップごとに連続してポジションを取るリスクを軽減するためのものです |
Tr_PeriodWeek | 設定週期間の最高値と最低値を求めます この値を基にTr_FilPrice1とTr_FilPrice2フィルターの指定値になります 設定値0なら指定値を求めないので、Tr_FilPrice1に最高値、Tr_FilPrice2に最低値を設定してください |
Tr_FilPrice1 | これ以上の価格では取引しないか、Tr_PeriodWeekが0でないときは 期間中の最高値から指定pip引いた値以上では取引しません |
Tr_FilPrice2 | これ以下の価格では取引しないか、Tr_PeriodWeekが0でないときは 期間中の最低値から指定pip引足した値以下では取引しません |
Tr_PriceMode | 1=Tr_PeriodWeekが0では無いとき、スワップポイントの関係上、 売りのみの取引時にTr_FilPrice1の値とTr_FilPrice2の値を入れ替えます 0の時は入れ替えをしません。 通貨ペアによっては、スワップポイントのプラス側が時々入れ替わる時がある為の措置です。 |
【チャート内左上のコメント表示について】
1.スリッページです。Slippageパラメーターで設定していてもカウントダウン取引とEAが判断すると0になります。
2.残高に対する余剰証拠金の比率です(%)。StopPerパラメーターの指定以下になると取引を停止します。
3.1pipsの価格です。
4.現在のLot数です。StandardCIパラメーターを設定していると、数字が変化します。
5.現在のスプレッドです。
6.Tr_PeriodWeekパラメーターを0以外で設定するとTr_FilPrice1/Tr_FilPrice2として表示されます。
Tr_PriceModeを1で設定していると、状況によりTr_FilPrice1とTr_FilPrice2が入れ替わったりします。
7.買/売のスワップポイントです。マイナスでは▼が表示されます。
0/0と表示された場合、スワップポイントが取得出来ない状態なので、その時にはSwapFilパラメーターの設定をOFFにしてください。
8.?現在足の日付と現在の時間になります。週末等の取引時間外状態だと日時は動きません。
9.このEAのバージョンです。
10.現在保持している買いポジションです。同じエントリーラインで複数ポジションを取ることはありません。
中央値から1つ目のエントリーラインを0とした数字が表示されます。
尚ポジションを持っていない場合表示されません。
(例:OrderBuy:0,1,4 = 1つ目と2つ目、5つ目のエントリーラインでポジションを持っています)
11.現在保持している売りポジションです。OederBuy同上に作用します。
12.買いもしくは売り側に配置されているエントリーライン数です。
13.移動平均フィルター1の前足と現足分の差で、この数値を基にFil_MA_Diff_StやFil_MA_Diff_En、Fil_MA_Separateパラメーターが作動します。
数値がプラス側なら買い側、マイナス側なら売り側と判断します。
数値がマイナス側の場合▼が表示され、Fil_MA_Periodパラメータで0を指定した場合、数値は0となります。
14.現在の移動平均フィルター1の現在足値と現在価格とのpips差(絶対値)です。
Fil_MA_Separateパラメーターで指定した数値以上になると価格急転のリスクと判断し、取引をしません。
15.現在の中央値です。Tr_CenterPriceパラメーターを0以外で設定しているとその数値、0だと自動計算された値が中央値になります。
16.中央値の次回計算日です。Tr_CenterIntervalDayパラメーターを元に決定され、中央値を直接設定した場合は1/1と表示されます。
17.Fil_MA_Diff_St~Fil_MA_Diff_Enまでの数値です。13の移動平均pipsはこの範囲内と範囲外でFil_MA_Modeの処理を決定します。
18.エントリー処理が出来る価格範囲です。Tr_FilPrice1やTr_FilPrice2、Tr_PeriodWeekパラメーターを元に算出されます。
19.ストキャスフィルターの数値です。この数値を基にフィルターの振る舞いを決定します。St買なら買い側、St売なら売り側と判断しています。
Fil_St_Modeパラメーターが0で設定されている場合、表示されません。
20.Fil_PipsDayパラメーター日内の1日の最高値と最低値の差が一番大きい日の差です(pips)。Fil_PipsDayパラメーターはこの数値を基に振舞います。
21.移動平均フィルター2の前足と現足分の差です。数値が0より上なら買い側、0より下なら売り側と判断します。
マイナス数値は▼が表示されます。機能をOFFにしている場合は表示されません。
22.フィルターが摘要されてエントリーしない状態の場合表示されます。(画像のコメントはMT4の自動売買を停止している時に表示されます)
23.現在持つ事の出来るポジション数 / 現在持っているポジション数
【EA運用可能業者について】
当EAは様々な業者で運用することが可能ですが、各業者ごとに多少の制限や設定値の違いが発生することがあります。
当EAの場合、スワップポイントが取得出来ない業者や、コースによりLot数に違いが出る場合等がありますので、その場合は手動で設定する必要が出てきます。
まだ運用業者が決まっていない場合、デモ口座等でテストして見るのも良いかもしれません。
【通貨ペアについて】
当EAはUSDJPYを元に開発していますので、USDJPYに最適化されていますが、他の通貨ペアでも使用可能です。
他の通貨ペア用に複数起動した場合、競合しない買いIDや売りID番号を指定してください。
Tr_EntryCountの数だけ買いIDや売りID番号が使用されます。(MagicBuyが100、Tr_EntryCountが10場合、買いIDは100~109まで使用されます)
IDの競合は、想定外の結果を生む可能性がありますので注意してください。
【含み損について】
リピート系のEAにありがちな一時的に含み損が増える事は、当EAでも例外なく起こりますので、中長期的にポジションを持つことも心掛けてください。
このような場合、ポジションを持ちすぎると含み損で一気に強制ロスカットになってしまうこともありますので、
それを想定した有効証拠金を用意するか、ポジション数やロット数を制限する必要があります。
当EAではポジションを取りすぎないようにする機能がいくつか用意されています。
さらに中長期的にポジションを持った場合にスワップポジションを取得できるような機能もありますので、適正に設定する必要があるでしょう。
(ある程度はデフォルトで設定されています)
StopTradeパラメーターがデフォルトで100と設定されていますが、これはFX会社で取引する証拠金次第で100ドルや100円となります。
StopPerパラメーターがデフォルトで残高のおよそ3分の1を証拠金や含み損として消費した場合にこれ以上ポジションを持たないように設定していますが、
StopTradeパラメーターもそれに似たような金額を設定することをお勧めします。(例:残高10万円なら66,000と設定)
StopTradeパラメーターとStopPerパラメーターの違いは、StopTradeパラメーターの設定を有効証拠金が下回るとアラートとして表示されますが、
StopPerパラメーターはアラートとしては表示されません。
【スワップポイントについて】
スワップポイントは各通貨ペアの2国間の金利差によって日々発生する利益や損益です。
当EAはデフォルトでは利益が発生する方のみにエントリーする仕組みですが、FX会社や通貨ペアによっては2国とも損益が発生する場合もあります。
この場合、ポジションを持つと日々ごとに証拠金がLot数に比例して減少していくことになります。
逆に、利益が発生する方には日々ごとにLot数に比例して証拠金が増えていくことになります。
リピート系のEAでは中長期的にポジションを持つこともありますので、これを積極的に利用しましょう。
当EAでは自動的にスワップポイントを検出しますが、FX会社によってはスワップポイントが取得できない所もあります。
その場合、SwapFilパラメーターを-1(OFF)にし、個別にFX会社のHP等からスワップポイントを調べTradeBUYとTradeSELLパラメーターを手動設定する必要があります。
【複利機能について】
複利機能はデフォルトでOFFにされていますが、使用の際には前述の含み損に十分注意してください。
複利の倍率を掛け過ぎると含み損が比例して広がり強制ロスカットになるリスクが高くなってしまったりします。
先ずは少なめのロットと複利倍率で余裕を持った運用をお勧めします。
ストラテジーテスタを使った具体例でみてみましょう
FXTFデモ口座にて10000ドルから(円でのテストは出来ませんでした)
USDJPY 2013/1/1~2023/5/1
単利(複利機能OFF)、Lot0.1とした場合(すべてのパラメーターがデフォルトの場合)
結果
純益:23,144.8ドル
プロフィットファクタ:無し(勝率100%だと0となる為)
最大ドローダウン:18.7%
グラフが時折跳ね上がっているところがありますが、これはポジジョンを長期に持った為のスワップポイントが利益としてプラスされたためです。
StandardCIパラメータを2000ドルLotを0.1と設定した場合(有効証拠金が2000ドルで0.1ロットとなる設定)
結果
2016/6/24強制ロスカット
純益:-2,604ドル
プロフィットファクタ:0.96
最大ドローダウン:90.7%
こういう場合は、FX業者によっては追証が発生する場合がありますので、強制ロスカットとなる前に手動で決済した方が良いかもしれません。
因みに当EAは予めストップロスを設定することも出来ますし、手動でポジションの決済やストップロス価格を設定しても大丈夫です。
純益:160096.5ドル
プロフィットファクタ:無し(勝率100%だと0となる為)
最大ドローダウン:31.7%結果的に勝率100%となっていますが、7年間保有していたポジションがあったりして、この先同様の結果となる保証は全くありません。
なので複利のリスクについては十分に注意して運用してください。
【中央値自動計算機能について】
当EAはデフォルトはでパラメーターの設定値にしたがって毎日中央値の計算をしています
その結果を中心としてエントリーラインを決定していきます。
USDJPYでは毎日中央値が変化していく方が良い結果が出るのですが、
AUDNZDのような2014年辺りから1.0~1.15を行ったり来たりする通貨ペアの場合、
中央値をTr_CenterPriceパラメーターにて中間の1.075付近に取り、
Tr_EntryCountパラメーターを20~30程度にする方が良い結果が出るでしょう。
【エントリーラインとLot増加機能について】
当EAは、中央値からエントリーラインが離れるごとのエントリーラインでLotを増加させる機能があります。
これは上記のAUDNZDのような一定金額を行ったり来たりする通貨ペアでは中央値から離れるエントリーラインでは多めのLotでも取りやすい事がある為です。
Tr_LotPlusパラメータがデフォルトで0.01と設定されていますが、FX業者のLot値によっては変更する必要があります。
因みにパラメーターのデフォルト値では最初のエントリーラインではLot0.1、次のエントリーラインでは0.11、次0.12となっていきます。
【免責事項について】
※ 当EAは予告なく内容を変更、掲載を中止することがあります。
※ 当EAのバックテストやフォワードテストの結果は、将来の利益を保証するものではありません。
※ 当EAの使用による損失については、プログラムの不具合やバグ等の原因を含めて開発者は一切の責任を負いません。
※ 当EAの使用は取引のリスクや仕組みを理解し、ご使用者の責任と判断の元使用されるものとします。