無料でロボットをダウンロードする方法を見る
Twitter上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
ライブラリ

lot lib - MetaTrader 4のためのライブラリ

ビュー:
1223
評価:
(25)
パブリッシュ済み:
2016.05.25 11:38
アップデート済み:
2016.05.25 11:41
\MQL4\Include\
lot_lib.mqh (10.68 KB) ビュー
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

では、どれぐらいのリスクが自分に合っているかを考えましょう。答えがいっぱいありますが、正確な答えを出すのは難しいです。この問題を解決するために、lot_libライブラリを開発しました。

使い方:
- ダウンロードした lot_lib.mqhというファイルをMetaTrader\experts\include\フォルダに保存します。;
- EAには以下のコード行を追加します。:

// 最初には:
#include <lot_lib.mqh>
 
// init()関数に加えるのは:
lotlib_PrevLots = 0.0;  lotlib_PrevProfit = 0.0;
 
// 各注文ごとの前にstart()関数に加えるのは:
lotlib_OpenPriceLevel = Ask; // Ask価格の代わりに 
                             // エントリーの実数値 
lotlib_StopLossLevel = Ask-StopLoss*Point; 
// Ask価格の代わりにStopLoss*Point(損切りの 
// 実数値
 
// 未決済ポジションが決まればstart()関数に加えるのは
// のは:
lotlib_PrevLots = OrderLots();  lotlib_PrevProfit = OrderProfit();
- 注文が発注される際に、ロットサイズはLot()関数により求められます。つまり、ロットサイズを指定する変数の代わりにLot()を書きます;
- EAをコンパイルして使用できます。

注意: 同時に幾つかの未決済ポジションがある場合、変数otlib_PrevLotsと変数lotlib_PrevProfitに追加的に値を代入する必要があります。自分で代入する値を選択します。最後の決済ポジション、又は最後の未決済ポジションの値を選択できます。

外部変数:
- LotSizeVariant - ロットサイズを選択するバリアント番号;
- StartLot - 初期ロット (0から5までの番号を持つLotSizeVariantの為に);
- AddLot - ボリュームの増加 (1番号と2番号を持つLotSizeVariantの為に);
- KLot - 増加係数 (3番号と4番号を持つLotSizeVariantの為に);
- MaxRisk - 最大のリスク (5、6、11-17、31-37に設定されたLotSizeVariant);
- TrueProfitPoints - 利益の下の制限と損失の上の制限を表す値 (1、2、3、4に設定されたLotSizeVariant);
- BalanceUse - 使用される証拠金率。複数のEAを運用する場合、BalanceUseの値として100対EA数の割合を指定します。例えば、EAが3つあればBalanceUseの値は33となります。EAが4つあればBalanceUseの値は25となります。等々・・・(5、6、11-17、31-37に設定されたLotSizeVariant)。

LotSizeVariant:
0 - 変数StartLotに設定される一定のロットサイズ;
1 - 前のポジションが有利だった場合、利益がTrueProfitPointsを上回ります。ロットサイズをAddLot増やす、またはAddLotが0より小さいならばロットサイズをAddLot減らします。前のポジションが無益だった場合、StartLotが使用されます。;
2 - 前のポジションが無益である場合、ロットサイズをAddLot増やします。前のポジションが有利である場合、StartLotが設定されます。;
3 - 前のポジションが有利だった場合、利益がTrueProfitPointsを上回ります。ロットサイズをAddLot倍に増やします。前のポジションが無益である場合、StartLotが設定されます。;
4 - 前のポジションが無益である場合、ロットサイズをAddLot倍に増やします。前のポジションが有利である場合、StartLotが設定されます。;
5 - 未決済ポジションの合計最大リスクがMaxRiskに等しくなるようにロットサイズを定めます。;
6 - ロットサイズとして証拠金率を設定します。ロットサイズは変数MaxRiskにより管理されることになります。例えば、1000ドルを証拠金にして、MaxRiskに10を指定すれば、ユーロドルを0.1ロット取引します。15000ドルを証拠金にして、MaxRiskに5を指定すれば、ユーロドルを0.8ロット取引します。
7 - ロットサイズは証拠金残高の1パーセントと最後の20本足における値動きの平均振幅の割合に0.4を掛けて求められます。どこで見つけたのかも覚えていません。;

11-17 - 1~7の計算アルゴリズムと同じだけど、ロットサイズが5件により制限されます(未決済ポジションの合計最大リスクがMaxRiskに等しくなるようにロットサイズを定める)。;
21-27 - 1~7の計算アルゴリズムと同じだけど、ロットサイズの減少が不可能です。;
31-37 - 1~7の計算アルゴリズムと同じだけど、ロットサイズが5件により制限されますし、ロットサイズの減少が不可能です。つまり、ロットサイズが5件により制限される値より大きくなると、これは5件により制限される値まで減らされますが、ロットサイズが5件により制限される値より小さいならば、これは前に出した値に等しくさせます。;

100-128 - バリアントの組み合わせ(最適化に役立つ):
100 - 0
101 - 1 108 - 11 115 - 21 122 - 31
102 - 2 109 - 12 115 - 22 123 - 32
103 - 3 110 - 13 117 - 23 124 - 33
104 - 4 111 - 14 118 - 24 125 - 34
105 - 5 112 - 15 119 - 25 126 - 35
106 - 6 113 - 16 120 - 26 127 - 36
107 - 7 114 - 17 121 - 27 128 - 37

事前設定:

//---- ロットがMIN_LOTより小さくならない
#define MIN_LOT            0.1
//---- ロットがMAX_LOTより大きくならない
#define MAX_LOT            100
//---- エラーが発生した場合に 
//---- この関数は 
//     DEFAULT_LOTを返す
#define DEFAULT_LOT        -1


使用例:
MACD Sampleをつけて、損切りを設定して、このライブラリを統合しました。その後で、LotSizeVariantを色々切り替えてテストしてみました。通貨ペアとしてユーロドルを選び、時間軸として1時間足を使いました。のバックテスト期間を2001年1月1日~2005年8月1日にしました。モデル化の質を90%に設定して「全ティック」モデルでバックテストを行いました。

この図では、幾つかの結果の例が表示されます。私なら、パラメータの最適化を行いませんでした。※図1は一定のロットサイズを示しています。

MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/7749

ZH_Dynamic_Arrays_Lib ZH_Dynamic_Arrays_Lib

動的配列をエミュレーションするための関数のセットです。

Rotating text objects Rotating text objects

オブジェクト操作のサンプル: オブジェクトの生成、プロパティの修正、チャートの再描写。

Gap indicator Gap indicator

このインディケータは、前のローソク足の終値と現在ローソク足の始値の間隔を表示します。

ADXdon ADXdon

インディケータADXdon。インディケータADXのもう一つのバージョンです。トレンドの強さを表示します。