新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 681 1...674675676677678679680681682683684685686687688...1953 新评论 Ghabo 2018.10.29 23:22 #6801 Igor Makanu:可能是这样的,用于销售。 利润=NormalizeDouble((OrderOpenPrice()-Ask)*MarketInfo(_Symbol,MODE_TICKVALUE)*lot/Point,2) 。 以 Bid 买入,即 ( Bid -OrderOpenPrice())TakeProfit=100点 Lot=0.1,当TP平仓时,该货币的未平仓头寸的利润将是多少? profit=NormalizeDouble((OrderOpenPrice()-Тейк_Профит*Point)*MarketInfo(_Symbol,MODE_TICKVALUE)*lot/Point,2); 它不是这样的。 Ghabo 2018.10.29 23:27 #6802 Vitaly Muzichenko: 需要操作:地段->金钱->距离,以及打勾的费用金钱只是发现的东西 ) Igor Makanu 2018.10.30 04:38 #6803 Vitaly Muzichenko:该解决方案没有考虑到佣金和互换。积分似乎是在盈利,但成本是亏损的。我不喜欢OrderProfit()+OrderComission()+OrderSwap()这个带有佣金和互换的公式。 帮助中说,佣金可能是积分或存款货币,这个公式没有考虑到这一点,在测试中可能弊大于利,但这是一个品味问题。Ghabo。Take_Profit =100点,lot =0.1,当TP平仓时,该货币的未平仓头寸的利润将是多少? 它并不像那样工作。数学不是你的专长吗?;) 否则的话。 利润=NormalizeDouble((Take_Profit *Point)*MarketInfo(_Symbol,MODE_TICKVALUE)*lot/Point,2) 。 如果缩短,将是 profit=NormalizeDouble(lot *TakeProfit*MarketInfo(_Symbol,MODE_TICKVALUE),2)。 Artyom Trishkin 2018.10.30 04:45 #6804 Vitaly Muzichenko:这里的意思是,OrderProfit()应该在计算中使用。在发送订单之前,如何计算一个仓位 的手数,以便在TakeProfit启动时获得20美元的利润?OrderProfit()在这里没有帮助--现在还没有位置。 或者说:未来头寸的获利是多少,如果我以0.1手开仓,我将获得20美元的利润?在这里,OrderProfit()也没有帮助--出于同样的原因。 还有一种方法:未来的头寸应该是什么止损,以便当我用0.1手开仓时,得到的损失不超过可用资金的3%?在这里,OrderProfit()也没有帮助--出于同样的原因。 更新:在不知道佣金和交换的情况下,所有的计算将是近似的。如果我们需要精确到一分钱或一个点,我们将不得不 "当场 "调整止损单。 Vitaly Muzichenko 2018.10.30 04:50 #6805 Artyom Trishkin:在发送订单开仓 之前,我如何计算未来头寸的手数,以便在触发止盈时,我获得20美元的利润?OrderProfit()在这里没有帮助--现在还没有头寸。 或者说:未来头寸的获利是多少,如果我以0.1手开仓,我将获得20美元的利润?在这里,OrderProfit()也没有帮助--出于同样的原因。 我只是在打开之前写下并理解了我要计算的内容,并立即删除了信息。你的回答真是太聪明了) 我曾经写过这样的东西,并在输入参数中输入每1手的金额作为佣金。 Dmitry Belov 2018.10.31 06:03 #6806 你好,我搞不清楚,请帮助。这个代码有什么问题?我在评论中显示平均值,它随着每一次打勾 而增加?帮助:-)))) for(shift = 0; shift <= Bars-1; shift++) { zz = iCustom(NULL, 0, "ZigZag", ExtDepth, ExtDeviation, ExtBackstep, 0, shift); if(zz > 0.0) { HZZ[ww]=zz; ww++; } } for(ww=0;ww<=nn;ww++){ if(HZZ[ww]>HZZ[ww+1]){SredRazmax += HZZ[ww];} if(HZZ[ww]<HZZ[ww+1]){SredRazmin += HZZ[ww+1];} Comment("Средний размах = ", (SredRazmax-SredRazmin)/nn,",",HZZ[0],",",HZZ[1],",",HZZ[2],",",HZZ[3],",",HZZ[4]); Igor Makanu 2018.10.31 06:10 #6807 Dmitry Belov: 它是否随着每次打钩 而增加?帮助:-))))这意味着你在计算你提交的代码中的每一个刻度,而不是初始化SredRazmax和SredRazmin 变量。 在使用前初始化变量是个好习惯--这是大学教给你的,它可以减少发现bug的时间;) Oleg Remizov 2018.10.31 19:52 #6808 同事们,为什么这段代码在策略测试器中拒绝执行,但在实时中却能正确执行。我具体说的是OnChartEvent()函数。在测试器的可视化模式中,当按钮被点击时,它不会被执行。 input double lot=0.1; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { ButtonCreate("ButtonBuy",100,100,200,40,"Buy",15,clrBlue); ButtonCreate("ButtonSell",100,200,200,40,"Sell",15,clrRed); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { long cid=ChartID(); if(id==CHARTEVENT_OBJECT_CLICK && sparam=="ButtonBuy") { if(OrderSend(_Symbol,OP_BUY,lot,Ask,200,0,0,NULL,0,0,clrBlue)==-1) Print("Error: ",GetLastError()); ObjectSetInteger(cid,"ButtonBuy",OBJPROP_STATE,false); } if(id==CHARTEVENT_OBJECT_CLICK && sparam=="ButtonSell") { if(OrderSend(_Symbol,OP_SELL,lot,Bid,200,0,0,NULL,0,0,clrRed)==-1) Print("Error: ",GetLastError()); ObjectSetInteger(cid,"ButtonSell",OBJPROP_STATE,false); } } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| ButtonCreate | //+------------------------------------------------------------------+ void ButtonCreate(string name,int x,int y,int width,int height, string text,int font_size,color back_clr) { long cid=ChartID(); int subWind=0; ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER; string font="Cambria"; color text_clr=clrBlack; color border_clr=clrBlack; bool state=false; bool back=false; bool selectable=false; bool selected=false; bool hidden=true; long zorder=0; if(ObjectFind(cid,name)==-1) { ObjectCreate(cid,name,OBJ_BUTTON,subWind,0,0); ObjectSetInteger(cid,name,OBJPROP_XDISTANCE,x); ObjectSetInteger(cid,name,OBJPROP_YDISTANCE,y); ObjectSetInteger(cid,name,OBJPROP_XSIZE,width); ObjectSetInteger(cid,name,OBJPROP_YSIZE,height); ObjectSetInteger(cid,name,OBJPROP_CORNER,corner); ObjectSetString(cid,name,OBJPROP_TEXT,text); ObjectSetString(cid,name,OBJPROP_FONT,font); ObjectSetInteger(cid,name,OBJPROP_FONTSIZE,font_size); ObjectSetInteger(cid,name,OBJPROP_COLOR,text_clr); ObjectSetInteger(cid,name,OBJPROP_BGCOLOR,back_clr); ObjectSetInteger(cid,name,OBJPROP_BORDER_COLOR,border_clr); ObjectSetInteger(cid,name,OBJPROP_BACK,back); ObjectSetInteger(cid,name,OBJPROP_STATE,state); ObjectSetInteger(cid,name,OBJPROP_SELECTABLE,selectable); ObjectSetInteger(cid,name,OBJPROP_SELECTED,selected); ObjectSetInteger(cid,name,OBJPROP_HIDDEN,hidden); ObjectSetInteger(cid,name,OBJPROP_ZORDER,zorder); } } //+------------------------------------------------------------------+ Artyom Trishkin 2018.10.31 19:59 #6809 Oleg Remizov:同事们,为什么这段代码在策略测试器中拒绝执行,但在实时中却能正确执行。我具体说的是OnChartEvent()函数。在测试器的可视化模式中,当按钮被点击时,它不会被执行。 因为OnChartEvent()在MT4的测试器中不起作用。检查测试器中的按钮状态标志。 Oleg Remizov 2018.10.31 20:09 #6810 Artyom Trishkin: 因为在MT4中OnChartEvent()在测试器中不起作用。检查测试器中的按钮状态标志。谢谢你!我有这种怀疑,但我在帮助中没有找到OnChartEvent() 在测试器中不工作的信息。 1...674675676677678679680681682683684685686687688...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
可能是这样的,用于销售。
利润=NormalizeDouble((OrderOpenPrice()-Ask)*MarketInfo(_Symbol,MODE_TICKVALUE)*lot/Point,2) 。
以 Bid 买入,即 ( Bid -OrderOpenPrice())
TakeProfit=100点 Lot=0.1,当TP平仓时,该货币的未平仓头寸的利润将是多少?
它不是这样的。
需要操作:地段->金钱->距离,以及打勾的费用
金钱只是发现的东西 )
该解决方案没有考虑到佣金和互换。积分似乎是在盈利,但成本是亏损的。
我不喜欢OrderProfit()+OrderComission()+OrderSwap()这个带有佣金和互换的公式。
帮助中说,佣金可能是积分或存款货币,这个公式没有考虑到这一点,在测试中可能弊大于利,但这是一个品味问题。
Take_Profit =100点,lot =0.1,当TP平仓时,该货币的未平仓头寸的利润将是多少?
它并不像那样工作。
数学不是你的专长吗?;)
否则的话。
利润=NormalizeDouble((Take_Profit *Point)*MarketInfo(_Symbol,MODE_TICKVALUE)*lot/Point,2) 。
如果缩短,将是
profit=NormalizeDouble(lot *TakeProfit*MarketInfo(_Symbol,MODE_TICKVALUE),2)。
这里的意思是,OrderProfit()应该在计算中使用。
在发送订单之前,如何计算一个仓位 的手数,以便在TakeProfit启动时获得20美元的利润?OrderProfit()在这里没有帮助--现在还没有位置。
或者说:未来头寸的获利是多少,如果我以0.1手开仓,我将获得20美元的利润?在这里,OrderProfit()也没有帮助--出于同样的原因。
还有一种方法:未来的头寸应该是什么止损,以便当我用0.1手开仓时,得到的损失不超过可用资金的3%?在这里,OrderProfit()也没有帮助--出于同样的原因。
更新:在不知道佣金和交换的情况下,所有的计算将是近似的。如果我们需要精确到一分钱或一个点,我们将不得不 "当场 "调整止损单。
在发送订单开仓 之前,我如何计算未来头寸的手数,以便在触发止盈时,我获得20美元的利润?OrderProfit()在这里没有帮助--现在还没有头寸。
或者说:未来头寸的获利是多少,如果我以0.1手开仓,我将获得20美元的利润?在这里,OrderProfit()也没有帮助--出于同样的原因。
我只是在打开之前写下并理解了我要计算的内容,并立即删除了信息。你的回答真是太聪明了)
我曾经写过这样的东西,并在输入参数中输入每1手的金额作为佣金。
它是否随着每次打钩 而增加?帮助:-))))
这意味着你在计算你提交的代码中的每一个刻度,而不是初始化SredRazmax和SredRazmin 变量。
在使用前初始化变量是个好习惯--这是大学教给你的,它可以减少发现bug的时间;)
同事们,为什么这段代码在策略测试器中拒绝执行,但在实时中却能正确执行。我具体说的是OnChartEvent()函数。在测试器的可视化模式中,当按钮被点击时,它不会被执行。
同事们,为什么这段代码在策略测试器中拒绝执行,但在实时中却能正确执行。我具体说的是OnChartEvent()函数。在测试器的可视化模式中,当按钮被点击时,它不会被执行。
因为在MT4中OnChartEvent()在测试器中不起作用。检查测试器中的按钮状态标志。
谢谢你!我有这种怀疑,但我在帮助中没有找到OnChartEvent() 在测试器中不工作的信息。