時間軸確認のコードです。
こちらもOnInit()内で済ませてしまいたいですね。
M1かどうか確認するにはPeriod()関数で確認するのですが、
M1は 1 もしくは列挙型の PERIOD_M1 のどちらでも大丈夫です。
1を使った方が速いので、OnTick()やOnTimer()内では列挙型PERIOD_M1を使わないようにしています。
OnInit()内ではわかりやすく列挙型PERIOD_M1を使用します。
if(Period()!=PERIOD_M1)
{
Comment("This period is M"+Period()+". Select M1.");
ExpertRemove();
return(INIT_FAILED);
}
#property strictうぃ宣言している時にはComment内のPeriod()の前に(string)を付け無いとコンパイル字に方が違うと警告が出てしまいます。
最近細かい処理をまとめていますが、
FX-ONでは特定の業者専用のEAの出品は禁止になりました。
何社か使えるようにする為にまとめています。
証券会社と共存しながら月利100%のEAを作ることは出来るでしょうか!
2018年4月19日木曜日
2018年4月17日火曜日
【初期処理】通貨ペアの選択 コード編
通貨ペアの選択の理想的なコードを考えてみました。
①OnInit()内で確認します。reuren()関数を使用する為int にしています。
②Symbols変数を宣言してStringToUpperで小文字を大文字に変換しています。
③変換したSymbols変数にUSDJPYが含まれているかどうかを確認します。
If文で頭文字6文字をチェックするコードが多くありますがたまに _USDJPY といった通貨ペアもありますのでStringFindで確認しています。
④コメントを表示してExpertRemove()でEAを強制終了します。
⑤念のためreturn(INIT_FAILED);をいれています。
ゴチャゴチャといろいろ確認していますが、OnInit()関数内はどれだけ重くなっても取引には関係が無いのでいいと考えます。
また、④でコメント表示しています。これをするとコメントがチャートに残ってしまうのでPrintするのも一手ですが、チャートに表示したほうが認識性が高いのでこちらにしています。
int OnInit()
{
string Symbols=Symbol();
if(StringToUpper(Symbols)&&StringFind(Symbols,"USDJPY")==-1)
{
Comment("Check Pair! Select USDJPY");
ExpertRemove();
return(INIT_FAILED);}
return(INIT_SUCCEEDED);
}
①OnInit()内で確認します。reuren()関数を使用する為int にしています。
②Symbols変数を宣言してStringToUpperで小文字を大文字に変換しています。
③変換したSymbols変数にUSDJPYが含まれているかどうかを確認します。
If文で頭文字6文字をチェックするコードが多くありますがたまに _USDJPY といった通貨ペアもありますのでStringFindで確認しています。
④コメントを表示してExpertRemove()でEAを強制終了します。
⑤念のためreturn(INIT_FAILED);をいれています。
ゴチャゴチャといろいろ確認していますが、OnInit()関数内はどれだけ重くなっても取引には関係が無いのでいいと考えます。
また、④でコメント表示しています。これをするとコメントがチャートに残ってしまうのでPrintするのも一手ですが、チャートに表示したほうが認識性が高いのでこちらにしています。
int OnInit()
{
string Symbols=Symbol();
if(StringToUpper(Symbols)&&StringFind(Symbols,"USDJPY")==-1)
{
Comment("Check Pair! Select USDJPY");
ExpertRemove();
return(INIT_FAILED);}
return(INIT_SUCCEEDED);
}
【初期処理】通貨ペアの選択について
初期処理・通貨ペアの固定について備忘記・メモ的な物をまとめてみます。
EAのソースコードを見ていると、通貨ペアの固定をしているの物が多くあります。
TACA的にはどこにどんなコードがいいのか考えてみました。
①場所( OnInit() or OnTick() )どちらがいい?
EA起動する時にOnInit()処理をします。ここで通貨ペアの確認をしておけば、一回確認するだけで通貨ペアの確認ができます。OnTick()内に入れた場合ティックが動くたびに通貨ペアを確認する事になるので、速度的に不利になります。
気になるのは1点 途中で通貨ペアを変更した場合です。
そこで以下のソースで確認をします。
void OnInit(){Print("OnInit!");}
void OnTick(){}
OnInit()処理をされるたびにOnInitとエキスパートに記録が残ります。
USDJPYのチャートでこのコードを動かした後にEURUSDに通貨ペアを変更します。
通貨ペアを変更した時にもう一度イニシャライズされてOnInit()が動作するようです。
という事はOnInit()の中に通貨ペアの確認コードを入れておけばいいようですね。
2018年4月16日月曜日
EAの限界数
さーて ゴゴジャン(fx-on)を退社し、香港、マカオ、ボラカイにマニラと遊び惚けてきました。
知る人ぞ知るゲンティンのワールドドリーム号の度でした。
普通のクルーズ船にはカジノのテーブルが10~20あるのですが、あの船にはゲンティンのカジノとシンガポールのリゾートワールドのカジノが入っておりテーブルだけで100以上 ギャンブルクルーズ船のようでした。
帰国後EAを何十個か作成したのですが、驚くべき事象が起こりました。
MT4がEAを認識しません。
新しく作ったEAがナビゲーターウィンドウにもバックテストの選択にも出てきません。
数が多すぎるのかな?と考えEAを少し削除したところナビゲーターに出てきました。
そう、MT4にはEAの数に限界があるのです。
きっと開発したロシア人の想定外の数を作成しているのでしょうw
最近開発しているので面白いのがMA3とMA5の関係性やMA10とMA11の関係性などです。
そういえばMA3とMA5は石原J先生に林君それはゲームだよ♪と言われたことがありましたね。
上手くいけば近日公開するかもしれません!
知る人ぞ知るゲンティンのワールドドリーム号の度でした。
普通のクルーズ船にはカジノのテーブルが10~20あるのですが、あの船にはゲンティンのカジノとシンガポールのリゾートワールドのカジノが入っておりテーブルだけで100以上 ギャンブルクルーズ船のようでした。
帰国後EAを何十個か作成したのですが、驚くべき事象が起こりました。
MT4がEAを認識しません。
新しく作ったEAがナビゲーターウィンドウにもバックテストの選択にも出てきません。
数が多すぎるのかな?と考えEAを少し削除したところナビゲーターに出てきました。
そう、MT4にはEAの数に限界があるのです。
きっと開発したロシア人の想定外の数を作成しているのでしょうw
最近開発しているので面白いのがMA3とMA5の関係性やMA10とMA11の関係性などです。
そういえばMA3とMA5は石原J先生に林君それはゲームだよ♪と言われたことがありましたね。
上手くいけば近日公開するかもしれません!
2018年3月18日日曜日
MT4 終了処理deinit() VS OnDeinit()
旧終了処理deinit()とOnDeinit()を併記した場合どちらが優先されるのでしょうか
①上に書いた方
②両方
③新しいOnDeinit()
②だと応用できそうで面白いのですがどうでしょうか
以下のソースを作成しました。
void OnTick(){}
void deinit(){Print("deinit");}
void OnDeinit(){Print("OnDeinit");}
コンパイルするとwarningが出ました。const int reasonが足りのでしょうか
余談ですがこの文は面倒です。何とかならないものでしょうか
実行し終了処理を走らせてみます。
deinit()のみ動作しているようです。
上にあるからでしょうか?
void OnTick(){}
void OnDeinit(){Print("OnDeinit");}
void deinit(){Print("deinit");}
今度はOnDeinit()を上にしてみます。
コンパイルwarningは同じです。
またもdeinit()のみが動作します。
順番ではないようです。
void OnTick(){}
void OnDeinit(const int reason){Print("OnDeinit");}
void deinit(){Print("deinit");}
const int reasonを入れてみます。
こんどはerrorでコンパイルできません。
OnDeinit()が定義されている為deinit()は拒否されています。
void OnTick(){}
void deinit(){Print("deinit");}
void OnDeinit(const int reason){Print("OnDeinit");}
順番を逆にします。
今度はOnDeinit()が拒否されました。
上にある方が優先されるようです。
考えてみれば当たり前ですが・・・
①上に書いた方
②両方
③新しいOnDeinit()
②だと応用できそうで面白いのですがどうでしょうか
以下のソースを作成しました。
void OnTick(){}
void deinit(){Print("deinit");}
void OnDeinit(){Print("OnDeinit");}
余談ですがこの文は面倒です。何とかならないものでしょうか
実行し終了処理を走らせてみます。
deinit()のみ動作しているようです。
上にあるからでしょうか?
void OnTick(){}
void OnDeinit(){Print("OnDeinit");}
void deinit(){Print("deinit");}
今度はOnDeinit()を上にしてみます。
コンパイルwarningは同じです。
またもdeinit()のみが動作します。
順番ではないようです。
void OnTick(){}
void OnDeinit(const int reason){Print("OnDeinit");}
void deinit(){Print("deinit");}
const int reasonを入れてみます。
こんどはerrorでコンパイルできません。
OnDeinit()が定義されている為deinit()は拒否されています。
void OnTick(){}
void deinit(){Print("deinit");}
void OnDeinit(const int reason){Print("OnDeinit");}
順番を逆にします。
今度はOnDeinit()が拒否されました。
上にある方が優先されるようです。
考えてみれば当たり前ですが・・・
I Shall Return(0);
近況の変化とご報告!
先日、一目均衡表の細田先生と一杯飲んできました。
お気づきの人もいらっしゃるかもしれませんが、一目均衡表を使ったEAを開発したことがありません。三代目一目山人の細田先生より一目均衡表の原著を読んで理解してからにしてね~と固く言われているところが理由の一つです。
さ~て、ゴゴジャン(fx-on)に入社して約一年
なかなか忙しかったのですが三末で退社する事になりました。
退社後はMT4にどっぷりつかる生活に戻ろうと思います!
退社して変わるのは
①EAの出品が可能になる。
②アフィリエートもOKです。
③なまけ気味だったブログも頑張ろうかと思います。
人生一度キリ!!
楽しく生きてみようと思います!
2017年12月17日日曜日
EA Ver Meer
さーて二カ月ぶりのブログ更新です。
EA Ver Meer
いや読み方が違うと思った方は博識ですね。
さて今日はシンプルで稼げるEAを開発時間15分w
①RSIは30以下もしくは70以上で反転した時が効果的です。
②標準偏差が高い時こそトレイリングの出番です!
int R;
void OnTick(){if(OrdersTotal()){R = OrderSelect(0,0);
if(OrderStopLoss()<Ask-0.02){R=OrderModify(OrderTicket(),OrderOpenPrice(),Ask-0.02,0,0);}}
else{if(iStdDev("",5,10,0,MODE_EMA,0,1)<iStdDev("",5,10,0,MODE_EMA,0,0)&&iRSI("",1,14,0,0)<30&&iRSI("",1,14,0,1)<iRSI("",1,14,0,0))
{R = OrderSend("",OP_BUY,0.1,Ask,5,Ask-0.02,0);}}}
EA Ver Meer
いや読み方が違うと思った方は博識ですね。
さて今日はシンプルで稼げるEAを開発時間15分w
①RSIは30以下もしくは70以上で反転した時が効果的です。
②標準偏差が高い時こそトレイリングの出番です!
int R;
void OnTick(){if(OrdersTotal()){R = OrderSelect(0,0);
if(OrderStopLoss()<Ask-0.02){R=OrderModify(OrderTicket(),OrderOpenPrice(),Ask-0.02,0,0);}}
else{if(iStdDev("",5,10,0,MODE_EMA,0,1)<iStdDev("",5,10,0,MODE_EMA,0,0)&&iRSI("",1,14,0,0)<30&&iRSI("",1,14,0,1)<iRSI("",1,14,0,0))
{R = OrderSend("",OP_BUY,0.1,Ask,5,Ask-0.02,0);}}}
さーて結果はいかがでしょうか
チャンピオンデーターです。
相場の勢いがなくなるとだめですね。
標準偏差の上がり判定にもう少し差をつけるとよさそうです。
2017年10月14日土曜日
幻のEA SUNNY2
ある日、京都は三条大橋の上でそれは起こった。
空を見上げると月の10倍ほどの火球が飛んできた。
あるものは胸から携帯を取り出し、またあるものは黄色い歓声をあげていた。
2016年の夏の思い出である。
なぜか、その話は一切聞かれなくなった。
夢であったのだろうか。
しかし、その時に思いついたEAがある。
だから本当にあったことなんだろう
さて、星は不幸を呼ぶと言われる。
このEAもそんな不幸なEAだ。
名前はSUNNY 10万円で販売を予定していた。
しかし、色々な不幸があり販売できなかった。
あの夏の火球の様にだれもが忘れていたが
私の胸の中でコンセプトは生き続けた。
SUNNY2
期間3カ月 10万円 → 591万円
空を見上げると月の10倍ほどの火球が飛んできた。
あるものは胸から携帯を取り出し、またあるものは黄色い歓声をあげていた。
2016年の夏の思い出である。
なぜか、その話は一切聞かれなくなった。
夢であったのだろうか。
しかし、その時に思いついたEAがある。
だから本当にあったことなんだろう
さて、星は不幸を呼ぶと言われる。
このEAもそんな不幸なEAだ。
名前はSUNNY 10万円で販売を予定していた。
しかし、色々な不幸があり販売できなかった。
あの夏の火球の様にだれもが忘れていたが
私の胸の中でコンセプトは生き続けた。
SUNNY2
期間3カ月 10万円 → 591万円
AMSER 2 ちょいと実験中
就職をしてからかなりバタバタしていましたが、本日は久々に時間がありました。
ホントは撮影があったので出社しようと思っていたのですが・・・
AMSERの基本ロジックを活用して
今の相場に合わせチューンしています。
すこし、おとなしい感じになりましたがこんな感じです。



| 行ラベル | 合計 / Profit |
| 2015.01 | 9,828 |
| 2015.02 | 1,271 |
| 2015.03 | -14,210 |
| 2015.04 | 37,902 |
| 2015.05 | 31,641 |
| 2015.06 | 32,471 |
| 2015.07 | 39,760 |
| 2015.08 | 49,275 |
| 2015.09 | 10,374 |
| 2015.10 | 1,862 |
| 2015.11 | -14,719 |
| 2015.12 | 49,010 |
| 総計 | 234465 |
| 行ラベル | 合計 / profit |
| 2016.01 | 18,531 |
| 2016.02 | 41,367 |
| 2016.03 | 20,190 |
| 2016.04 | 40,264 |
| 2016.05 | 59,680 |
| 2016.06 | 136,990 |
| 2016.07 | 75,173 |
| 2016.08 | 109,098 |
| 2016.09 | -166,685 |
| 2016.10 | -32,371 |
| 2016.11 | 201,742 |
| 2016.12 | 40,034 |
| 総計 | 544013 |
| 行ラベル | 合計 / Profit |
| 2017.01 | -15,259 |
| 2017.02 | 27,261 |
| 2017.03 | 9,047 |
| 2017.04 | 17,007 |
| 2017.05 | -23,969 |
| 2017.06 | 109,426 |
| 2017.07 | 705 |
| 2017.08 | 31,666 |
| 2017.10 | 46,340 |
| 総計 | 202224 |
いろいろなEAを見ていると年間マイナス月が3カ月のものは優秀です。
売れるEAは4カ月以内のものがほとんどです。
2年と10カ月で10万⇒579万
う~ん・・・
ソースコードは・・・ 事件になるので非公開でごめんなさい。
因みに現在の私の技術でチューンすると更に高速化が出来ました。
わたしもしんかしているようですね(^^♪
う~ん・・・
ソースコードは・・・ 事件になるので非公開でごめんなさい。
因みに現在の私の技術でチューンすると更に高速化が出来ました。
わたしもしんかしているようですね(^^♪
OANDA LAB 記事掲載終了!
最近月一ブログになっておりましたが実は!
OANDA LABに記事を掲載しておりました。
全100話+アルファです!!!
https://www.oanda.jp/lab-education/fx_on/
秘密の裏技や、これOANDAさんに載せてもいいの?的なものまでいろいろとあります。
是非ご覧ください。
さーてその記事もいよいよ終了です。
テニヲハをなおしてくれたI様ありがとうございました!!
という事で、ブログと開発に専念したいと思います!!

OANDA LABに記事を掲載しておりました。
全100話+アルファです!!!
https://www.oanda.jp/lab-education/fx_on/
秘密の裏技や、これOANDAさんに載せてもいいの?的なものまでいろいろとあります。
是非ご覧ください。
さーてその記事もいよいよ終了です。
テニヲハをなおしてくれたI様ありがとうございました!!
という事で、ブログと開発に専念したいと思います!!

2017年10月1日日曜日
OANDAアービトラージチェッカーTY3
さーてー最近はOANDA社でいろいろとさせていただいております。
ブログがおろそかになっていますが、実はこんな記事を書いていたりします。
https://www.oanda.jp/lab-education/fx_on/%E4%B8%8A%E7%B4%9A%E8%80%85/3717/#senior
OANDA アービトラージチェッカー
OANDA TY3では5K,1M,3Mと三つの通貨ペアがあります。
通貨ペア表記では以下の三種類です。
USDJPY.oj5k
USDJPY.oj1m
USDJPY.oj3m
この三つの価格が別々に動きますので、
価格に差が出ます。
ここからは知恵の絞りどころです!
この価格差 たまにBid Ask逆転がありますが
逆転せずにこの差を取るには・・・
そう、皆様ピンときた方もいらっしゃるかもしれませんね!!
ムフフです。
ブログがおろそかになっていますが、実はこんな記事を書いていたりします。
https://www.oanda.jp/lab-education/fx_on/%E4%B8%8A%E7%B4%9A%E8%80%85/3717/#senior
OANDA アービトラージチェッカー
OANDA TY3では5K,1M,3Mと三つの通貨ペアがあります。
通貨ペア表記では以下の三種類です。
USDJPY.oj5k
USDJPY.oj1m
USDJPY.oj3m
この三つの価格が別々に動きますので、
価格に差が出ます。
ここからは知恵の絞りどころです!
この価格差 たまにBid Ask逆転がありますが
逆転せずにこの差を取るには・・・
そう、皆様ピンときた方もいらっしゃるかもしれませんね!!
ムフフです。
登録:
投稿 (Atom)








