专家顾问 - 杂项问题 - 页 33 1...262728293031323334353637383940...43 新评论 Marco vd Heijden 2017.02.09 13:03 #321 MQL4:MODE_LOTSTEP 24 改变批次的步骤 Print("Step for changing lots=",MarketInfo(Symbol(),MODE_LOTSTEP));MQL5:符号_音量_步骤 交易执行的最小体积变化步骤 双倍Print(" Step: ",SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);因此,它告诉你关于最小的手数上升或下降的步骤,如果它是0.01,那么你的手数必须同意0.01,0.02,0.03,0.04等等。如果是0.1,那么你的手数变化就必须符合0.1、0.2、0.3等。所以我不明白你的意思。 if(lotsize>=(lotstep*100)) { lotstep=lotstep*100; Print("lot step: ",lotstep); }也许你的意思是不同的手数步骤?通常情况下,你不会改变这个值,因为它对每个符号都是固定的。 expert advisor - miscellaneous 基于大众交易系统和交易机器人优化点金术的 Expert Advisor 跨平台智能交易程序: 重用来自 MQL5 标准库的控件 honest_knave 2017.02.09 13:32 #322 Max Enrik: // lot plusif(sparam==lotbuttonplus) { if(lotsize>=(lotstep*100)) { lotstep=lotstep*100; Print("lot step: ",lotstep); }如果你改变一个直观命名的变量的值,事情会变得很混乱。我建议lotstep始终是lotstep,而不是其他。像这样的情况如何? double increment = (lotsize < lotstep*100) ? lotstep : lotstep*100; lotmaxdivide=lotmax/lotmax *(lotvalue*10); lotsize=fmin(lotmaxdivide,lotsize+(( ctrlfalse) ? increment*10 : increment)); 编辑:对不起,刚看到Marco的回答。我同意关于lotstep的命名。 Max Enrik 2017.02.09 23:31 #323 Marco vd Heijden:所以我不明白你的意思。 if(lotsize>=(lotstep*100)) { lotstep=lotstep*100; Print("lot step: ",lotstep); }也许你的意思是不同的手数步骤? 通常情况下,你不会改变这个值,因为它对每个符号都是固定的。是的!我的意思是不同的手数,所以当欧元兑美元的手数达到1.00手时。那么我需要将手数增加1.00。在手数达到1.00之前,手数增加0.01,0.02等等。(但在手数达到1.00后,手数增加1.00、2.00、3.00,等等。 这就是我在这个分题中想做的事情。谢谢你了。 Max Enrik 2017.02.09 23:50 #324 honest_knave:如果你改变一个直观命名的变量的值,事情会变得很混乱。我建议lotstep始终是lotstep,而不是其他。 像这样的情况如何? double increment = (lotsize < lotstep*100) ? lotstep : lotstep*100; lotmaxdivide=lotmax/lotmax *(lotvalue*10); lotsize=fmin(lotmaxdivide,lotsize+(( ctrlfalse) ? increment*10 : increment)); 编辑:对不起,刚看到Marco的回答。我同意关于lotstep的命名。(我只是稍微改变了一下不 - ...lotstep : lotstep*100 - ...? lotstep : lotstep*10 )是的!在我原来的代码中,事情是混乱的。 在你的大力帮助下,我解决了我的问题。非常感谢。我也希望手数能像这样增加。 所以手数的增加是这样的:0.99,1.00,1.01,1.11。 但我需要像这样0.99,1.00,1.10,1.20等。提前感谢。 Marco vd Heijden 2017.02.10 08:41 #325 我认为0.99、1.00、1.01、1.02...将是最好的主意。我想,坚持使用最小的可用步骤。你为什么要采取这些超大型的步骤?你试过吗? 请试一下吧。 Max Enrik 2017.02.10 08:55 #326 Marco vd Heijden:我认为0.99、1.00、1.01、1.02...将是最好的主意。 我想,坚持使用最小的可用步骤。 你为什么要采取这些超大型的步骤? 你试过吗? 请试一下吧。我已经试过了,我想如果我需要达到手数5.00,我应该按40次手数增加按钮(+ctrl)。 Marco vd Heijden 2017.02.10 09:01 #327 哇,为什么是五个?你可以用+和-来代替*。 lotsize=lotsize+0.1;lotsize=lotsize-0.1;但在我的机器人中,有一句话使它免于彻底毁灭,它就是这个。static input double lotsmax=1;// Max Lots (please respect the setting) Max Enrik 2017.02.10 09:21 #328 Marco vd Heijden:但在我的机器人中,有一句话使它免于彻底毁灭,它就是这个。这绝对是事实,当然我也尊重这种设定。但这只是一个问题--我是说我可以随时调整它。 也许我需要一点关于批量大小的经验。我想这个分题可以暂时结束了。谢谢@Marco vd Heijden 和@honest_knave#Lot Step - 关闭 Max Enrik 2017.02.10 23:03 #329 #Lot Size Max - Open@Marco vd Heijden- 非常感谢你的最新评论,这是我为我的EA写这部分代码的灵感。(我刚刚停止写其他函数--我试着在其他函数之前写这个函数)所以,通常我尝试测试一些最大手数的东西。 当手数大于最大手数时,打印功能不能让我了解交易模式。 在我解决了这个问题之后,我需要把这个功能的卖出和买入按钮功能。问: 我怎样才能使打印功能让我了解交易模式?(-手数比最大手数好或比它小)问:这个方法对最大手数有用吗?谢谢你。void example() { string trademode; ENUM_ACCOUNT_TRADE_MODE accounttype=(ENUM_ACCOUNT_TRADE_MODE) AccountInfoInteger(ACCOUNT_TRADE_MODE); if(accounttype==ACCOUNT_TRADE_MODE_DEMO) { switch(accounttype) { case ACCOUNT_TRADE_MODE_DEMO: if( lotsize > ( lotstep * lotsizemax ) ) return; trademode="demo"; break; case ACCOUNT_TRADE_MODE_CONTEST: trademode="contest"; break; default: trademode="live"; break; } } Print("Trade Mode: ",trademode); } expert advisor - miscellaneous Problem: Putting or Pushing Unbalanced Parenthesis Marco vd Heijden 2017.02.10 23:08 #330 没有,用于验证是否是模拟账户 或真实账户,比赛很少使用。最大手数可以很容易。//---// calculate lotsize here//---// check if lotsize is not too highif(lotsize>lotsize_max) { lotsize=losize_max; } 1...262728293031323334353637383940...43 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
MQL4:
MODE_LOTSTEP
24
改变批次的步骤
MQL5:
符号_音量_步骤
交易执行的最小体积变化步骤
双倍
因此,它告诉你关于最小的手数上升或下降的步骤,如果它是0.01,那么你的手数必须同意0.01,0.02,0.03,0.04等等。
如果是0.1,那么你的手数变化就必须符合0.1、0.2、0.3等。
所以我不明白你的意思。
{
lotstep=lotstep*100;
Print("lot step: ",lotstep);
}
也许你的意思是不同的手数步骤?
通常情况下,你不会改变这个值,因为它对每个符号都是固定的。
if(sparam==lotbuttonplus)
{
if(lotsize>=(lotstep*100))
{
lotstep=lotstep*100;
Print("lot step: ",lotstep);
}
如果你改变一个直观命名的变量的值,事情会变得很混乱。我建议lotstep始终是lotstep,而不是其他。
像这样的情况如何?
lotmaxdivide=lotmax/lotmax *(lotvalue*10);
lotsize=fmin(lotmaxdivide,lotsize+(( ctrlfalse) ? increment*10 : increment));
Marco vd Heijden:
所以我不明白你的意思。
{
lotstep=lotstep*100;
Print("lot step: ",lotstep);
}
也许你的意思是不同的手数步骤?
通常情况下,你不会改变这个值,因为它对每个符号都是固定的。
是的!我的意思是不同的手数,所以当欧元兑美元的手数达到1.00手时。那么我需要将手数增加1.00。在手数达到1.00之前,手数增加0.01,0.02等等。(但在手数达到1.00后,手数增加1.00、2.00、3.00,等等。
这就是我在这个分题中想做的事情。
谢谢你了。
如果你改变一个直观命名的变量的值,事情会变得很混乱。我建议lotstep始终是lotstep,而不是其他。
像这样的情况如何?
lotmaxdivide=lotmax/lotmax *(lotvalue*10);
lotsize=fmin(lotmaxdivide,lotsize+(( ctrlfalse) ? increment*10 : increment));
(我只是稍微改变了一下不 - ...lotstep : lotstep*100 - ...? lotstep : lotstep*10 )
是的!在我原来的代码中,事情是混乱的。
在你的大力帮助下,我解决了我的问题。非常感谢。
我也希望手数能像这样增加。
所以手数的增加是这样的:0.99,1.00,1.01,1.11。
但我需要像这样0.99,1.00,1.10,1.20等。
提前感谢。
我认为0.99、1.00、1.01、1.02...将是最好的主意。
我想,坚持使用最小的可用步骤。
你为什么要采取这些超大型的步骤?
你试过吗?
请试一下吧。我认为0.99、1.00、1.01、1.02...将是最好的主意。
请试一下吧。我想,坚持使用最小的可用步骤。
你为什么要采取这些超大型的步骤?
你试过吗?
我已经试过了,我想如果我需要达到手数5.00,我应该按40次手数增加按钮(+ctrl)。
哇,为什么是五个?
你可以用+和-来代替*。
但在我的机器人中,有一句话使它免于彻底毁灭,它就是这个。
但在我的机器人中,有一句话使它免于彻底毁灭,它就是这个。
这绝对是事实,当然我也尊重这种设定。
但这只是一个问题--我是说我可以随时调整它。
也许我需要一点关于批量大小的经验。
我想这个分题可以暂时结束了。
谢谢@Marco vd Heijden 和@honest_knave
#Lot Step - 关闭
#Lot Size Max - Open
@Marco vd Heijden- 非常感谢你的最新评论,这是我为我的EA写这部分代码的灵感。(我刚刚停止写其他函数--我试着在其他函数之前写这个函数)
所以,通常我尝试测试一些最大手数的东西。
当手数大于最大手数时,打印功能不能让我了解交易模式。
在我解决了这个问题之后,我需要把这个功能的卖出和买入按钮功能。
问: 我怎样才能使打印功能让我了解交易模式?(-手数比最大手数好或比它小)
问:这个方法对最大手数有用吗?
谢谢你。
{
string trademode;
ENUM_ACCOUNT_TRADE_MODE accounttype=(ENUM_ACCOUNT_TRADE_MODE) AccountInfoInteger(ACCOUNT_TRADE_MODE);
if(accounttype==ACCOUNT_TRADE_MODE_DEMO)
{
switch(accounttype)
{
case ACCOUNT_TRADE_MODE_DEMO:
if( lotsize > ( lotstep * lotsizemax ) ) return;
trademode="demo";
break;
case ACCOUNT_TRADE_MODE_CONTEST:
trademode="contest";
break;
default:
trademode="live";
break;
}
}
Print("Trade Mode: ",trademode);
}
没有,用于验证是否是模拟账户 或真实账户,比赛很少使用。
最大手数可以很容易。
// calculate lotsize here
//---
// check if lotsize is not too high
if(lotsize>lotsize_max)
{
lotsize=losize_max;
}