システムトレード研究所 〜FXで完全自動売買〜

このサイトでは、FXで完全自動売買を行うために必要な情報を書いていこうと思っています。システムを自分で作りたい方、システムトレードをやってみたい方は御覧になっていって下さい。
<< オリジナル関数の作り方 | main | 複数のシステムによる自動売買の仕方 >>
不具合の説明
 今回は、複数のシステムによる自動売買の仕方だったのですが、前回のOpen prices onlyの時に起こる不具合について分からないとメールを頂きましたので、もう少し詳しく説明してみます。


 この不具合は、売買タイミングの条件が細かいシステムをOpen priceのモードでバックテストするとおきる不具合のようです。

 ゴールデンクロス、デッドクロスなどの売買条件を使ったシステムが当てはまることが多いです。

 かなりややこしいのであまり簡単に説明は出来ないのですが、なんとか例えを出しながら説明してみます。


 前回のMACDのシステムの売買ルールは、一時間前のMACDのメインがシグナルより低いのが条件で、現在のMACDのメインがシグナルより高いのが条件なのですが、Open priceにすると、条件が成立した時間によっては例え条件が成立していても売買されなくなります。

 何故かと言うと、start関数が呼び出される頻度に問題があります。

 例を出すと、1時に条件が不成立で、1時半に条件が成立したとします。

 1時の段階では、一時間前の足のMACDと現在の足のMACD両方ともメインの方が低いです。

 1時半の段階では、一時間前の足のMACDはメインの方が低くて、現在の足のMACDはクロスしてメインの方が高くなり、条件成立ですが、start関数が呼び出されないため、まだ売買処理はされません。

 2時になって足が変わってからstart関数が呼び出されましたが、その時点では一時間前の足のMACDと現在の足のMACDの両方ともメインの方が高くなっていて、条件不成立になります。


 ややこしいと思いますので、もう少し説明を付け加えると、start関数が呼び出された時点での現在の足はほとんど出来ていないので、start関数が呼び出された現在の足と一時間後から見た一時間前の足が異なるものになるのが原因です。

 売買ルールから一時間前にメインがシグナルより低いという条件を無くし、「メインがシグナルを上回ったら」だけにすれば問題がなくなるのですが、それだとストップロスとリミットをつけ、決済された場合にまだメインがシグナルを上回っていたら、決済したその場で買いポジションを持たされます。

 適当に何か条件をつけてこの状態を回避する方法もありますので、色々と試してみるのも経験になって良いと思いますよ。


 最後に、リアル売買や他の二つのバックテストのモードでは、この不具合は起きません。

 リアル売買とバックテストの他の二つのモードは頻繁にstart関数が呼び出されますので、クロスした瞬間に売買されるからです。

 インジケーターのクロスする系のシステムを作る場合は忘れずに覚えておいたほうが良いですね。


 

 宜しかったら、応援して下さい



システムトレード研究所〜FXで完全自動売買〜INDEXへ


----------------------注意----------------------
 内容には注意を払っていますが、保障は出来ません。
 実際に運用する場合は、自己責任でお願いします。
| 小松 | MetaTrader4 プログラム初級編 | 22:04 | comments(0) | - |









   1234
567891011
12131415161718
19202122232425
262728293031 
<< March 2017 >>



このページの先頭へ