新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1601 1...159415951596159715981599160016011602160316041605160616071608...1953 新评论 Tretyakov Rostyslav 2021.08.25 10:40 #16001 PapaYozh:这个从指数0开始, 也就是从开始。 我很困惑......你说得太对了!"。 законопослушный гражданин 2021.08.25 15:15 #16002 PapaYozh:这个人从零指数 开始搜索, 即从头开始。 PapaYozh: 这个从零 指数开始,也就是从开始。 啊...现在这一切都说得通了,谢谢你。 законопослушный гражданин 2021.08.26 10:41 #16003 Maxim Kuznetsov: for(int i=OrdersTotal()-1;i>=0;i--) { if (! OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue; double prosad=DBL_MIN; if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue; for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) { double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() ); delta /= MarketInfo(OrderSymbol(),MODE_POINT); if (delta>prosad) prosad=delta; } PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE); } 手工写的,未经测试,充满了错误:-) 根据你的需要调整它并使用它。 请告诉我 -"!"在你的代码中是什么意思? 我还不太了解它 或者除了作者之外,也许还有人可以向我解释? Maxim Kuznetsov 2021.08.26 10:49 #16004 законопослушный гражданин:请告诉我,-"!"在你的代码中是什么意思?我还没有真正理解它。或者除了作者之外,还有谁能给我解释一下? !- 这是一个布尔式的否定,不是 if { !OrderSelect() }翻译为 "如果OrderSelect 不成功" !=分别为 "不等于" законопослушный гражданин 2021.08.26 11:11 #16005 Maxim Kuznetsov:!- 是一个布尔式的否定,NOTif { !OrderSelect() }翻译为 "如果不成功OrderSelect"! 谢谢 законопослушный гражданин 2021.08.26 11:31 #16006 Maxim Kuznetsov: for(int i=OrdersTotal()-1;i>=0;i--) { if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue; double prosad=DBL_MIN; if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue; for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) { double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() ); delta /= MarketInfo(OrderSymbol(),MODE_POINT); if (delta>prosad) prosad=delta; } PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE); } 手写的,没有经过检查,有很多错误 :-) 根据你的需要调整它,并使用它。 我可能已经 "清理 "了代码,但是这一行显示了一个警告for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0; j--) 由于类型转换可能造成的数据损失 搞不清楚哪里出了问题? Maxim Kuznetsov 2021.08.26 11:37 #16007 законопослушный гражданин:我似乎已经 "清理 "了代码,但在这一行for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) 出现了警告。由于类型转换而可能造成的数据损失我搞不清楚哪里出了问题? 我把参数弄混了......当它绕过终端而 "飞 "到论坛上时,这是很常见的混乱。 iBarShift(OrderSymbol(),PERIOD_M1,OrderOpenTime()) 应该是 законопослушный гражданин 2021.08.26 11:47 #16008 Maxim Kuznetsov:参数混在一起......当绕过终端直接在论坛上 "飞 "写时,常见的混乱情况。iBarShift(OrderSymbol(),PERIOD_M1,OrderOpenTime()) 应该是 谢谢 законопослушный гражданин 2021.08.26 12:08 #16009 законопослушный гражданин:我似乎已经 "清理 "了代码,但在这一行for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) 出现了警告。由于类型转换可能造成的数据损失我搞不清楚哪里出了问题? 我真的不明白哪里出了问题? 我可以把这整个 "东西 "附在我的专家顾问上,通过策略测试器运行,并在测试报告中输出信息? 能否成功? Tretyakov Rostyslav 2021.08.26 12:12 #16010 有什么诀窍来处理这个问题吗? 在历史上的测试器中,一个简单的订单打开有时会导致一个错误... OrderSend(_Symbol,OP_SELL,0.5,Bid,0,0,0,NULL,0) 2021.08.26 14:56:33.375 2017.08.07 08:00:00 Trader EURUSD,H1: OrderSend error 3 ERR_INVALID_TRADE_PARAMETERS - 这到底是什么,意味着什么? 1...159415951596159715981599160016011602160316041605160616071608...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这个从指数0开始, 也就是从开始。
这个人从零指数 开始搜索, 即从头开始。
这个从零 指数开始,也就是从开始。
啊...现在这一切都说得通了,谢谢你。
for(int i=OrdersTotal()-1;i>=0;i--) {
if (! OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;
double prosad=DBL_MIN;
if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;
for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {
double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );
delta /= MarketInfo(OrderSymbol(),MODE_POINT);
if (delta>prosad) prosad=delta;
}
PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);
}
手工写的,未经测试,充满了错误:-) 根据你的需要调整它并使用它。
请告诉我 -"!"在你的代码中是什么意思?
我还不太了解它
或者除了作者之外,也许还有人可以向我解释?
请告诉我,-"!"在你的代码中是什么意思?
我还没有真正理解它。
或者除了作者之外,还有谁能给我解释一下?
!- 这是一个布尔式的否定,不是
if { !OrderSelect() }翻译为 "如果OrderSelect 不成功"
!=分别为 "不等于"
!- 是一个布尔式的否定,NOT
if { !OrderSelect() }翻译为 "如果不成功OrderSelect"
!
谢谢
for(int i=OrdersTotal()-1;i>=0;i--) {
if (!OrderSelect(i,SELECT_BY_POSITON,MODE_TRADES)) continue;
double prosad=DBL_MIN;
if (OrderType()!=OP_BUY && OrderType!=OP_SELL) continue;
for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) {
double delta=( OrderType()==OP_BUY? OrderOpenPrice()-iLow(OrderSymbol(),PERIOD_M1,j) : iHigh(OrderSymbol(),PERIOD_M1,j)-OrderOpenPrice() );
delta /= MarketInfo(OrderSymbol(),MODE_POINT);
if (delta>prosad) prosad=delta;
}
PrintFormat("Максимальная просадка по ордеру %d = %d пунктов , %f денег",OrderTicket(),(int)(prosad),prosad*OrderLots()*MarketInfo(OrderSymbol(),MODE_TICKVALUE);
}
手写的,没有经过检查,有很多错误 :-) 根据你的需要调整它,并使用它。
我可能已经 "清理 "了代码,但是这一行显示了一个警告for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0; j--)
由于类型转换可能造成的数据损失
搞不清楚哪里出了问题?
我似乎已经 "清理 "了代码,但在这一行for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) 出现了警告。
由于类型转换而可能造成的数据损失
我搞不清楚哪里出了问题?
我把参数弄混了......当它绕过终端而 "飞 "到论坛上时,这是很常见的混乱。
iBarShift(OrderSymbol(),PERIOD_M1,OrderOpenTime()) 应该是
参数混在一起......当绕过终端直接在论坛上 "飞 "写时,常见的混乱情况。
iBarShift(OrderSymbol(),PERIOD_M1,OrderOpenTime()) 应该是
谢谢
我似乎已经 "清理 "了代码,但在这一行for(int j=iBarShift(OrderSymbol(),OrderOpenTime(),PERIOD_M1); j>=0;j--) 出现了警告。
由于类型转换可能造成的数据损失
我搞不清楚哪里出了问题?
我真的不明白哪里出了问题? 我可以把这整个 "东西 "附在我的专家顾问上,通过策略测试器运行,并在测试报告中输出信息?
能否成功?
有什么诀窍来处理这个问题吗?
在历史上的测试器中,一个简单的订单打开有时会导致一个错误...
ERR_INVALID_TRADE_PARAMETERS - 这到底是什么,意味着什么?