SLと口座リスクに基づいたマネーマネジメントのLOTサイズ計算式が必要! - ページ 2 1234 新しいコメント Proximus 2013.12.23 17:36 #11 maleas_k: もし私が質問を正しく理解していれば、これはあなたのために仕事をすることになります。 double free = AccountFreeMargin(); double potencial_loss, double sum_potencial_loss = 0 (ダブル・サムポテンシャル・ロス = 0) double pips, lot_size; double percent_depo = 5; potencial_loss = (OrderLots() * (OrderOpenPrice() - OrderStopLoss()))*100000; sum_potencial_loss = long_sum_potencial_loss + long_potencial_loss; lot_size = (((free-long_sum_potencial_loss) * percent_depo)/100.0)/pips)/100000 ; ありがとうございます。しかし、私はすでに式を持っている、私はUSDではなく、EUR口座を持っているので、私はちょうどポイントの値を 修正する必要があります。 extern double MYSTOPLOSS = 50; // CUSTOM SL SIZE IN PIPS AFTER THE STOPLEVEL extern double RISK =2; // 2% ACCOUNT RISK double LOT =(AccountEquity()*RISK)/(100*(MarketInfo(Symbol(),MODE_STOPLEVEL)+MYSTOPLOSS)* Point *100000 ); そして、私はTICKVALUE* TICKSIZEでポイントを置き換える必要があるので、それは次のようになります。 extern double MYSTOPLOSS = 50; // CUSTOM SL SIZE IN PIPS AFTER THE STOPLEVEL extern double RISK =2; // 2% ACCOUNT RISK double LOT =(AccountEquity()*RISK)/(100*(MarketInfo(Symbol(),MODE_STOPLEVEL)+MYSTOPLOSS)* MarketInfo(Symbol(), MODE_TICKVALUE)* MarketInfo(Symbol(), MODE_TICKSIZE) *100000 ); このアイデアが正しいことを確認できる人がいれば、問題は解決するのだと思います。 Konstantinos Maleas 2013.12.23 18:59 #12 RaptorUK: あなたのコードを削除しました .. . . ご協力ありがとうございました。 Konstantinos Maleas 2013.12.23 19:11 #13 Proximus: ありがとうございます、しかし私はすでに数式を持っています、私はUSDではなくEURアカウントを持っているので、私はポイントの値を修正する必要があります。 そして、私はポイントをTICKVALUE* TICKSIZEに置き換える必要があり、それは次のようになります。 このアイデアが正しいことを確認できる人がいれば、問題は解決されると思います。ですから、早く私を助けてください。 私はそれを確認することはできませんが、私はこのようにAlert();でそれをデバッグすることをお勧めします? Alert("LOT : ",LOT); または Alert("AccountEquity : ",(AccountEquity()," RISK : " ,RISK," MODE_STOPLEVEL : ", MODE_STOPLEVEL," MYSTOPLOSS : ",MYSTOPLOSS," MODE_TICKVALUE : " ,MODE_TICKVALUE," MODE_TICKSIZE : ,MODE_TICKSIZE); そして、自分で確認するのです。 Simon Gniadkowski 2013.12.23 19:35 #14 maleas_k: ご協力ありがとうございました。 編集していただきありがとうございます Proximus 2013.12.25 00:24 #15 maleas_k: 確認はできませんが、このようにAlert();でデバッグすることをお勧めします。 または と、自分で確認することになります。 いいえ、私が意味するのは、それが正しいTICKVALUE * TICKSIZEまたはWHRoederが提案したようにTICKVALUE / TICKSIZEを使用することです、*はより論理的に見えるので、そこに。 William Roeder 2013.12.25 01:05 #16 Proximus: WTF guys, shouldnt that be TICKVALUE * TICKSIZE instead of TICKVALUE /TICKSIZE ? I think there is a big mistake there double LOT =(AccountEquity()*RISK)/(100*(MarketInfo(Symbol(),MODE_STOPLEVEL)+MYSTOPLOSS)* Point *100000 ); 例えばUSD口座の通貨でEURUSDの場合。 TickValueが$10でTicksize=0.0001の場合。ここで、マーケットが0.0020動くと、その値は$10/0.0001 * 0.0020=$200 / per lotとなります。1ピップあたり$10 * 20ピップ / 1ロットです。 TickValueが$1、Ticksizeが0.00001の場合。そこで、もし市場が0.0020動いたら、値は$1/0.00001 * 0.0020=$200 / per lotになります。これは間違いではありません。 100 * stoploss、StopLevel、Point * 10000など、あなたの 計算式がインチキな のです。私の元の式を読み直し、ロットサイズについて解く Michele Lazzarini 2013.12.25 10:19 #17 OK、これが(最大)VOLUME SIZE CALCULATIONの ステップに なるはずです。 (間違っていたら訂正してください ^_^) AccountMoneyRisk = AccountMoney * Risk% AccountCounterQuote = Quote(AccountCurrency/CounterCurrency) カウンターカレンシーリスク = AccountMoneyRisk * AccountCounterQuote PipValue = CounterCurrencyRisk / StopLoss LotTickValue = LotSize * TickSize 数量 = PipValue * LotTickValue 例 AccountCurrency:EUR 通貨ペア: GBPUSD ベースカレンシー: GBPUSDGBP カウンターカレンシードル アカウントマネー:5000 EUR リスク:1 ストップロス:200 pips(カウンター・カレンシー) ロットサイズ:100000(カウンター・カレンシー) ティックサイズ: 0.00001 アカウントマネーリスク = アカウントマネー * リスク% = 5000 EUR * 1% = 50 EUR AccountCounterQuote = Quote(AccountCurrency/CounterCurrency) = Quote(EUR/USD) = 1.5000 CounterCurrencyRisk = AccountMoneyRisk * AccountCounterQuote = 50 EUR * 1.5000 = 75 USD PipValue = CounterCurrencyRisk / StopLoss = 75 / 200 = 0.375 LotTickValue = LotSize * TickSize = 100000 * 0.00001 = 1 USD ボリューム = PipValue * LotTickValue = 0.375 * 1 USD = 0.375 Need moneymanagement LOT size William Roeder 2013.12.25 12:36 #18 これは、CounterCurrency が AccountCurrency と同じであると仮定し 、 スプレッドを含まず、 5 桁のブローカーで pip == a point、 ticksize == point と誤って仮定しているものです。 必ずしもそうとは限りません。Account Balance * percent = RISK = (OrderOpenPrice - OrderStopLoss)*DIR * OrderLots *DeltaPerlot(Note OOP-OSL includes the SPREAD) Proximus 2014.01.08 09:26 #19 OK これは最終バージョンです。これが正しいかどうか確認してください。これは私のロットサイジング機能 です。extern int STOPSLIP=20; extern double RISK=0.5; double LOT() { double clot=(AccountEquity()*RISK)/(100*(MarketInfo(Symbol(),MODE_STOPLEVEL)+MarketInfo(Symbol(),MODE_SPREAD)+STOPSLIP)* MarketInfo(Symbol(),MODE_TICKVALUE)*MarketInfo(Symbol(),MODE_TICKSIZE) *100000 ); if(clot<MarketInfo(Symbol(),MODE_MINLOT)) clot=MarketInfo(Symbol(),MODE_MINLOT); if(clot>MarketInfo(Symbol(),MODE_MAXLOT)) clot=MarketInfo(Symbol(),MODE_MAXLOT); return (clot); } STOPSLIPは、現在のstoplevel+SPREADにX量のpipsを追加します。 私がTICKVALUE * TICKSIZEを使うのは、私がUSDではなくEUR口座を持っているからで、私の5桁のブローカーでは、EUR為替レートでカウントされるので、pipvalueは0.00001ではなく0.000007になるのは理にかなっています。 だから、誰かそれが正しいかどうか確認して ください、またはそれが正しくない場合は、私の式を 修正してください、私はそれらを理解していないので、他の記事へのリンクを与えることはありません、ちょうど私のLOT()関数を修正して、私はその後幸せになるでしょう、助けてください Keith Watford 2014.01.08 22:42 #20 double clot=(AccountEquity()*RISK)/(100*(MarketInfo(Symbol(),MODE_STOPLEVEL)+MarketInfo(Symbol(),MODE_SPREAD)+STOPSLIP) * MarketInfo(Symbol(),MODE_TICKVALUE)*MarketInfo(Symbol(),MODE_TICKSIZE) *100000 ); これでは、括弧を計算するだけで頭が痛くなりますね。 正直なところ、あなたがここで達成しようとしていることが何なのか、私にはまったくわかりません。 MODE_STOPLEVELやSPREADがどのように関連しているのかがわかりません。 TICKVALUEは口座の通貨で表示されるので、口座の通貨は 関係なく、計算は同じになるはずです。 なお、コードの行を2行にすることで、投稿の幅が狭くなり、右や左にスクロールすることなく読みやすくなります :) 1234 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
もし私が質問を正しく理解していれば、これはあなたのために仕事をすることになります。
double free = AccountFreeMargin();
double potencial_loss,
double sum_potencial_loss = 0 (ダブル・サムポテンシャル・ロス = 0)
double pips, lot_size;
double percent_depo = 5;
potencial_loss = (OrderLots() * (OrderOpenPrice() - OrderStopLoss()))*100000;
sum_potencial_loss = long_sum_potencial_loss + long_potencial_loss;
lot_size = (((free-long_sum_potencial_loss) * percent_depo)/100.0)/pips)/100000 ;
ありがとうございます。しかし、私はすでに式を持っている、私はUSDではなく、EUR口座を持っているので、私はちょうどポイントの値を 修正する必要があります。
そして、私はTICKVALUE* TICKSIZEでポイントを置き換える必要があるので、それは次のようになります。
このアイデアが正しいことを確認できる人がいれば、問題は解決するのだと思います。
あなたのコードを削除しました .. . .
ご協力ありがとうございました。
ありがとうございます、しかし私はすでに数式を持っています、私はUSDではなくEURアカウントを持っているので、私はポイントの値を修正する必要があります。
そして、私はポイントをTICKVALUE* TICKSIZEに置き換える必要があり、それは次のようになります。
このアイデアが正しいことを確認できる人がいれば、問題は解決されると思います。ですから、早く私を助けてください。
私はそれを確認することはできませんが、私はこのようにAlert();でそれをデバッグすることをお勧めします?
または
そして、自分で確認するのです。
ご協力ありがとうございました。
確認はできませんが、このようにAlert();でデバッグすることをお勧めします。
または
と、自分で確認することになります。
いいえ、私が意味するのは、それが正しいTICKVALUE * TICKSIZEまたはWHRoederが提案したようにTICKVALUE / TICKSIZEを使用することです、*はより論理的に見えるので、そこに。
Proximus: WTF guys, shouldnt that be TICKVALUE * TICKSIZE instead of TICKVALUE /TICKSIZE ? I think there is a big mistake there
TickValueが$10でTicksize=0.0001の場合。ここで、マーケットが0.0020動くと、その値は$10/0.0001 * 0.0020=$200 / per lotとなります。1ピップあたり$10 * 20ピップ / 1ロットです。
TickValueが$1、Ticksizeが0.00001の場合。そこで、もし市場が0.0020動いたら、値は$1/0.00001 * 0.0020=$200 / per lotになります。これは間違いではありません。
OK、これが(最大)VOLUME SIZE CALCULATIONの ステップに なるはずです。
(間違っていたら訂正してください ^_^)
AccountMoneyRisk = AccountMoney * Risk%
AccountCounterQuote = Quote(AccountCurrency/CounterCurrency)
カウンターカレンシーリスク = AccountMoneyRisk * AccountCounterQuote
PipValue = CounterCurrencyRisk / StopLoss
LotTickValue = LotSize * TickSize
数量 = PipValue * LotTickValue
例
AccountCurrency:EUR
通貨ペア: GBPUSD
ベースカレンシー: GBPUSDGBP
カウンターカレンシードル
アカウントマネー:5000 EUR
リスク:1
ストップロス:200 pips(カウンター・カレンシー)
ロットサイズ:100000(カウンター・カレンシー)
ティックサイズ: 0.00001
アカウントマネーリスク = アカウントマネー * リスク% = 5000 EUR * 1% = 50 EUR
AccountCounterQuote = Quote(AccountCurrency/CounterCurrency) = Quote(EUR/USD) = 1.5000
CounterCurrencyRisk = AccountMoneyRisk * AccountCounterQuote = 50 EUR * 1.5000 = 75 USD
PipValue = CounterCurrencyRisk / StopLoss = 75 / 200 = 0.375
LotTickValue = LotSize * TickSize = 100000 * 0.00001 = 1 USD
ボリューム = PipValue * LotTickValue = 0.375 * 1 USD = 0.375
これは、CounterCurrency が AccountCurrency と同じであると仮定し 、 スプレッドを含まず、 5 桁のブローカーで pip == a point、 ticksize == point と誤って仮定しているものです。
必ずしもそうとは限りません。Account Balance * percent = RISK = (OrderOpenPrice - OrderStopLoss)*DIR * OrderLots *DeltaPerlot(Note OOP-OSL includes the SPREAD)
OK これは最終バージョンです。これが正しいかどうか確認してください。
これは私のロットサイジング機能 です。
- STOPSLIPは、現在のstoplevel+SPREADにX量のpipsを追加します。
- 私がTICKVALUE * TICKSIZEを使うのは、私がUSDではなくEUR口座を持っているからで、私の5桁のブローカーでは、EUR為替レートでカウントされるので、pipvalueは0.00001ではなく0.000007になるのは理にかなっています。
だから、誰かそれが正しいかどうか確認して ください、またはそれが正しくない場合は、私の式を 修正してください、私はそれらを理解していないので、他の記事へのリンクを与えることはありません、ちょうど私のLOT()関数を修正して、私はその後幸せになるでしょう、助けてくださいこれでは、括弧を計算するだけで頭が痛くなりますね。
正直なところ、あなたがここで達成しようとしていることが何なのか、私にはまったくわかりません。
MODE_STOPLEVELやSPREADがどのように関連しているのかがわかりません。
TICKVALUEは口座の通貨で表示されるので、口座の通貨は 関係なく、計算は同じになるはずです。
なお、コードの行を2行にすることで、投稿の幅が狭くなり、右や左にスクロールすることなく読みやすくなります :)