複利システムにする方法
今回は、米ドルの口座で米ドル通貨の取引(USDJPY や USDCAD など)において、口座残高に応じて取引額を決定するといった方法を紹介します。
①レバレッジをパラメータ化する
②ロット数の計算
③例外の処理
④オーダーに変数をはめ込む
まずは、①のレバレッジですが
これの変数を Leverage としておきましょうか。
入力する場所はもうお分かりですね。わからない方は完全自動売買への道のりで復習をしてください(^^;
extern int Leverage =10;
といった感じです。今回はレバレッジ10倍でやっていきましょう。
次に②。場所はオーダーの前辺りでよいのではと思います。
1万通貨刻みで取引するのでロット数は0.1刻みになります。
その計算がこちら。
double mantuka = AccountBalance() / 10000;
int baituka = mantuka * Leverage;
double lots = baituka * 0.1 ;
今回は変数の宣言と計算を同時におこなってますよ。
まずは、
残高を取引単位の1万で割り、小数の変数 mantuka に代入します。
次に、
mantuka にレバレッジをかけて、整数の変数 baituka に代入します。
ここで変数を整数にすることによって、計算された小数点以下の値を切り捨てることになります。
ここで、何万通貨取引するか決定しましたね。
最後に、
1万通貨は0.1ロットなので、baituka に 0.1 をかけて、小数の変数 lots に代入します。これでロット数がきまりました。
しかし、③です。
計算されたロット数が、最小未満だったり最大より大きかったりした場合、オーダーを受け付けてもらえません。
なので、今回は lots が0.1ロット以下の場合は0.1ロットで、1000ロット以上の場合は1000ロットで取引するようにしましょう。
if(lots<=0.1) lots=0.1;
if(lots>=1000) lots=1000;
こうしておけば、大丈夫ですね。
そして、最後に④です。
これはもう、お分かりだと思いますが、OrderSend のカッコ内のロットを指定する箇所に変数 lots と入力すればオッケーです。
これで、複利システムは出来上がりです。
これの応用では、日本円の口座での複利システムも可能です。
例えば、USDJPY の取引では、
double mantuka = AccountBalance() / (10000*(Ask));
としておけばよいかと思います。
さらに、テクニカル指標の指数によってレバレッジを変化させることも可能ですよね。
がんばって、良いロジックをみつけましょう!!
コメント (2)
はじめまして、M.Iと申します。
Dr.EAblogを見て日々MQL4の勉強に励んでいます、なかなか手ごわくて苦労しています。
こんな質問を受けていただけるのか分かりませんが、下記の件でお尋ねします。
メタトレーダー4を運用している証券会社ごとに一回に掛けられる最高Lots数が違うようです。
そこで、その会社の最高Lots数を取得するには、どのようなコードでプログラムすればよろしいのでしょうか?
ぜひ教えてください。
この件で、コードに「MODE_MAXLOT」を使うと、121証券もFXDDもおなじ25Lotsとなってしまいます。
実際は、121証券は30LotsまでOKです。
また、FXDDは50LotsまでOKです。
どちらもライブ口座です。
そのため、実際の運用時の一回に掛けられる最大Lots数をどのようなコードでプログラムしたらいいのかをご教授ください。
コメントではなくてすみません、いきなりな質問で申し訳けありません。
宜しくお願いしたします。
投稿者:井手口 満 |2009年10月11日 17:45
M.Iさん
こんにちわ!
ロットの最大値は、
MarketInfo(Symbol(),MODE_MAXLOT)
で取得できますよ^^
投稿者:慶次 |2009年10月11日 19:14


