post

RSIに移動平均線を適用させる~その2

前回は、RSIに移動平均線を適用させるプログラムの骨格の部分を解説しました。骨格だけでも十分使うことができますが、オシレーター系のインジケーターは、「レベル」とセットで使われる事が多いです。

RSIでは70,30というのが一つの目安になっていますよね。70以上で買われすぎ、30以下で売られ過ぎというように(厳密に言うとこの考え方は良くないらしいですが、ここでは触れません)。RSIを適用するときに70,30のラインを入れて使う人が多いと思いますし、MT5に最初から入っているRSIにも70,30のラインはあらかじめ入っています。

今回は最初から70,30のレベルに線を入れる2つの方法についての内容になります。

1.#propertyで指定する方法。

#property indicator_level1 30
#property indicator_level2 50
#property indicator_level3 70
#property indicator_levelcolor clrOrange
#property indicator_levelwidth 1
#property indicator_levelstyle STYLE_DASHDOT

(1)property indicator_level1 30
赤字はレベル線の数だけ必要。これは1番目のレベルが30ということ

(2)property indicator_levelcolor
レベル線の色、指定しない場合はデフォルトのsilver

(3)property indicator_levelwidth
レベル線の太さ、指定しない場合はデフォルトの1

(4)property indicator_levelstyle
レベル線の形、指定しない場合はデフォルトのSTYLE_DOT(点線)なお、指定しても線の太さが2以上になると自動的にSTYLE_SOLID(実線)になる

なお、(2)(3)(4)はレベル線が何本あっても一括でしか指定できない

#propertyで指定するメリット

・プログラムが簡単
・ユーザーでの変更も容易

この画面から変更も新しいレベル線の追加も容易にできます。

#propertyで指定するデメリット

・色、太さ、形状は一括指定なので、きめ細かい指定はできない

2.IndicatorSetInteger、 IndicatorSetDouble関数で指定

//(1)レベル線の数を指定する
IndicatorSetInteger(INDICATOR_LEVELS,3);

//(2)レベル線の数字を指定する
IndicatorSetDouble(INDICATOR_LEVELVALUE,0,30.0);
IndicatorSetDouble(INDICATOR_LEVELVALUE,1,50.0);
IndicatorSetDouble(INDICATOR_LEVELVALUE,2,70.0);

//(3)レベル線の色を指定する
IndicatorSetInteger(INDICATOR_LEVELCOLOR,0,lclrRed);
IndicatorSetInteger(INDICATOR_LEVELCOLOR,1,clrYellow);
IndicatorSetInteger(INDICATOR_LEVELCOLOR,2,clrLime);

//(4)レベル線の太さを指定する
IndicatorSetInteger(INDICATOR_LEVELWIDTH,0,1);
IndicatorSetInteger(INDICATOR_LEVELWIDTH,1,3);
IndicatorSetInteger(INDICATOR_LEVELWIDTH,2,3);

//(5)レベル線の種類を指定する
IndicatorSetInteger(INDICATOR_LEVELSTYLE,0,STYLE_DOT);
IndicatorSetInteger(INDICATOR_LEVELSTYLE,1,STYLE_SOLID);
IndicatorSetInteger(INDICATOR_LEVELSTYLE,2,STYLE_DASHDOTDOT);

(1)はレベル線を何本指定するかを表します。ここに指定した数以上のものを以下の関数で書いても表示されません。

(2)はレベルの数字の指定です。最初の線の順番は0番目になります。

(3)(4)(5)は省略可能です。省略するとデフォルトのsilver、太さ1,STYLE_DOTが適用されます。

関数で指定するメリット

・レベル線一本ずつ指定できる。

関数で指定するデメリット

・プログラムが複雑になる
・ユーザーが変更できない

レベル線を一本ずつ細かく指定できるので、より直感的にわかりやすいインジケーターになります。一方で、ユーザーがレベル線を増やそうとしても、反映されません。(時間足を変えただけで消えてしまいます)。また、プログラムコードが長くなります。サンプルコードでは、直接数字を関数内に埋め込んでいますが、実際は変数にしてinputで指定するのがプログラムの作法ですが、そうすると、

この部分が増えて面倒くさくなります。ここはインジケーター本体の変数をいれるべきところで、レベル線で複雑にしたくないところです。

ですので、どちらを採用するかは、プログラムの使われ方で判断してください。#propertyで指定するのは、他の人にも使ってもらうインジケーター用、関数で指定するのは自分専用などという感じです。

プログラムはこちらからダウンロードしてください

RSIに移動平均線を追加(#propertyでレベル線を指定)
RSIに移動平均線を追加(関数でレベル線を指定)

post

海外FXも狭スプレッドになった

今日もプログラムとは離れますが、今日FBSで取引をしようと思ってMT5を立ち上げてびっくり。

スプレッドが0.5pipsになっていました(EUR/USD・ユーロ/米ドルとUSD/JPY・米ドル/円)

(図をクリックするともとの大きさで見られます)

0.5pips(0.5銭)といったら、日本の会社とほとんど変わらない狭さです。ここまで狭かったら、1分足~5分足でスキャルピングもできます。海外FX会社のスプレッドが広いというのはもう昔の話なのかもしれません。しかもドル円がここまで狭いのは驚きです。もう、日本の会社を使う必要ないのではないでしょうかね。

ただ、一つだけFBSの難点は、入出金が米ドルかユーロでしかできないというところ(´;ω;`)せっかく取引で儲けても、出金のときにもう一回為替のレートがのるのです(笑)円安だったら損しちゃいますね。

post

ハイレバレッジが危険?

今回は余談になりますが、ハイレバレッジの取引は本当に危険なのか?ということを考えてみたいと思います。もしかしたら私の認識が間違っているかもしれないので、ご教示いただけると嬉しいかも。

海外ハイレバレッジFXブローカー

日本でFXの口座を開くと、レバレッジは個人では25倍、法人も厳しくなって今は50倍程度です。これが、海外FXの口座を開くと888倍(XM)や1000~3000倍(FBS)といった、日本とはかけ離れた大きなレバレッジを使えるブローカーが数多く存在します。

FXの書籍や雑誌を見ると、判で押したように「ハイレバレッジは危険」だという記述があります。しかし、執筆者が本当に理解して書いているのか?単に周囲がそういうから同じことを書いているだけなんじゃないかという疑問がどうしても拭えません。そこで今まで私が理解してる範囲でレバレッジについて書いてみようと思います。

レバレッジについて考える

たとえばUSD/JPY(米ドル/円)で1万通貨のトレードをすることを考えます。現在1ドルが112円台(平成31年1月3日)ですので、ざっくりと1ドル100円だとします。もし、レバレッジをかけないでトレードを行うのであれば、証拠金は100万円必要になります。レバレッジが25倍だと証拠金は4万円、50倍で2万円となります。これが国内FX会社の個人、法人アカウントの一般的なレバレッジになります。では、ハイレバレッジの会社で500倍、888倍、1000倍、3000倍のレバレッジでトレードをするならば、証拠金はいくら必要でしょうか?それぞれ2000円、1126円、1000円、333円!となります。1万通貨トレードをするのに必要な証拠金はわずかに300円ちょっと。吉野家の牛丼の並盛り以下の資金で、1万通貨のトレードができるのです。

ハイレバレッジが危険だという根拠

では実際に333円で10000通貨をトレードしたとしましょう。1万通貨なので、1円円安に向かえばロングポジションを持っていれば1万円の利益、ショートポジションを持っていたら1万円の損失となります。333円では簡単にロスカットです。333円の証拠金で耐えられるのは、わずかに3.3銭の損失です。ほんのちょっと逆行しただけでアウトです。だからハイレバレッジは危険だというのが、ハイレバレッジ危険論者の根拠なのだと思うのですがどうでしょう?

そりゃ、レバレッジの限界までかけて投資したら危険でしょう。でも、必ずレバレッジの限界までポジションをもたなければならないという決まりなんてないんです。

レバレッジは高いほうが安全?

例えば、レバレッジ3000倍で1万通貨のトレードをするとします。ただし、証拠金は4万円用意します。そう、25倍のレバレッジと同じです。そうしたらどうでしょうか?1円の逆行で被る損失が1万円であるのは25倍でも3000倍でも同じなんです。それだけではありません。もし、4万円で1万通貨のドルを買うと証拠金維持率がほぼ100%になります。ここでもし1万円の損失を出したとします。そうすると残りは3万円になります。次、1万円通貨を買おうとするとレバレッジ25倍だと証拠金維持率が75%になります。証拠金維持率75%というとマージンコールにひっかかったり、強制ロスカットになるレベルです。もしかしたらポジションを持てない可能性があります。一方で、3000倍のレバレッジなら3万円残っていれば10000%の証拠金維持率があるわけで、同じようにトレードが続けられるのです。1万円の損失で追加入金が必要なのと、必要ないのと果たしてどちらが安全ですか?

それでもまだハイレバレッジが危険だという人には、こういうのはどうでしょうか?

更に、海外FXブローカーが有利な点

証拠金維持率が規定以上に下がると、マージンコールという警告が出たり、強制ロスカットにされたりと書きましたが、実はそれではすまないことがあります。レートが徐々に動いて損失が少しずつ膨らみ、マージンコール→強制ロスカットと進むならばまだいいのですが、突如としてレートが大きく動くことがあります。近年ではスイスフランショックが記憶に新しいのではないでしょうか?このときは、為替のレートが飛んでしまったために、通常よりはるか離れたところで約定?してしまい、数百、数千万円のマイナスを負った人もいました(儲けた人もいますが)。さてここで、国内のFX会社ですと、強制ロスカットしても足りない分は追証といって、追加の資金求められます。これが数百、数千万円になったということです。そのために自己破産を余儀なくされた人もいます。しかし、海外FXブローカーではこのようなことはありません。損失は証拠金の分だけに抑えられます。ですから、口座にはできるだけ少ない金額を用意しておけば、たとえロスカットで持って行かれたとしても、入金した分に損失は抑えられます。参考

これでもまだ海外FXのハイレバレッジは危険ですか?

海外FXが不利な点

とはいえ、手放しで海外FX会社をおすすめできるわけでもありません。中には危ないところもあるでしょう。時折、出金拒否などのトラブルを聞くこともあります。ですから、信頼できる会社を選ぶ事が必要です。その中では利用者の多いXMや、私の使ってるFBSは今のところ安心です。

海外FXのスプレッド

もう一つ不利な点と言えば、全般的に海外FXのスプレッドは広めです。特に米ドル円はどの日本の会社より広いでしょう。しかしEUR/USD(ユーロドル)やEUR/JPY(ユーロ円)はほとんど変わらないか、ユーロ円に限っては日本の会社より狭いスプレッドのところもあります。米ドル円でガンガンスキャルピングをするのはちょっと苦しいですが、他の通貨ならそんなに差はない印象です。

それどころか、日本の某社は業界最狭スプレッドを謳っていますが、一日の内なんどもスプレッドを広げます。普段は0.3銭と言っていますが、しばしば2銭以上の広いスプレッドになります。むしろ海外より広いくらい。深夜なんて0.3銭の時間帯の方が少ないんじゃないの?って言えるほどです。それってどうなん?と思いますよ。私は何度かEA(自動売買)でスプレッド操作で損をさせられたこともあって、あそこだけは二度と使うまいと思っています。