初学者的问题 MQL5 MT5 MetaTrader 5 - 页 63 1...565758596061626364656667686970...1503 新评论 Yedelkin 2012.11.07 05:44 #621 Gumko: Gumko : 那这个任务要多久才会先出现......? 它已经站立了2天了。 我等了8-10天,然后我放弃了,把它关掉了。 ACSID 2012.11.07 07:25 #622 我想知道Tester软件在后台的CPU负载有多大? mario 2012.11.09 14:34 #623 大家好。 修改和问题。 外部功能。 bool ModifyPosition(const string symbol,double StopLoss,double Takeprofit){//---- 绑定结构和交易结果 MqlTradeRequest请求。 MqlTradeResult结果。//---- 结构初始化的交易搜索 MqlTradeRequest的头寸修改 request.action =TRADE_ACTION_SLTP; request.symbol = symbol; request.sl = StopLoss; request.tp = Takeprofit; 字符串=""。 StringConcatenate(word.)"<<============ Modifyposition(): 修改位置 ", 符号," ============ >>")。 打印(word)。//---- 修改仓位并检查交易搜索的结果 if(!OrderSend(request,result) || result.deal==0){ Print("Modify error =", GetLastError(); return(false)。} return(true)。} 但它并不像这样工作。 如何做? 谢谢你 :) Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций www.mql5.com Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5 Questions from Beginners MQL5 [存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. [Archive!] Any rookie question, Yedelkin 2012.11.09 15:57 #624 mario065: 但它不像那样工作,我怎么做呢? 谢谢你 :) 这样试试吧。MqlTradeRequest request={0}; MqlTradeResult result ={0}; mario 2012.11.10 08:36 #625 Yedelkin: 这样试试吧。 耶德尔金。 谢谢你,它没有发挥作用。 我检查了它是否正确计算了函数调用的开始。 我是这样做的。 double Bid = NormalizeDouble(SymbolInfoDouble(Currency,SYMBOL_BID),_Digits)。 double Ask = NormalizeDouble(SymbolInfoDouble(Currency,SYMBOL_ASK),_Digits)。 double Open = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN),_Digits) 。 double SL = NormalizeDouble(PositionGetDouble(POSITION_SL),_Digits)。 如果(Open>0){ start_buy = Ask - Open; Print("start_buy=",start_buy); start_sel = Open - Bid;Print("start_sel=",start_sel);} 日志中的惊喜。 MR 0 Core 1 10:21:49 2012.10.01 10:12:42 交易#2在1.28146卖出0.10欧元美元 完成(基于订单#2)。 GH 0 Core 1 10:21:49 2012.10.01 01:12:42 交易执行 [#2在1.28146卖出0.10 EURUSD] NI 0 Core 1 10:21:49 2012.10.01 01:12:42 订单执行 在1.28146卖出0.10 [#2 在1.28146卖出0.10 EURUSD (0.00000) OF 0 核心 1 10:21:49 2012.10.01 01:12:43 start_buy=0.00012999999999635 DR 0 Core 1 10:21:49 2012.10.01 01:12:43start_sel=5.000000000010552e-005 LE 0 Core 1 10:21:49 2012.10.01 01:12:43 start_buy=0.00010999999998325 EN 0 核心 1 10:21:49 2012.10.01 01:12:43start_sel=7.00000000000145-005 当然,我只是想知道Sela,这些数字是怎么来的? 我想我写的函数是正确的,如图所示。 SL和TP的修改 修改StopLoss和/或TakeProfit水平的交易指令。需要4个字段。 行动符号SLTP Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций www.mql5.com Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций - Документация по MQL5 Questions from Beginners MQL5 Expert Advisor <ALL DISCUSSIONS Calendar trading Yedelkin 2012.11.10 09:30 #626 mario065: 谢谢你,它没有发挥作用。那么,究竟什么是 "失败"? mario065 : 我检查了它是否正确地开始了函数调用,这是我的做法。正确插入代码(Ctrl+Alt+M)。 double Bid = NormalizeDouble(SymbolInfoDouble(Currency,SYMBOL_BID),_Digits); double Ask = NormalizeDouble(SymbolInfoDouble(Currency,SYMBOL_ASK),_Digits); double Open = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN),_Digits); double SL = NormalizeDouble(PositionGetDouble(POSITION_SL),_Digits); if(Open > 0) { start_buy = Ask - Open;Print("start_buy=",start_buy); start_sel = Open - Bid;Print("start_sel=",start_sel); }在这里,归一化必须以不同的顺序来使用。1.由于SymbolInfoDouble(Currency,SYMBOL_BID)类型的值来自服务器,它们已经被认为是标准化的。而且没有必要对它们进行第二次正常化。也就是说,你可以直接写他们。double Bid = SymbolInfoDouble(Currency,SYMBOL_BID);2.但是在任何算术运算 之后,归一化就消失了,所以如果你需要得到一个归一化的数字,你应该这样写。start_buy = NormalizeDouble(Ask - Open,_Digits);我还在考虑其他的问题。 Yedelkin 2012.11.10 09:39 #627 mario065: 日志中的惊喜。DR 0 Core 1 10:21:49 2012.10.01 01:12:43start_sel=5.000000000010552e-005 EN 0 Core 1 10:21:49 2012.10.01 01:12:43start_sel=7.0000000145e-005 当然,只对塞尔感兴趣--这样的数字是怎么来的? 7.00000000000145e-005 只是写实数的一种方式。我想这叫 "科学"。更多细节见。"MQL5参考指南 /语言基础知识/ 数据类型/ 实数类型(double, float)"。 Документация по MQL5 - языку автоматического трейдинга и тестированию торговых стратегий www.mql5.com Справочник MetaQuotes Language 5 (MQL5) - Документация на MQL5.com mario 2012.11.10 10:16 #628 Yedelkin:7.00000000000145e-005 只是实数数值的一种写法。我想这叫 "科学"。更多细节见。"MQL5参考指南 /语言基础知识/ 数据类型/ 实数类型(double, float)"。 耶德尔金。 谢谢你解决了这个问题。 这里是代码,开仓的函数是由Nikolay Kositsin编写的。 附加的文件: MTB_E.mq5 9 kb Leser 2012.11.10 21:26 #629 请告知在EA中如何以及在哪里指定属于2号窗口的MA。 例如,我在MFI中添加了MA,我想在我的EA中注册这个MA。我不知道在哪里和如何做。 谢谢你的答复) Yedelkin 2012.11.11 06:54 #630 mario065: 以下是代码。开设该职位的职能是由尼古拉-科西津撰写的。尼古拉-科西津。 1.我想说的是:使用别人的代码要非常小心。因为别人的代码也意味着别人的错误。2.在这里(https://www.mql5.com/ru/forum/6343/page64#comment_357008),我建议你在使用变量之前尝试正确地将其归零。但你的代码还没有实现这个建议。此外,你的代码包含以下类型的结构。//+------------------------------------------------------------------+ //| Modify position. | //+------------------------------------------------------------------+ bool ModifyPosition(const string symbol,double StopLoss,double Takeprofit) { //---- обявяване на структурата и резултата на търговското искане MqlTradeRequest request; MqlTradeResult result; //---- структурна инициализация на търговското искане MqlTradeRequest за модифициране на позиция request.action = ... request.symbol = ... request.sl = ... request.tp = ... ... //---- модифицираме позицията и проверяваме резултата от търговското искане if(!OrderSend(request,result) || result.deal==0) { ... } ZeroMemory(request); ZeroMemory(result); return(true); }你看,在这个结构中,请求和结果变量不是在使用之前而是在使用之后 被清零。此外,当这些局部变量被归零时,函数就会停止运行,也就是说,这种归零本身是没有意义的。换句话说,这样的结构是一个很好的例子,说明MqlTradeRequest 和MqlTradeResult 变量不应该 被归零。所以,如果你很渴望,请尝试正确地清除变量。如果出了问题,请详细描述什么是 "不工作"。3.标准库有一个交易类"MQL5参考/ 标准库/ 交易类/ CTrade"。试着想一想如何在实践中应用它。在沉浸于语言的初始阶段,这门课可能已经很足够了。例如,这个类有以下方法:"MQL5参考/ 标准库/ 交易类/ 2CTrade/ PositionModify"。它的实施方式如下。//+------------------------------------------------------------------+ //| Modify specified opened position | //+------------------------------------------------------------------+ bool CTrade::PositionModify(const string symbol,const double sl,const double tp) { //--- check stopped if(IsStopped(__FUNCTION__)) return(false); //--- clean ClearStructures(); //--- setting request m_request.action=TRADE_ACTION_SLTP; m_request.symbol=symbol; m_request.magic =m_magic; m_request.sl =sl; m_request.tp =tp; //--- action and return the result return(OrderSend(m_request,m_result)); }其中的'ClearStructures();'一行在 使用前 清除了m_request变量。 1...565758596061626364656667686970...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
Gumko:
它已经站立了2天了。
大家好。
修改和问题。
外部功能。
bool ModifyPosition(const string symbol,double StopLoss,double Takeprofit){
//---- 绑定结构和交易结果
MqlTradeRequest请求。
MqlTradeResult结果。
//---- 结构初始化的交易搜索 MqlTradeRequest的头寸修改
request.action =TRADE_ACTION_SLTP;
request.symbol = symbol;
request.sl = StopLoss;
request.tp = Takeprofit;
字符串=""。
StringConcatenate(word.)
"<<============ Modifyposition(): 修改位置 ",
符号," ============ >>")。
打印(word)。
//---- 修改仓位并检查交易搜索的结果
if(!OrderSend(request,result) || result.deal==0)
{
Print("Modify error =", GetLastError();
return(false)。
}
return(true)。
}
但它并不像这样工作。
如何做?
谢谢你 :)
这样试试吧。
这样试试吧。
耶德尔金。
谢谢你,它没有发挥作用。
我检查了它是否正确计算了函数调用的开始。
我是这样做的。
double Bid = NormalizeDouble(SymbolInfoDouble(Currency,SYMBOL_BID),_Digits)。
double Ask = NormalizeDouble(SymbolInfoDouble(Currency,SYMBOL_ASK),_Digits)。
double Open = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN),_Digits) 。
double SL = NormalizeDouble(PositionGetDouble(POSITION_SL),_Digits)。
如果(Open>0){
start_buy = Ask - Open; Print("start_buy=",start_buy);
start_sel = Open - Bid;Print("start_sel=",start_sel);
}
日志中的惊喜。
MR 0 Core 1 10:21:49 2012.10.01 10:12:42 交易#2在1.28146卖出0.10欧元美元 完成(基于订单#2)。
GH 0 Core 1 10:21:49 2012.10.01 01:12:42 交易执行 [#2在1.28146卖出0.10 EURUSD]
NI 0 Core 1 10:21:49 2012.10.01 01:12:42 订单执行 在1.28146卖出0.10 [#2 在1.28146卖出0.10 EURUSD (0.00000)
OF 0 核心 1 10:21:49 2012.10.01 01:12:43 start_buy=0.00012999999999635
DR 0 Core 1 10:21:49 2012.10.01 01:12:43start_sel=5.000000000010552e-005
LE 0 Core 1 10:21:49 2012.10.01 01:12:43 start_buy=0.00010999999998325
EN 0 核心 1 10:21:49 2012.10.01 01:12:43start_sel=7.00000000000145-005
当然,我只是想知道Sela,这些数字是怎么来的?
我想我写的函数是正确的,如图所示。
SL和TP的修改
修改StopLoss和/或TakeProfit水平的交易指令。需要4个字段。
那么,究竟什么是 "失败"?
正确插入代码(Ctrl+Alt+M)。
在这里,归一化必须以不同的顺序来使用。
1.由于SymbolInfoDouble(Currency,SYMBOL_BID)类型的值来自服务器,它们已经被认为是标准化的。而且没有必要对它们进行第二次正常化。也就是说,你可以直接写他们。
2.但是在任何算术运算 之后,归一化就消失了,所以如果你需要得到一个归一化的数字,你应该这样写。
我还在考虑其他的问题。
DR 0 Core 1 10:21:49 2012.10.01 01:12:43start_sel=5.000000000010552e-005
EN 0 Core 1 10:21:49 2012.10.01 01:12:43start_sel=7.0000000145e-005
当然,只对塞尔感兴趣--这样的数字是怎么来的?
7.00000000000145e-005 只是实数数值的一种写法。我想这叫 "科学"。更多细节见。"MQL5参考指南 /语言基础知识/ 数据类型/ 实数类型(double, float)"。
耶德尔金。
谢谢你解决了这个问题。
这里是代码,开仓的函数是由Nikolay Kositsin编写的。
例如,我在MFI中添加了MA,我想在我的EA中注册这个MA。我不知道在哪里和如何做。
谢谢你的答复)
1.我想说的是:使用别人的代码要非常小心。因为别人的代码也意味着别人的错误。
2.在这里(https://www.mql5.com/ru/forum/6343/page64#comment_357008),我建议你在使用变量之前尝试正确地将其归零。但你的代码还没有实现这个建议。此外,你的代码包含以下类型的结构。
你看,在这个结构中,请求和结果变量不是在使用之前而是在使用之后 被清零。此外,当这些局部变量被归零时,函数就会停止运行,也就是说,这种归零本身是没有意义的。换句话说,这样的结构是一个很好的例子,说明MqlTradeRequest 和MqlTradeResult 变量不应该 被归零。所以,如果你很渴望,请尝试正确地清除变量。如果出了问题,请详细描述什么是 "不工作"。
3.标准库有一个交易类"MQL5参考/ 标准库/ 交易类/ CTrade"。试着想一想如何在实践中应用它。在沉浸于语言的初始阶段,这门课可能已经很足够了。例如,这个类有以下方法:"MQL5参考/ 标准库/ 交易类/ 2CTrade/ PositionModify"。它的实施方式如下。
其中的'ClearStructures();'一行在 使用前 清除了m_request变量。