需要基于SL和账户风险的资金管理LOT大小公式!

 

你好,我需要一个代码/公式,根据包括STOPLOSS在内的账户风险%来调整手数,并考虑到我的账户是以欧元计算。

我有这样的代码。

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

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

但这个没有考虑止损。

所以我在谷歌搜索中发现了这个

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(注意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 中的评论 不要单独使用tick值。
 
yousefh:

对不起,这不是很好

WHRoeder
  1. 帐户余额 * 百分比 = 风险 = (OrderOpenPrice - OrderStopLoss)*DIR * OrderLots *DeltaPerlot(注意OOP-OSL包括SPREAD)
  2. 不要使用TickValue本身 -DeltaPerlot
  3. 你还必须检查FreeMargin,以避免止损

好吧,我明白你的意思了,所以这是我的逻辑和计算方法,我是如何计算RISK%的?


在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: 请尽快帮助我,我想在圣诞节前完成这个项目 :)
  1. 缺少规划
  2. 现在请帮我插入那个DELTA的东西
    你是否费心点击了所提供的链接?
 
WHRoeder:

  1. 现在请帮我插入那个DELTA的东西
    你是否费心点击了所提供的链接?

是的,我做了,但我不明白你是如何将其纳入我的方程式的,你说你需要这个。

  MarketInfo(pair, MODE_TICKVALUE)
           / MarketInfo(pair, MODE_TICKSIZE) 
但我不明白这对我的方程式有什么帮助,因为这两个数字相除会得到一个大的数字,而不是刻度线大小......
 
Proximus:

是的,但我不明白你是如何将其纳入我的方程式的,你说你需要这个。

但我不明白这对我的方程式有什么帮助,因为这两个数字相除会得到一个大的数字,而不是刻度大小......

试试这个链接:https://www.mql5.com/en/forum/148224。

也许从不同的角度看它会有帮助。

 
ubzen:

试试这个链接:https://www.mql5.com/en/forum/148224。

也许从不同的角度看它可能会有帮助。


WTF guys, should not that be TICKVALUE * TICKSIZE instead of TICKVALUE /TICKSIZE?我认为那里有一个很大的错误





刚刚做了一个快速指标,显示了不同的值,我想TICKVALUE * TICKSIZE才是合适的......


请注意,演示账户是欧元,所以是基础货币,而我用美元账户做了同样的测试,那里的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 ; }