新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 22 1...151617181920212223242526272829...1953 新评论 Alexey Viktorov 2016.11.30 06:38 #211 Artyom Trishkin:О!谢谢。(笑)。早上自己没有意识到......不过还是需要对填充数组进行检查。在Quatermass没有见面,而在Five中,由于缺乏历史数据,往往不能在第一时间填写数据。ZS.你应该多睡觉--你的思想会朝这个方向努力。嗯,你可以把它放在一个循环中 do while(CopyOpen(_Symbol, PERIOD_CURRENT, 1, 15, openCandle) < 0);甚至是 do while(CopyOpen(_Symbol, PERIOD_CURRENT, 1, 15, openCandle) < 15);准确复制所要求的金额。ps;当我去倒茶的时候,我有另一个想法,使用CopyRates()和一个结构MqlRates rates[] 的数组,但我太懒了,无法重写一些东西。 Artyom Trishkin 2016.11.30 07:26 #212 Alexey Viktorov:那么,你也可以把它放在一个循环中 do while(CopyOpen(_Symbol, PERIOD_CURRENT, 1, 15, openCandle) < 0);甚至是 do while(CopyOpen(_Symbol, PERIOD_CURRENT, 1, 15, openCandle) < 15);准确地复制所要求的副本数量。ps;当我喝茶的时候,我有了另一个想法--使用CopyRates()和结构数组MqlRates rates[],但我太懒了,无法重写。 这不就是我提议的方式吗? Artyom Trishkin 2016.11.30 07:37 #213 giannis1386: 帮助我检查其他出售条件。int start(){//+--------------------------------------------------------------------+//| -= stop loss в без убыток =- |//+--------------------------------------------------------------------+bool result;double stop;int cmd,error;for(int i=0;i<OrdersTotal();i++){if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderProfit()>pOPCS){ cmd=OrderType();double blevel=OrderStopLoss()<Bid-Point*TS;double slevel=OrderStopLoss()>Ask+Point*TS;//---if(cmd==OP_BUY || cmd==OP_SELL){while(true){if(cmd==OP_BUY && blevel) stop=Bid-Point*TS;else stop=Ask+Point*TS; result=OrderModify(OrderTicket(),OrderOpenPrice(),stop,0,0,Orange);if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }else error=0;if(error==135) RefreshRates();else break;}}}}它有一个奇怪的逻辑。但是,即使你不去看那些奇怪的逻辑,那么。在这里,你有两个条件 是买入,其余的都 是卖出。if(cmd==OP_BUY && blevel) stop=Bid-Point*TS;else stop=Ask+Point*TS; giannis1386 2016.11.30 07:43 #214 Artyom Trishkin:你的逻辑很奇怪。但是,即使你不去看那些奇怪的逻辑,那么。在这里,你有两个条件 被检查为买入,其余的都是 卖出。if(cmd==OP_BUY && blevel) stop=Bid-Point*TS;else stop=Ask+Point*TS;我试着把slevel=OrderStopLoss()>Ask+Point*TS 作为卖点。但由于我对编程一窍不通,所以没有任何有用的东西出来。 我在论坛上摸索了一个星期。为什么有这么奇怪的逻辑?)这段代码不完全是我的。 Artyom Trishkin 2016.11.30 07:48 #215 giannis1386:我试着加入slevel=OrderStopLoss()>Ask+Point*TS。我在论坛上摸索了一个星期。 我所有的尝试都以卖出止损点与价格一起移动而告终。为什么会有这么奇怪的逻辑?)这些代码并不全是我的。 我尽我所能地重做了它。你为什么不先写出卖出和买入止损点应该转移的条件?然后,在你思考过后,在你的代码中写下单据上的内容。 giannis1386 2016.11.30 07:58 #216 Artyom Trishkin:首先,用铅笔在一张纸上写下你需要转移停止购买和停止出售的条件。然后,在你思考过后,把写在纸片上的内容写在代码里。slevel=OrderStopLoss()>Ask+Point*TS;这就是卖出头寸的样子。 Artyom Trishkin 2016.11.30 08:02 #217 giannis1386:slevel=OrderStopLoss()>Ask+Point*TS; 好吧,似乎是正确的。 或者是错误的? 我是新手。你甚至明白在这种情况下写的是什么吗?这是对一个双数类型 的变量进行0或1的赋值。你想得到什么? giannis1386 2016.11.30 08:09 #218 Artyom Trishkin:你甚至明白在这种情况下写的是什么吗?它是对一个双数类型 的变量进行0或1的赋值。你想达到什么目的?这是我校对的内容。检查条件--不要来回移动SL,而只能朝一个方向移动。例如,对于一个购买的订单,你的公式是订单止损()<买入点*拖曳止损利用这个例子,我已经为塞尔做了。 Artyom Trishkin 2016.11.30 08:16 #219 giannis1386:这是我读到的内容。检查条件--不能来回移动SL,而只能朝一个方向移动例如,对于一个购买的订单,你的公式是订单止损()<买入点*拖曳止损使用这个例子,我把它粘贴在卖出位置上。所以你需要这样。在俄罗斯...如果止损单小于买入价减去尾随止损距离,那么...你的行动然后你把这个逻辑表达式 的结果分配给变量--即要么是零,要么是一。 giannis1386 2016.11.30 08:42 #220 Artyom Trishkin:所以你需要这个。在俄罗斯...如果止损单小于买入价减去尾随止损距离,那么...你的行动然后你把这个布尔表达式 的结果分配给变量--即要么是0,要么是1。我完全糊涂了。double blevel=OrderStopLoss()<Bid-Point*TS; 对我有用。SL只追求价格上的利润。double slevel=OrderStopLoss()>Ask+Point*TS; 我不知道怎么把这个加到else中去。它们不是bool。 1...151617181920212223242526272829...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
О!谢谢。(笑)。早上自己没有意识到......不过还是需要对填充数组进行检查。在Quatermass没有见面,而在Five中,由于缺乏历史数据,往往不能在第一时间填写数据。
ZS.你应该多睡觉--你的思想会朝这个方向努力。
嗯,你可以把它放在一个循环中
甚至是
准确复制所要求的金额。
ps;当我去倒茶的时候,我有另一个想法,使用CopyRates()和一个结构MqlRates rates[] 的数组,但我太懒了,无法重写一些东西。
那么,你也可以把它放在一个循环中
甚至是
准确地复制所要求的副本数量。
ps;当我喝茶的时候,我有了另一个想法--使用CopyRates()和结构数组MqlRates rates[],但我太懒了,无法重写。
帮助我检查其他出售条件。
{
//+--------------------------------------------------------------------+
//| -= stop loss в без убыток =- |
//+--------------------------------------------------------------------+
bool result;
double stop;
int cmd,error;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderProfit()>pOPCS)
{
cmd=OrderType();
double blevel=OrderStopLoss()<Bid-Point*TS;
double slevel=OrderStopLoss()>Ask+Point*TS;
//---
if(cmd==OP_BUY || cmd==OP_SELL)
{
while(true)
{
if(cmd==OP_BUY && blevel) stop=Bid-Point*TS;
else stop=Ask+Point*TS;
result=OrderModify(OrderTicket(),OrderOpenPrice(),stop,0,0,Orange);
if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
else error=0;
if(error==135) RefreshRates();
else break;
}
}
}
}
它有一个奇怪的逻辑。但是,即使你不去看那些奇怪的逻辑,那么。
在这里,你有两个条件 是买入,其余的都 是卖出。
else stop=Ask+Point*TS;
你的逻辑很奇怪。但是,即使你不去看那些奇怪的逻辑,那么。
在这里,你有两个条件 被检查为买入,其余的都是 卖出。
else stop=Ask+Point*TS;
我试着把slevel=OrderStopLoss()>Ask+Point*TS 作为卖点。
但由于我对编程一窍不通,所以没有任何有用的东西出来。 我在论坛上摸索了一个星期。
为什么有这么奇怪的逻辑?)这段代码不完全是我的。
我试着加入slevel=OrderStopLoss()>Ask+Point*TS。
我在论坛上摸索了一个星期。 我所有的尝试都以卖出止损点与价格一起移动而告终。
为什么会有这么奇怪的逻辑?)这些代码并不全是我的。 我尽我所能地重做了它。
你为什么不先写出卖出和买入止损点应该转移的条件?
然后,在你思考过后,在你的代码中写下单据上的内容。
首先,用铅笔在一张纸上写下你需要转移停止购买和停止出售的条件。
然后,在你思考过后,把写在纸片上的内容写在代码里。
slevel=OrderStopLoss()>Ask+Point*TS; 好吧,似乎是正确的。 或者是错误的? 我是新手。
你甚至明白在这种情况下写的是什么吗?这是对一个双数类型 的变量进行0或1的赋值。
你想得到什么?
你甚至明白在这种情况下写的是什么吗?它是对一个双数类型 的变量进行0或1的赋值。
你想达到什么目的?
这是我校对的内容。
检查条件--不要来回移动SL,而只能朝一个方向移动。
例如,对于一个购买的订单,你的公式是
订单止损()<买入点*拖曳止损
利用这个例子,我已经为塞尔做了。
这是我读到的内容。
检查条件--不能来回移动SL,而只能朝一个方向移动
例如,对于一个购买的订单,你的公式是
订单止损()<买入点*拖曳止损
使用这个例子,我把它粘贴在卖出位置上。
所以你需要这样。
在俄罗斯...如果止损单小于买入价减去尾随止损距离,那么...你的行动
然后你把这个逻辑表达式 的结果分配给变量--即要么是零,要么是一。
所以你需要这个。
在俄罗斯...如果止损单小于买入价减去尾随止损距离,那么...你的行动
然后你把这个布尔表达式 的结果分配给变量--即要么是0,要么是1。
我完全糊涂了。
double blevel=OrderStopLoss()<Bid-Point*TS; 对我有用。SL只追求价格上的利润。
double slevel=OrderStopLoss()>Ask+Point*TS; 我不知道怎么把这个加到else中去。
它们不是bool。