任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 84

 
paladin80:

那些已经陷入赤字的通行证没有显示。右键点击任何优化结果,取消对 "跳过无用结果 "的勾选。




这与优化无关。

该测试是一次性的。

而它在不同标签中的结果,正如我在上面指出的那样,相差30个。

 
lottamer:


这与优化无关。

该测试是一次性的。

正如我在上面指出的那样,在不同的标签中,其结果有30个不同的变化。

抛出一张带有问题区域的报告截图,让我们看一看。或者完整地上传整个报告。
 

亲爱的程序员,解释一下这一点,这里是计算资金管理的手数的算法,但问题是,一旦他了解到开出的手数少于0.01即允许的,那么自然就会出现订单发送错误和再见,建议输入什么开出少于0.01的手数,即使算法要求如此,也不能。

double GetSizeLot()
{  
  if (MM==false) 
      MMLot=Lots;
      
  if (MM==true)
     {
      MMLot=((AccountFreeMargin()*TradeLotRiskPercent)/100000);
     }
  return(MMLot);
}
 
ZahvatkiN:

亲爱的程序员,解释一下这一点,这里是计算资金管理的手数的算法,但问题是,一旦他了解到开出的手数小于0.01即允许的,那么自然就会出现订单发送错误和再见,建议输入什么开出小于0.01的手数,即使算法要求也不能。

1.有必要使之正常化。

2.并固定最低地段。

MMLot=NormalizeDouble(MathMax((AccountFreeMargin()*TradeLotRiskPercent)/100000,MinLot),2);
 
ZahvatkiN:

亲爱的程序员,解释一下这一点,这里是计算资金管理的手数的算法,但问题是,只要他意识到,打开一个小于0.01即允许的手数,然后当然是订单发送错误和再见,告诉我什么进入,小于0.01手不能打开,即使算法需要它。

double GetSizeLot(double TradeLotRiskPercent)
{  
   double MMLot, MinLot, MaxLot;
   //---
   MinLot=MarketInfo(Symbol(),MODE_MINLOT);
   MaxLot=MarketInfo(Symbol(),MODE_MAXLOT);
   //---
   MMLot=AccountFreeMargin()*TradeLotRiskPercent)/100000;
   if (MMLot<=MinLot) return(MinLot);
   if (MMLot>=MaxLot) return(MaxLot);
   else 
   {  MMLot=NormalizeDouble(MMLot,2);
      return(MMLot);
   }
}

你有计算MMLot的公式,除以100000。最有可能的是,你正在计算1:100的杠杆和一个正常的账户,其手数是100000的基础货币(如美元)。如果你把这样的EA扔到美分账户(手数=10000)和/或用不同的杠杆,它将无法正确计算手数。试试这个设计。

double GetSizeLot(double TradeLotRiskPercent)
{  
   double MMLot, MinLot, MaxLot;
   int    LotSize, Leverage;
   //---
   MinLot  =MarketInfo(Symbol(),MODE_MINLOT);
   MaxLot  =MarketInfo(Symbol(),MODE_MAXLOT);
   LotSize =MarketInfo(Symbol(),MODE_LOTSIZE);
   Leverage=AccountLeverage();
   //---
   MMLot=AccountFreeMargin()*TradeLotRiskPercent)/ 100*Leverage/LotSize;
   if (MMLot<=MinLot) return(MinLot);
   if (MMLot>=MaxLot) return(MaxLot);
   else 
   {  MMLot=NormalizeDouble(MMLot,2);
      return(MMLot);
   }
}
 
如果 使用1:500杠杆的Alpari_ECN_Live账户,TradeLotRiskPercent=10,即1000美元存款的10%,手数将从0.5开始工作。 那么,这个公式只适用于1:100杠杆?我想没有任何杠杆和账户的通用代码?
 
ZahvatkiN:
如果 使用1:500杠杆的Alpari_ECN_Live账户,TradeLotRiskPercent=10,即1000美元存款的10%,手数将从0.5开始工作。 那么,这个公式只适用于1:100杠杆?我想没有任何杠杆和账户的通用代码
我认为我的2个公式(从23.08.2013 07:30开始)正确计算了这批货。看到1000美元的10%=100美元(存款),用1:500的杠杆,经纪人给你机会开出5万美元的交易。在经纪人那里,1手是100,000美元,那么你的50,000美元就是0.5手。
MMLot=AccountFreeMargin()*TradeLotRiskPercent)/100*Leverage/LotSize。
MMLot=1000*10/100 * 500/100000 = 100 * 500/100000 = 50000 / 100000 = 0.50
 
paladin80:
我认为我的2个公式(日期为23.08.2013 07:30)计算的手数正确。看到1000美元的10%=100美元(存款),在1:500的杠杆下,经纪人让你选择开50,000美元的交易。在经纪人那里,1手是100,000美元,那么你的50,000美元就是0.5手。
MMLot=AccountFreeMargin()*TradeLotRiskPercent)/100*Leverage/LotSize。
MMLot=1000*10/100 * 500/100000 = 100 * 500/100000 = 50000 / 100000 = 0.50

萨马公式本身的计算是没有错误的,只是在1000的10%的想法是很多0.1,而不是0.5)这里很清楚为什么0.5,因为1:500的杠杆,这将是一个肩膀1:100它将打开一个手只是0.1,所以问题出现了,但有一个通用的算法来计算任何杠杆和帐户类型的手,或为每个它自己?
 

尊敬的论坛用户,请帮助我找到箭头的坐标

string arrowName=TimeToStr(Time[i])。

ObjectCreate(arrowName+ " Arrow",...)。

我正在做一个基于指标的专家顾问,我通过iCustom获得箭头,但我不知道如何找到几个最新箭头的坐标。

 
nazar77:
帮助我反编译指标。 我不会比我更进一步反编译的,我保证。
去死吧!!!