SLと口座リスクに基づいたマネーマネジメントのLOTサイズ計算式が必要!

 

こんにちは、私はSTOPLOSSを含むことによって計算されたアカウントのリスク%に基づいてロットサイズを変更し、私のアカウントがユーロであることを考慮したコード/数式を必要としています。

私が持っているのはこれです。

extern double RISK=1;  //1% RISK
double LOT;

LOT = NormalizeDouble(AccountEquity()*RISK/10000,2);

しかし、これはストップロスを考慮していません。

そこで、google検索でこれを見つけた。

lot=NormalizeDouble(AccountBalance( )*MaximumRisk/StopLoss/(MarketInfo(Symbol(), MODE_TICKVALUE)),2);

そしてこれも

lot = Risk * AccountEquity() / MarketInfo(Symbol(), MODE_TICKVALUE) / Stop;

でも、どれもうまくいきません。どうか修正するか、もっと良いものを教えてください。

 
  1. 口座残高 * パーセント = RISK = (OrderOpenPrice - OrderStopLoss)*DIR * OrderLots *DeltaPerlot(Note OOP-OSL は SPREAD を含む)
  2. TickValue を単独で使用しないでください -DeltaPerlot
  3. ストップアウトを 避けるために、FreeMarginもチェックする必要があります。
 
   double Spread=MarketInfo(Symbol(),MODE_SPREAD)/Q;
   double Risk=(RiskPercent*AccountEquity())/100;//this means if your balance 1000$ & RiskPercent=10% >> you going to risk 100$
   double lot=Risk/((StopLoss+Spread)*MarketInfo(Symbol(),MODE_TICKVALUE)*Q);//Make Sure to Define Your StopLoss & Q=10 in 5 digits or Q=1 in 4 Digits 
 
yousefh: 私のDeltaPerlotの コメントを読んでください。ティック値を単独で使用しないでください。
 
yousefh:

申し訳ございませんが、よくありません。

WHRoeder です。
  1. 口座残高 * パーセント = RISK = (OrderOpenPrice - OrderStopLoss)*DIR * OrderLots *DeltaPerlot(Note OOP-OSL includes the SPREAD)
  2. TickValueを単独で使用しないでください -DeltaPerlot
  3. ストップアウトを 避けるために、FreeMarginもチェックする必要があります。

OK私はあなたのポイントを参照してください、だから私はリスク%を計算する方法私のロジックと計算は次のとおりです。


MQL4のコードではこのようになります。

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 );


シンプルな1ライナー、何も複雑ではありません。さて、あなたが話しているそのDELTAのものを挿入するのを助けてください、私は式が完全ではないことを知っているので、私を助けてください。

 
X-Masの前にこのプロジェクトを 完成させたいので、早く助けてください :)
 
Proximus: 早く助けてください、Xマス前にこのプロジェクトを終わらせたいんです :)
  1. 計画性の欠如
  2. 今すぐDELTAを挿入するのを手伝ってください。
    わざわざリンクをクリックしましたか?
 
WHRoeder:

  1. DELTAを入れるのを手伝ってください。
    提供されたリンクをわざわざクリックしたのでしょうか?

はい、そうです。でも、どうやってそれを私の方程式に当てはめるのか理解できません。あなたはこれが必要だと言いました。

  MarketInfo(pair, MODE_TICKVALUE)
           / MarketInfo(pair, MODE_TICKSIZE) 
この2つの数字を割ると、ticksizeの代わりに大きな数字が得られるからです...。
 
Proximus:

はい、そうです。でも、これをどうやって私の方程式に当てはめるのか理解できません。

しかし、この2つの数字を割ると、ticksizeの代わりに大きな数字が得られるので、これが私の方程式にどのように役立つのか理解できません...。

このリンクを試してみてください:https://www.mql5.com/en/forum/148224。

別の角度から見てみるといいかもしれませんね。

 
ubzen:

このリンクを試してみてください:https://www.mql5.com/en/forum/148224。

おそらく、別の角度から見ることで、解決するかもしれません。


WTF guys, shouldnt be TICKVALUE * TICKSIZE instead of TICKVALUE /TICKSIZE?これは、 TICK VALUE /TICKSIZEではなく TICKVALUE * TICKSIZEと すべきなのでしょうか?私はそこに大きな間違いがあると思います。





ただ、別の値を表示する簡単なインジケータを作ったので、TICKVALUE * TICKSIZE が適切だと思うのですが...。


デモ口座はEURで、それが基本通貨であることに注意してください。一方、私はUSD口座で同じテストを行い、そこではPOINTがTICKVALUE * TICKSIZEと同等であることがわかりました。

ファイル:
 

もし私が質問を正しく理解していれば、これはあなたのために仕事をすることになるでしょう。

for( i=0; i<=ot; i++ ) for( z=0; z<=10; z++ )
      {
         if( long_orders_array_ATF[i][z] > 0 )
         for (zz=0; zz<=10; zz++)
         { 
            OrderSelect(zz,SELECT_BY_POS,MODE_TRADES);
            if (OrderTicket()==long_orders_array_ATF[i][z]) zz=ot+2; 
            if (ot+2<=zz)  
            long_potencial_loss = (OrderLots() * (OrderOpenPrice() - OrderStopLoss()))*100000;
            long_sum_potencial_loss = long_sum_potencial_loss + long_potencial_loss;
         }
      }
...

lot_size = ((((free-long_sum_potencial_loss) * percent_depo)/100.0)/pips)/100000 ; }
理由: