FXやその他投資についてのつれづれです
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
こんにちは。(*'-')
2週間ぶりに仕事が休めたので久々にMT4いじりました(;'-') さて、今回のEA改造はというと 121証券みたいに20Pip以内の指値ができない対応として 注文も決済も成行でできるように改造しましたよ これができると、1Pipの利益でも決済することができて高い勝率を 期待するのです(・∀・) ソースファイルはこちら→ダウンロード(mq4) ソースの解説は・・・ 今回いじりすぎて、どこが変わったか忘れちゃったからなし!(・∀・) けっこう大変だったんですよ。今回ヽ(´Д`;)ノ だから今回なし! というわけでいつものパラメータでまずはバックテストを(・∀・) いつもの曲線とほぼ同じ曲線が出ていますね(*'-')b でもこれ、1000ドル近く低いんですよねぇ・・・ まあ、細かいことは気にしない!(・∀・) さて次は本命の1Pip取りいってみましょうか なんという右肩下がり(´・ω・`) 中身を細かく見てみると、典型的な小利損大状態でした。 頭で考えるのと現実はなかなか一致しないものですね(*'-') PR
こんばんは(*'-')
1月での投資信託結果報告です
あらら。見事にマイナス運用 金額ベースでもかなりのマイナスです(;'-') 国際債権の中には、米ドルMMFとかも混じっているんですけど 今の利率だとレバ1倍でFXやってるようなもんですねぇ(´・ω・`)
こんばんは(*'-')
今回はEAによくついている機能のマネーマネージメント(MM)を追加してみました。 あとは、マジックナンバーを判定して自分のエントリーだけを操作するようにしてみましたよ(・∀・) 対応したソースはこちら→ダウンロード(mq4) MM機能の実現にむけて、いくつかフリーで出ているEAを調べてみました。 いくつかのEAでは、口座残高に対していくつレバッジをかけるかでロット数を 決定していたので、私もそれで実装してみましたよ。 上から順に変更部分の解説 まずは外部パラメータの追加です --------------------------------------------------- // マジックNo extern int iMagicNo = 307004; //マネーマネージメント用 extern bool bMM = false; extern int iRisk = 1; extern double dVs_Usd = 0.01; extern double dMax_Lots = 50.0; extern double dMin_Lots = 0.1; --------------------------------------------------- マジックNoは、「このEAが出した注文はこれですよ」ってのを特定するID みたいなものですね。これを判定して自分が出した注文か特定するようにします(・∀・) MM用としては、まずMM機能を使うかどうかのフラグをbMMとして宣言します つきのiRiskは、1万ドルに対してレバッジをいくつにするかの数値です 口座残高が1万ドルでiRiskが1のときに0.1ロットの注文をだすんですね。 dVs_Usdってのは・・・私は121証券に口座があって、そこでは円口座なわけです でも、MT4対応の業者は海外でドル建ての口座になるので、ロジック変更無しで 対応したいなと思って追加しました。1ドルに対しての比率を入れます。 円建て口座の場合は0.01くらいにしておくと、100万円で0.1ロットになるようにします また、ドル建て口座の場合は1にしておきます dMax_Lotsと、dMin_Lotsはそれぞれ名前のとおり、これ以上(以下)になったら そこまでに収めるための値です 次に、計算したロット数を格納するを内部変数にします --------------------------------------------------- //ロット数(実態) double dEntry_Lots=0.1; --------------------------------------------------- MMで計算したロット数を格納します。 詳しくはロジックで('∇') MM機能を呼び出すロジックの追加です --------------------------------------------------- //ロット数の計算 MM(); --------------------------------------------------- まあ、関数の名前のセンスはあれですが、MM自体を関数化したのでねw 注文時のパラメータ変更 --------------------------------------------------- OrderSend(Symbol(), OP_BUYSTOP, dEntry_Lots, Ask + dEntryPip, iSlip, dStopOrder, dLimitOrder, "売り注文", iMagicNo, 0, CLR_NONE); --------------------------------------------------- ここで外部パラメータのiMagicNoを使用します。 また、dLotsからdEntry_Lotsへ変更しています。 次にマジックNoでの判定を追加です --------------------------------------------------- bool bSelected = OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if(bSelected == true && OrderMagicNumber() == iMagicNo){ --------------------------------------------------- 注文を特定するロジック(トレーリングストップや、クローズ処理など) でOrderSelect後にOrderMagicNumber()と、注文を出したときのiMagicNo が一致するかどうか判定を追加しています 最後にMM機能の関数を追加です --------------------------------------------------- double MM(){ if(bMM == true){ dEntry_Lots = AccountEquity()*dVs_Usd/100000*iRisk; dEntry_Lots = MathMin(dMax_Lots,MathMax(dMin_Lots,dEntry_Lots)); dEntry_Lots = NormalizeDouble(dEntry_Lots,1); }else{ dEntry_Lots = dLots; } return(dEntry_Lots); } --------------------------------------------------- 関数の最初でMM機能を使うかどうか判定します。 使わなければ、外部パラメータのdLotsを使用します MMを使う場合、まずAccountEquity()で口座残高を取得します 口座残高をドルだとどれくらいになるかdVs_Usdで計算します。 あとはそれを10万で割って(1万ドルで0.1ロットになるように)からiRiskを掛ければ、 基本的なロット数が出てきます 2行目ではMathMaxを使って、計算して出た結果か、最小ロット数か大きいほうを出しています 口座残高が1万円とかだと0.001ロットになるので、そういう場合は0.1ロットになります 次にMathMinをつかって、最大ロット数と比較し、小さい方を出しています。 3行目では、計算で出すと0.113とかになってしまうので、小数第1位で 四捨五入しています で、結果をdEntry_Lotsに格納して、いざトレードのときのロット数にしているわけですね(・∀・) このEAでMM機能をONにしてiRisk を1に設定してバックテストしました 下の緑の線はロット数を意味してるのですが、後半で長くなっていますね 15000ドルを超えたところで見事に0.2ロットでエントリーしていますヽ( ゚∀゚)/ めでたく機能追加完了(・∀・) 次はどんな機能を追加しましょうかねぇ・・・(*'-')
こんにちは(*'-')
前回のエントリーで今まで作っていた定時時間売買EAはクロス円でしか 使えないことが判明しました(;'-') そんなわけでその対応です(・∀・) 対応したソースはこちら→ダウンロード(mq4) 変更した部分の解説です まずはdouble型でextern宣言していた エントリーするPipとリミットとストップ値を int型で宣言しなおしました(EAの起動パラメータですしね) ----------------------------------------------------- //エントリーするPip //extern double dEntryPip=0.2; extern int iEntryPip=20; //リミットとストップ値 //extern double dLimit=0.2; //extern double dStop=0.2; extern int iLimit=20; extern int iStop=20; ----------------------------------------------------- 元のdouble型の変数をextern宣言をはずして 宣言しなおしました ----------------------------------------------------- //エントリーするPip(実態) double dEntryPip=0.0; //リミットとストップ値(実態) double dLimit=0.0; double dStop=0.0; ----------------------------------------------------- で、init関数の中で、EAか稼動しているチャートの1Pipの単位と extern宣言した値を掛け算すると、期待通り20Pip分の数値が取れます ----------------------------------------------------- dEntryPip = iEntryPip * Point; dLimit = iLimit * Point; dStop = iStop * Point; ----------------------------------------------------- EAが稼動しているチャートの1Pipの単位はMT4の宣言済み変数のPoint ってやつに格納されています。ドル円なら0.01が、ユロドルなら0.0001が 入ってるのですね なんと、今回の修正はこれだけ!(・∀・) (初めからそう作っておけばこのエントリーいらないんじゃないか? というツッコミは無しで・・・(;'-')ダッテシラナカッタシ・・・) ちゃんと動くか検証として、ポン円の一番PFの高かったパラメータでテスト実施 ほらほら、ちゃんと同じような結果がでていますよヽ( ゚∀゚)/ さて、それでは本命のユロドルでバックテスト開始! はうあっΣ( ̄ロ ̄) なんとも見事な負けっぷりだ・・・ ま、まあユロドルとかにも対応できたのでOKですね(*'-')b
こんばんは(*'-')
前回のエントリーでオープンとクローズの時間を変更してPFがどう変化するのか 調べたので、今回はリミットとストップ、あとはトレール有り無しで結果がどうなるか 調べましたよ(・∀・) きになる結果はこちら→ダウンロード(xls) トレールありの結果の中で・・・ おおおおおおお!!Σ( ̄ロ ̄) PF1.16きたぞぉぉ!!!! このPF1.16を出したパラメータのグラフを見てみると・・・・ ・・・・(;'-') なんか後半の右肩下がりが気になるww ま、まあとりあえずデモ口座でフォワードでもしてみますかね(;'-') 調子に乗って、EURUSDを同じパラメータでしてみたら はぁ!?(;゜ロ゜) そうか。エントリーを0.1とかで指定してるから、ユロドルとかだと1000Pip単位で 注文だしてるんだ そんなの普通にひっかかるわけないな(´Д`;)ヾ てわけで、次回のブログネタ決定ですね(*'-') |
カレンダー
カウンター
プロフィール
投資は自己責任・自己判断で実施するようお願いいたします。
ここの情報を見て損失が発生しても責任は負えませんのでご注意してください
HN:
Aki
性別:
男性
最新コメント
[06/06 fxjol]
[02/18 FXに人生を賭ける男]
[01/01 Aki]
[01/01 Aki]
[12/31 FXに人生を賭ける男]
最新記事
ブログ内検索
最新トラックバック
アクセス解析
|