初学者的问题 MQL5 MT5 MetaTrader 5 - 页 271 1...264265266267268269270271272273274275276277278...1503 新评论 Vladimir Karputov 2014.07.03 14:46 #2701 soroko: 所以只有第一个值被填入索引[0]。//+------------------------------------------------------------------+ //| test.mq5 | //| Copyright © 2014, Vladimir Karputov | //| http://wmua.ru/slesar/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2014, Vladimir Karputov" #property link "http://wmua.ru/slesar/" #property version "1.00" double Pr[5]; // обявление 5-мерного статического массива double PriceOld; // переменная для сравнения цены //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- double temp_prace=SymbolInfoDouble(_Symbol,SYMBOL_BID); if(NormalizeDouble(PriceOld-temp_prace,5)!=0) { Pr[4]=Pr[3]; Pr[3]=Pr[2]; Pr[2]=Pr[1]; Pr[1]=Pr[0]; Pr[0]=temp_prace; PriceOld=Pr[0]; } } //+------------------------------------------------------------------+ Vladimir Karputov 2014.07.04 08:11 #2702 soroko:谢谢你。拯救了我一个不眠的周末)。vicmos 谢谢你。 gordon 2014.07.04 08:15 #2703 barabashkakvn:vicmos 谢谢你。 它用一个值填满所有的东西,就像ArrayFill(...)/函数一样。 gordon 2014.07.04 08:27 #2704 soroko: 它用一个值填满所有的东西,就像ArrayFill(...)/函数一样。 对不起,只有较少的数字!非常感谢你!"。 jommerbot 2014.07.06 11:59 #2705 大家好!这样一个问题--编译器给出了一个警告。我不想置之不理,你能帮我找到一条出路吗? double aHigh[ 12 ], aLow[ 12 ]; double dVolatility = 0.0; CopyHigh(sSymbol, PERIOD_MN1, 0, 12, aHigh); CopyLow(sSymbol, PERIOD_MN1, 0, 12, aLow); dVolatility = ArrayMaximum(aHigh) - ArrayMinimum(aLow); dVolatility = NormalizeDouble(dVolatility, SymbolInfoInteger(sSymbol, SYMBOL_DIGITS));它专门在最后一行骂人,说:" 由于类型转换,可能会丢失数据"。在这种情况下,如何正确地对实数类型进行规范化? Vladimir Karputov 2014.07.06 12:10 #2706 jommerbot:大家好!这样一个问题--编译器给出了一个警告。我不想置之不理,你能帮我找到一条出路吗?它专门在最后一行骂人,说:" 由于类型转换,可能会丢失数据"。在这种情况下,如何正确地对实数类型进行规范化? dVolatility = NormalizeDouble(dVolatility, (int)SymbolInfoInteger(sSymbol, SYMBOL_DIGITS)); jommerbot 2014.07.06 12:12 #2707 barabashkakvn: 谢谢你 Andrey Miguzov 2014.07.06 12:13 #2708 jommerbot:大家好!这样一个问题--编译器给出了一个警告。我不想置之不理,你能帮我找到一条出路吗?它专门在最后一行骂人,说:" 由于类型转换,可能会丢失数据"。在这种情况下,如何正确地对实数类型进行规范化?还有一件事:ArrayMaximum和ArrayMinimum返回找到的元素的索引。所以正确的方法是这样的。 dVolatility = aHigh[ArrayMaximum(aHigh)] - aLow[ArrayMinimum(aLow)]; jommerbot 2014.07.06 17:56 #2709 MigVRN:还有:ArrayMaximum和ArrayMinimum返回找到的元素的索引。所以正确的方法是这样的。 非常感谢你。在调试代码时发现了同样的问题。 sergeis2005 2014.07.09 10:54 #2710 它不能根据平仓订单的损失金额正确地计算出获利水平。事实证明,第一阶=1;第二阶=2;第三阶=3;第四阶=4。我们需要计算出弥补之前所有订单损失的点数,并获得总损失的10%。实际上,专家顾问只是认为每个平仓订单的金额等于所谓的挂单,也就是说,它的计算结果显示,如果第5个挂单等于5手,那么以前所有的亏损订单都等于5手,因此,亏损的计算结果是相应的错误利润水平。也就是说,如果4个订单的总成交量实际等于10手,那么专家顾问将简单地用4个订单乘以第5个挂单的成交量,得到总成交量为20手......,我们应该在代码中纠正什么?// 根据已结束的交易的亏损水平来计算取舍水平的函数。//=================================================================================================double TakeProfitCalculate(double lot,int type){int n,i;双重prf,ttp。prf=MathAbs(BuyLevel-SellLevel)/Point*LOT*MarketInfo(Symbol(), MODE_TICKVALUE);//if(No!=0) for(i=OrdersHistoryTotal()-1;i>=0;i-){if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) 继续。如果(OrderSymbol()!=Symbol() || OrderMagicNumber()<MAGIC || OrderMagicNumber()>MAGIC+200 || OrderType()>OP_SELL) 继续。n=OrderMagicNumber()-MAGIC。prf+=(OrderProfit()+OrderSwap()+OrderCommission())。if(n==0) break;}prf=MathAbs(prf*(100+ProfitPercent)/100)。ttp=prf*Point/(LOT*MarketInfo(Symbol(),MODE_TICKVALUE))if(type==OP_BUY) return(NRu(BuyLevel+ttp)); else return(NRd(SellLevel-ttp)} Questions from Beginners MQL5 关闭订单的利润计算 "HELP" 如何编码? 1...264265266267268269270271272273274275276277278...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
所以只有第一个值被填入索引[0]。
谢谢你。拯救了我一个不眠的周末)。
vicmos 谢谢你。
它用一个值填满所有的东西,就像ArrayFill(...)/函数一样。
大家好!这样一个问题--编译器给出了一个警告。我不想置之不理,你能帮我找到一条出路吗?
它专门在最后一行骂人,说:" 由于类型转换,可能会丢失数据"。在这种情况下,如何正确地对实数类型进行规范化?
大家好!这样一个问题--编译器给出了一个警告。我不想置之不理,你能帮我找到一条出路吗?
它专门在最后一行骂人,说:" 由于类型转换,可能会丢失数据"。在这种情况下,如何正确地对实数类型进行规范化?
大家好!这样一个问题--编译器给出了一个警告。我不想置之不理,你能帮我找到一条出路吗?
它专门在最后一行骂人,说:" 由于类型转换,可能会丢失数据"。在这种情况下,如何正确地对实数类型进行规范化?
还有一件事:ArrayMaximum和ArrayMinimum返回找到的元素的索引。所以正确的方法是这样的。
还有:ArrayMaximum和ArrayMinimum返回找到的元素的索引。所以正确的方法是这样的。
它不能根据平仓订单的损失金额正确地计算出获利水平。事实证明,第一阶=1;第二阶=2;第三阶=3;第四阶=4。我们需要计算出弥补之前所有订单损失的点数,并获得总损失的10%。
实际上,专家顾问只是认为每个平仓订单的金额等于所谓的挂单,也就是说,它的计算结果显示,如果第5个挂单等于5手,那么以前所有的亏损订单都等于5手,因此,亏损的计算结果是相应的错误利润水平。也就是说,如果4个订单的总成交量实际等于10手,那么专家顾问将简单地用4个订单乘以第5个挂单的成交量,得到总成交量为20手......,我们应该在代码中纠正什么?
// 根据已结束的交易的亏损水平来计算取舍水平的函数。
//=================================================================================================
double TakeProfitCalculate(double lot,int type)
{
int n,i;
双重prf,ttp。
prf=MathAbs(BuyLevel-SellLevel)/Point*LOT*MarketInfo(Symbol(), MODE_TICKVALUE);//
if(No!=0) for(i=OrdersHistoryTotal()-1;i>=0;i-)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) 继续。
如果(OrderSymbol()!=Symbol() || OrderMagicNumber()<MAGIC || OrderMagicNumber()>MAGIC+200 || OrderType()>OP_SELL) 继续。
n=OrderMagicNumber()-MAGIC。
prf+=(OrderProfit()+OrderSwap()+OrderCommission())。
if(n==0) break;
}
prf=MathAbs(prf*(100+ProfitPercent)/100)。
ttp=prf*Point/(LOT*MarketInfo(Symbol(),MODE_TICKVALUE))
if(type==OP_BUY) return(NRu(BuyLevel+ttp)); else return(NRd(SellLevel-ttp)
}