编码帮助 - 页 157 1...150151152153154155156157158159160161162163164...786 新评论 Chrisstoff 2013.10.02 15:16 #1561 mladen: 克里斯托夫这样一来,小数变量应该是可以的 在任何情况下,请检查在订单(部分)关闭不成功的情况下,你得到的错误代码是什么? Mladen, 谢谢你的提示。 问题是,没有错误信息。当它不工作时,似乎PartialTP函数 甚至没有被调用。其他时候--通常是在EA重启后的第一笔订单--工作良好。 我想也许其中一个变量没有回到零值,或类似的东西,但我仍然找不到这个错误。 Mladen Rakic 2013.10.02 17:15 #1562 chrisstoff: Mladen, 谢谢你的提示。问题是,没有错误信息。当它不工作时,似乎PartialTP函数甚至没有被调用。其他时候--通常是在EA重启后的第一个订单--它工作得很好。 我想也许有一个变量没有回到零值,或者类似的东西,但我还是找不到这个错误。 克里斯托夫 抱歉,但对于部分代码我无法提供更多帮助 你所描述的情况意味着需要对代码进行调试,而这只能通过在使用某种控制点 的情况下执行代码来实现。 Chrisstoff 2013.10.02 19:11 #1563 mladen: chrisstoff很抱歉,但对于部分代码,我无法提供更多帮助 你所描述的情况意味着有必要对代码进行调试--而这只能通过在使用某种控制点的情况下执行代码来实现 谢谢你,Mladen。 令人欣慰的是,你没有发现代码中的问题。 我想代码的所有相关部分都已经发布了,所以我必须在其他地方找到这个错误。 Hock 2013.10.02 21:57 #1564 mladen: hock87请阅读你上面的帖子,了解该问题的解决方案 该问题的完整代码如下。 int TotalOrders = 0; for (int i=0; i <= OrdersTotal(); i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol() == Symbol()) TotalOrders++; } if (TotalOrders<1) { ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0); stop=(Ask-stopsize*Point); prof=(Ask+profsize*Point); OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue); } Malden, 如果我想按账户余额 的一定比例开出手数,该如何编码? 例如。 我的账户余额为500美元。 我想以5%的比例开仓,然后自动计算并开仓0.25美元的手,TP=10 SL=20。 如何进行编码? 谢谢。 Mladen Rakic 2013.10.03 04:43 #1565 hock87: 马尔登。如果我想按账户余额的某一百分比开出手数,如何编码? 例如。 我的账户余额为500美元。 我想以5%的比例开仓,然后自动计算并开仓0.25美元的手,TP=10 SL=20。 如何编写代码? 谢谢。 你可以用这样的函数 来实现。 double getLots(double stopLoss, double risk) { RefreshRates(); double pPoint = MarketInfo(Symbol(),MODE_POINT); double step = MarketInfo(Symbol(),MODE_LOTSTEP); double minLot = MarketInfo(Symbol()l,MODE_MINLOT); double maxLot = MarketInfo(Symbol(),MODE_MAXLOT); double lots = minLot; if (risk>0 && stopLoss>0) { lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(s_symbol,MODE_TICKVALUE)/pPoint); } } return(MathMax(MathMin(lots,maxLot),minLot)); } PS: stopLoss必须以点/分的形式传递给函数(不是整数)。 Coding help 需要编码方面的帮助 Need help with coding Hock 2013.10.03 08:54 #1566 mladen: 你可以用这样的函数来实现。double getLots(double stopLoss, double risk) { RefreshRates(); double pPoint = MarketInfo(Symbol(),MODE_POINT); double step = MarketInfo(Symbol(),MODE_LOTSTEP); double minLot = MarketInfo(Symbol()l,MODE_MINLOT); double maxLot = MarketInfo(Symbol(),MODE_MAXLOT); double lots = minLot; if (risk>0 && stopLoss>0) { lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(s_symbol,MODE_TICKVALUE)/pPoint); } } return(MathMax(MathMin(lots,maxLot),minLot)); } PS: stopLoss必须以点/分的形式传递给函数(不是整数)。 谢谢你,姆拉登。 但我未能将代码复合为买单代码。 它出现了许多错误和警告。 如何复合它? 谢谢。 extern double lots = 0.1;extern double stopsize = 20; extern double profsize = 10; int err; int ticket; double stop; double prof; int start() { int TotalOrders = 0; for (int i=0; i <= OrdersTotal(); i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol() == Symbol()) TotalOrders++; } if (TotalOrders<1) { ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen); stop=(Ask-stopsize*Point); prof=(Ask+profsize*Point); OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue); } err=GetLastError(); // Comment("This is a test ", err, " ", stop, " ", prof); Comment(" "); } Coding help [存档!]我将免费撰写任何专家或指标。 退出策略。阶梯式止损与拖曳式止损 Mladen Rakic 2013.10.03 09:04 #1567 hock87: 谢谢你,Mladen。但我未能将代码复合为买单代码。 它出现了许多错误和警告。 如何复合它呢? 谢谢。 extern double lots = 0.1;extern double stopsize = 20; extern double profsize = 10; int err; int ticket; double stop; double prof; int start() { int TotalOrders = 0; for (int i=0; i <= OrdersTotal(); i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol() == Symbol()) TotalOrders++; } if (TotalOrders<1) { ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen); stop=(Ask-stopsize*Point); prof=(Ask+profsize*Point); OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue); } err=GetLastError(); // Comment("This is a test ", err, " ", stop, " ", prof); Comment(" "); } 试着这样做(我现在已经测试过了,它是有效的)。 extern double lots = 0.1;extern double stopsize = 20; extern double profsize = 10; int err; int ticket; double stop; double prof; int init() { return(0); } int deinit() { return(0); } int start() { int TotalOrders = 0; for (int i=0; i <= OrdersTotal(); i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if (OrderSymbol() == Symbol()) TotalOrders++; } if (TotalOrders<1) { ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen); stop=(Ask-stopsize*Point*MathPow(10,Digits%2)); prof=(Ask+profsize*Point*MathPow(10,Digits%2)); OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue); } err=GetLastError(); // Comment("This is a test ", err, " ", stop, " ", prof); Comment(" "); } 附加的文件: _test_1.mq4 1 kb test_1.gif 78 kb Coding help [存档!]我将免费撰写任何专家或指标。 初学者的问题 MQL4 MT4 MetaTrader kingsleyedeh4re 2013.10.03 09:38 #1568 亲爱的mladen和先生的工具,请。 是否有可能创建一个基于某些条件的EA,如3或4个指标满足预定条件的信号。 例如 我想让EA发出买入信号。 ema 8 cross ema 21 QQE高于0 非滞后MA为绿色 蜡烛在一目连云图 之上 EA不应该打开交易,而只是在满足所述条件时给出信号。 Hock 2013.10.03 09:49 #1569 谢谢你,姆拉登。 我已经试过了。 但它仍然以0.1美元的价格开仓 我想以我的账户余额 的一定比例开出手数。 例如:账户余额为500美元。 开了一个5%的手数,然后它自动计算并开了0.25美元的手,TP=10 SL=20。 LotSizeSlot1 = AccountBalance() * (RiskSlot1 / 100) LotSizeSlot1 = $500*(5%/100) LotSizeSlot1 = 0.25美元 然后它自动打开0.25美元的手,TP=10 SL=20。 如何创建它? 谢谢。 Mladen Rakic 2013.10.03 09:56 #1570 hock87: 谢谢你,Mladen。我已经试过了。 但它仍然以0.1美元开出手数。 我想按照我的账户余额的一定比例开出手数。 例如:账户余额为500美元。 以5%的比例开出手数,然后自动计算并开出0.25美元的手数,TP=10 SL=20。 LotSizeSlot1 = AccountBalance() * (RiskSlot1 / 100) LotSizeSlot1 = $500*(5%/100) LotSizeSlot1 = 0.25美元 然后它自动打开0.25美元的手,TP=10 SL=20。 如何创建它? 谢谢。 像附件中的那样 附加的文件: _test_2.mq4 2 kb 1...150151152153154155156157158159160161162163164...786 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
克里斯托夫
这样一来,小数变量应该是可以的
在任何情况下,请检查在订单(部分)关闭不成功的情况下,你得到的错误代码是什么?Mladen,
谢谢你的提示。
问题是,没有错误信息。当它不工作时,似乎PartialTP函数 甚至没有被调用。其他时候--通常是在EA重启后的第一笔订单--工作良好。
我想也许其中一个变量没有回到零值,或类似的东西,但我仍然找不到这个错误。
Mladen,
谢谢你的提示。
问题是,没有错误信息。当它不工作时,似乎PartialTP函数甚至没有被调用。其他时候--通常是在EA重启后的第一个订单--它工作得很好。
我想也许有一个变量没有回到零值,或者类似的东西,但我还是找不到这个错误。克里斯托夫
抱歉,但对于部分代码我无法提供更多帮助
你所描述的情况意味着需要对代码进行调试,而这只能通过在使用某种控制点 的情况下执行代码来实现。
chrisstoff
很抱歉,但对于部分代码,我无法提供更多帮助
你所描述的情况意味着有必要对代码进行调试--而这只能通过在使用某种控制点的情况下执行代码来实现谢谢你,Mladen。
令人欣慰的是,你没有发现代码中的问题。
我想代码的所有相关部分都已经发布了,所以我必须在其他地方找到这个错误。
hock87
请阅读你上面的帖子,了解该问题的解决方案
该问题的完整代码如下。
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0);
stop=(Ask-stopsize*Point);
prof=(Ask+profsize*Point);
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
Malden,
如果我想按账户余额 的一定比例开出手数,该如何编码?
例如。
我的账户余额为500美元。
我想以5%的比例开仓,然后自动计算并开仓0.25美元的手,TP=10 SL=20。
如何进行编码?
谢谢。
马尔登。
如果我想按账户余额的某一百分比开出手数,如何编码?
例如。
我的账户余额为500美元。
我想以5%的比例开仓,然后自动计算并开仓0.25美元的手,TP=10 SL=20。
如何编写代码?
谢谢。你可以用这样的函数 来实现。
{
RefreshRates();
double pPoint = MarketInfo(Symbol(),MODE_POINT);
double step = MarketInfo(Symbol(),MODE_LOTSTEP);
double minLot = MarketInfo(Symbol()l,MODE_MINLOT);
double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);
double lots = minLot;
if (risk>0 && stopLoss>0)
{
lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(s_symbol,MODE_TICKVALUE)/pPoint);
}
}
return(MathMax(MathMin(lots,maxLot),minLot));
}
PS: stopLoss必须以点/分的形式传递给函数(不是整数)。
你可以用这样的函数来实现。
{
RefreshRates();
double pPoint = MarketInfo(Symbol(),MODE_POINT);
double step = MarketInfo(Symbol(),MODE_LOTSTEP);
double minLot = MarketInfo(Symbol()l,MODE_MINLOT);
double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);
double lots = minLot;
if (risk>0 && stopLoss>0)
{
lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(s_symbol,MODE_TICKVALUE)/pPoint);
}
}
return(MathMax(MathMin(lots,maxLot),minLot));
}
谢谢你,姆拉登。
但我未能将代码复合为买单代码。
它出现了许多错误和警告。
如何复合它?
谢谢。
extern double profsize = 10;
int err;
int ticket;
double stop;
double prof;
int start()
{
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen);
stop=(Ask-stopsize*Point);
prof=(Ask+profsize*Point);
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
err=GetLastError();
// Comment("This is a test ", err, " ", stop, " ", prof);
Comment(" ");
}谢谢你,Mladen。
但我未能将代码复合为买单代码。
它出现了许多错误和警告。
如何复合它呢?
谢谢。
extern double profsize = 10;
int err;
int ticket;
double stop;
double prof;
int start()
{
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen);
stop=(Ask-stopsize*Point);
prof=(Ask+profsize*Point);
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
err=GetLastError();
// Comment("This is a test ", err, " ", stop, " ", prof);
Comment(" ");
}试着这样做(我现在已经测试过了,它是有效的)。
extern double profsize = 10;
int err;
int ticket;
double stop;
double prof;
int init() { return(0); }
int deinit() { return(0); }
int start()
{
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen);
stop=(Ask-stopsize*Point*MathPow(10,Digits%2));
prof=(Ask+profsize*Point*MathPow(10,Digits%2));
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
err=GetLastError();
// Comment("This is a test ", err, " ", stop, " ", prof);
Comment(" ");
}亲爱的mladen和先生的工具,请。
是否有可能创建一个基于某些条件的EA,如3或4个指标满足预定条件的信号。
例如
我想让EA发出买入信号。
ema 8 cross ema 21
QQE高于0
非滞后MA为绿色
蜡烛在一目连云图 之上
EA不应该打开交易,而只是在满足所述条件时给出信号。
谢谢你,姆拉登。
我已经试过了。
但它仍然以0.1美元的价格开仓
我想以我的账户余额 的一定比例开出手数。
例如:账户余额为500美元。
开了一个5%的手数,然后它自动计算并开了0.25美元的手,TP=10 SL=20。
LotSizeSlot1 = AccountBalance() * (RiskSlot1 / 100)
LotSizeSlot1 = $500*(5%/100)
LotSizeSlot1 = 0.25美元
然后它自动打开0.25美元的手,TP=10 SL=20。
如何创建它?
谢谢。
谢谢你,Mladen。
我已经试过了。
但它仍然以0.1美元开出手数。
我想按照我的账户余额的一定比例开出手数。
例如:账户余额为500美元。
以5%的比例开出手数,然后自动计算并开出0.25美元的手数,TP=10 SL=20。
LotSizeSlot1 = AccountBalance() * (RiskSlot1 / 100)
LotSizeSlot1 = $500*(5%/100)
LotSizeSlot1 = 0.25美元
然后它自动打开0.25美元的手,TP=10 SL=20。
如何创建它?
谢谢。像附件中的那样