从保证金的百分比中正确计算出该批次的金额 - 页 3

 
7bec:

但这里肯定应该是AccountBalance,而不是 AccountFreeMargin, 那么突然间专家就不能在一手中工作了?

在问一个四岁的孩子的问题之前,你想了很久吗? 你真的认为他会回答你吗?
 
zoritch:

在向一个四岁的帖子提问之前,你是否考虑了很久? 你真的认为他会回答你吗?
如果你很幸运呢?
 
7bec:

但这里肯定应该是AccountBalance,而不是 AccountFreeMargin, 那么突然间专家就不能在一手中工作了?

你不应该使用这个功能,我是说我在2010年夏天喜欢的这里的整个功能。因为它可以用更好的方式进行印刷
 
wenay:

你不应该使用这个功能,我是说我在2010年夏天喜欢的这里的整个功能。因为有更好的方法来打印


从我一夜之间在网上找到的资料来看,我最喜欢这个人。

当然,任何代码都可以被磨练到无限大,但最好的是好的敌人;)

 

我不是MQL4编程方面的专家,所以我想寻求一些提示...

这是第三天我为写一个计算手数的脚本而挠头。 我的想法如下:有一个(有条件的)1000美元的存款,手数将是0.05(实际上被20000除以)。

当你使用欧元兑美元、英镑兑美元、澳元兑美元、纽元兑美元(即以入金货币买入)时是可以的 ....我不知道如何为USDJPY(或USDRUR)获得手数......我不知道如何在USDJPY中获得手数......如果我很无聊,我缺少什么????,告诉我去哪里找别的东西。

 
gochu:

我不是MQL4编程的专家,所以我在寻找一些提示...

这是第三天我为写一个计算手数的脚本而挠头。 我的想法如下:有一个(有条件的)1000美元的存款,手数将是0.05(实际上被20000除以)。

当你使用欧元兑美元、英镑兑美元、澳元兑美元、纽元兑美元(即以入金货币买入)时是可以的 ....我如何计算CADJPY(或USDRUR)的手数?1000英镑(就今天而言)变成113000日元或38700卢布,在这种情况下不会是5.65和0.19手......我太辛苦了,我错过了什么???? 建议去哪里......把你的戏谑和嘲弄留到以后吧


从一个稍微不同的角度看问题:使用相当于一定数量的存款货币 的地段。

这里有一个脚本,根据合约大小来计算手数。合约大小是以入金货币设定的。

附加的文件:
 

下面是我计算交易手数的方法(MQL4更新前的代码,所以没有# 属性严格)。

extern double DealLevel = 5.0; // процент свободной маржи для сделки
//---
double LotDeal = NormalizeDouble(TradedLotFunc(DealLevel),2);

//--- TradedLotFunc() - start ----- сама функция
double TradedLotFunc(double Deal_f)
{  
   double MinLot_f  =MarketInfo(Symbol(),MODE_MINLOT);
   double MaxLot_f  =MarketInfo(Symbol(),MODE_MAXLOT);
   double LotStep_f =MarketInfo(Symbol(),MODE_LOTSTEP);
   double LotSize_f =MarketInfo(Symbol(),MODE_LOTSIZE);
   int    Leverage_f=AccountLeverage();
   //---
   int    i, coef; 
   double HighBorder;
   //---
   if(Deal_f<=0.0)  return(MinLot_f);
   if(Deal_f>100.0) Deal_f=100.0;
   double TradedLot=(AccountFreeMargin()*Deal_f/100)*Leverage_f/LotSize_f;
   if(TradedLot<=MinLot_f) return(MinLot_f);
   if(LotStep_f==0.001 || LotStep_f==0.01 || LotStep_f==0.1 || LotStep_f==1.0)
      TradedLot=MathRound(TradedLot/LotStep_f)*LotStep_f;
   else
   {  if(((TradedLot-MinLot_f)/LotStep_f)<=5.0) coef=1;
      else coef=MathRound((TradedLot-MinLot_f)/LotStep_f)-3;
      for(i=0; i<=100; i++)
      {  HighBorder=MinLot_f+(LotStep_f*coef)+(LotStep_f*i);
         if(TradedLot> HighBorder) continue;
         if(TradedLot==HighBorder) break;
         if(TradedLot< HighBorder)
         {  if(MathAbs(HighBorder-TradedLot)<=MathAbs(TradedLot-(HighBorder-LotStep_f)))
            {  TradedLot=HighBorder; break; }
            else
            {  TradedLot=HighBorder-LotStep_f;  break; }
   }  }  }
   if(TradedLot>=MaxLot_f) return(MaxLot_f);
   return(TradedLot);
}
//--- TradedLotFunc() - end -----
 

TradedLotFunc()的返回值是否总是大于零?

如果没有,那么代码就变成了一个狗屁if(Deal_f<=0.0) return(MinLot_f); - 你是党员吗? ...又是机枪扫 射...

剩下的就更有趣了,如果(TradedLot<=MinLot_f) return(MinLot_f) - 你是党员吗? ...机关枪又响了...

---------------------

一般来说,如果我们假设该功能正常工作,它几乎 不足以在交易账户中开出第一笔也是唯一一笔订单......

几乎没有,因为它既没有考虑到现有的未结头寸,也没有考虑到要开的订单的止损,也就是说,它是一个小学生的版本。

而且没有一个正常人会在真实账户交易时使用这种好东西......。

 

谢谢你的提示,但我没有很好地表述我的问题....。我想根据丢失/被盗的钱的数量来计算。显然,euro.quid和pound.quid的抵押品是不同的,但这并不是我想得出的确切结果。理想情况下,我应该有一个函数,将参数作为输入。

1-存款货币(我将检查英镑和欧元)。

2 - 存款金额 (1000)

3 - 我的交易货币对(我想检查CADJPY和USDCHF)。

4 - 我的存款缩减百分比(我们假设为2%)和

5-一定数量的点(4位数平台为100点,5位数为1000点)。

我想得到的输出参数是手数。

也就是说,(对于有反向报价的货币对、欧元兑美元、英镑兑美元、澳元兑美元、纽元兑美元,也就是说,如果报价货币是存款货币,一切都很清楚)...以期

存款1000英镑,我输/赢2%(即20英镑),当货币超过100(4位数)/1000点(5位数),我必须使用0.02手。

(我想重申,我应该用更多的钱来交易英镑兑美元,而不是欧元兑美元,特别是新西兰元兑美元,但我的问题不是关于资金的使用,而是关于名义损失和/或利润......请告诉我......我正在失去理智......我已经处理这个问题不到一个星期了)。我到了必须计算货币报价中的损失值的地步......但如何将它(损失)转化为所需的我大量的存款货币.....,所有在这里我绊倒了......谢谢你的帮助!

 
gochu:

谢谢你的提示,但我没有很好地表述我的问题....。我想根据丢失/被盗的钱的数量来计算一个地段。

请看带有查询标识符MODE_TICKVALUE 的函数https://docs.mql4.com/ru/marketinformation/marketinfo