初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1432 1...142514261427142814291430143114321433143414351436143714381439...1503 新评论 jeremy10p100 2022.12.22 05:50 #14311 大家好、 我是新来的,希望我写对了地方:我正在尝试编写一个 EA,它可以帮助我进行资金管理,比如..............: "当过去的损失+当前的缩水低于 x% 时,关闭所有交易 "+"立即关闭所有交易,直到交易时段/交易日结束"。 如果有人知道如何做到这一点,或者可以帮助我,请与我联系。 谢谢,祝您交易顺利) Alexey Petrov 2022.12.22 09:37 #14312 jeremy10p100 # :大家好我是新来的,希望我写对了地方:我想编写一个 EA,帮助我进行资金管理,比如.NET、.NET、.NET、.NET 和.NET: "当过去的损失+当前的缩水低于 x% 时,关闭所有交易 "+"立即关闭所有交易,直到交易时段/交易日结束"。 如果有人知道如何做到这一点或可以帮助我,请与我们联系。谢谢,祝您交易顺利) 您好、 请尝试在市场上搜索现成的解决方案 -https://www.mql5.com/fr/search#!keyword=money%20management&module=mql5_module_market 您也可以向自由职业者订购定制解决方案 -https://www.mql5.com/fr/job Kira27 2022.12.27 10:25 #14313 大家好!请告诉我如何将数组中的值复制到数据库中? 下面是使用数据库的示例代码,当我尝试将数组中的数据插入数据库中的 SALARY 字段时,在运行脚本时出现错误。 还有一个问题,例如,如果我有一个包含订单数据的数组,而且有很多订单,我如何将所有这些数组移动到数据库中的一个表中? VALUES (1,'Paul',a,'California',29000.00) --> VALUES (1,'Paul',a,'California',Mass[0]) void OnStart() { double Mass[4]={1,2,5,6}; int a =222; Alert(Mass[3]); string filename="company.sqlite"; //--- создадим или откроем базу данных в общей папке терминалов int db=DatabaseOpen(filename, DATABASE_OPEN_READWRITE | DATABASE_OPEN_CREATE |DATABASE_OPEN_COMMON); if(db==INVALID_HANDLE) { Print("DB: ", filename, " open failed with code ", GetLastError()); return; } //--- если таблица COMPANY существует, то удалим её if(DatabaseTableExists(db, "COMPANY_2")) { //--- удаляем таблицу if(!DatabaseExecute(db, "DROP TABLE COMPANY_2")) { Print("Failed to drop table COMPANY with code ", GetLastError()); DatabaseClose(db); return; } } //--- создаем таблицу COMPANY if(!DatabaseExecute(db, "CREATE TABLE COMPANY_2(" "ID INT PRIMARY KEY NOT NULL," "NAME TEXT NOT NULL," "AGE INT NOT NULL," "ADDRESS CHAR(50)," "SALARY REAL );")) { Print("DB: ", filename, " create table failed with code ", GetLastError()); DatabaseClose(db); return; } //--- вставляем данные в таблицу if(!DatabaseExecute(db, "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1,'Paul',a,'California',Mass[0]); " "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2,'Allen',25,'Texas',Mass[1]); " "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3,'Teddy',a,'Norway',Mass[2]);" "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4,'Mark',25,'Rich-Mond',65000.00);")) { Print("DB: ", filename, " insert failed with code ", GetLastError()); DatabaseClose(db); return; } //--- создадим запрос и получим хендл на него int request=DatabasePrepare(db, "SELECT * FROM COMPANY_2"); if(request==INVALID_HANDLE) { Print("DB: ", filename, " request failed with code ", GetLastError()); DatabaseClose(db); return; } DatabasePrint( db, // хендл базы данных, полученный в DatabaseOpen "COMPANY_2", // таблица или SQL-запрос 0 // комбинация флагов ); } //+------------------------------------------------------------------+ Yuriy Bykov 2022.12.27 17:05 #14314 比如,试试这样做。 而不是 if(!DatabaseExecute(db, "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1,'Paul',a,'California',Mass[0]); " "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2,'Allen',25,'Texas',Mass[1]); " "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3,'Teddy',a,'Norway',Mass[2]);" "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4,'Mark',25,'Rich-Mond',65000.00);")) 写 if(!DatabaseExecute(db, "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1,'Paul',a,'California'," + DoubleToString(Mass[0]) + "); " "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2,'Allen',25,'Texas'," + DoubleToString(Mass[1]) + "); " "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3,'Teddy',a,'Norway'," + DoubleToString(Mass[2]) + ");" "INSERT INTO COMPANY_2 (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4,'Mark',25,'Rich-Mond',65000.00);")) 这不是唯一的方法。 Kira27 2022.12.27 19:12 #14315 Yuriy Bykov #:例如,试着这样做。而不是写这不是唯一的方法。 谢谢!这很有效,我在哪里可以读到?还有其他方法吗? JRandomTrader 2022.12.28 22:21 #14316 lego9955 创建一个自定义角色。 我需要对它进行修改,使它不仅能创建一个字符,还能创建脚本中写入的多个字符。例如,AB AC AD 三个,以后可以按照这个原则任意添加。每次都从列表中替换下一个符号名称,如此循环。 比如 string sNames = "AB,AC,AD"; string aNames[]; void OnStart() { int i; bool ch=true; if(StringSplit(sNames,StringGetCharacter(",",0),aNames) <= 0)return; ResetLastError(); for(i=0; i<ArraySize(aNames); i++) { ch=ch && CustomSymbolCreate(aNames[i]); if(!ch) { PrintFormat("Symbol '%s' : error %d",aNames[i],GetLastError()); break; // При первой ошибке выходим } } if(!ch)return; ... } lego9955 2022.12.28 23:50 #14317 我以前也这么做过,但我以为我已经做完了,所以删除了我的帖子。 void OnStart() { string arr[]= { "AB", "AC", "AD" }; for(int i=0; i<ArraySize(arr); i++) { bool ch =CustomSymbolCreate(arr[i]); SymbolSelect(arr[i],true); } } 当我刷新页面时,我看到你已经回复了。是的,错误处理 更正确了。谢谢! lynxntech 2022.12.29 00:01 #14318 lego9955 错误处理 更正确了。谢谢! ArraySize(arr) 在循环外用 ushort 定义更正确 JRandomTrader 2022.12.29 00:06 #14319 lynxntech #:更正确的做法是在循环外用 uint 定义 我经常这样做,但我还是希望相信编译器能优化这种标准的东西。 taramortom 2022.12.29 09:10 #14320 机器人有两个过滤器:随机 过滤器和RSI 过滤器,每个过滤器都有一组参数。只能使用一个过滤器。也就是说,如果随机 指数打开,RSI 就应该关闭,反之亦然。 现在我做到了: 我为Stochastic 和RSI 设置了输入 变量,启用或禁用它们的工作。 在OnInit 程序块 中,如果Stochastic 和RSI 同时打开,我将检查INIT_PARAMETERS_INCORRECT 错误。 在OnInit 程序块中,如果随机 关闭,则其所有参数必须为零,否则将出现 INIT_PARAMETERS_INCORRECT/ 错误,RSI 也是如此。 目的: 在优化不兼容的选择时不浪费时间。例如,如果选择RSI,则不会搜索随机 参数(超买/超卖区域大小、K、D 周期、减速、平滑方法、价格)。 事实证明,我的选择不起作用。在优化过程中,这些变量似乎被过度优化了,这影响了优化的最终结果。 请教如何使优化器在启用RSI 时不搜索随机 参数,反之亦然。 1...142514261427142814291430143114321433143414351436143714381439...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
大家好、
我是新来的,希望我写对了地方:我正在尝试编写一个 EA,它可以帮助我进行资金管理,比如..............:
"当过去的损失+当前的缩水低于 x% 时,关闭所有交易 "+"立即关闭所有交易,直到交易时段/交易日结束"。
如果有人知道如何做到这一点,或者可以帮助我,请与我联系。
谢谢,祝您交易顺利)
大家好
我是新来的,希望我写对了地方:我想编写一个 EA,帮助我进行资金管理,比如.NET、.NET、.NET、.NET 和.NET:
"当过去的损失+当前的缩水低于 x% 时,关闭所有交易 "+"立即关闭所有交易,直到交易时段/交易日结束"。
如果有人知道如何做到这一点或可以帮助我,请与我们联系。
谢谢,祝您交易顺利)
您好、
请尝试在市场上搜索现成的解决方案 -https://www.mql5.com/fr/search#!keyword=money%20management&module=mql5_module_market
您也可以向自由职业者订购定制解决方案 -https://www.mql5.com/fr/job
比如,试试这样做。
而不是
写
这不是唯一的方法。
例如,试着这样做。
而不是
写
这不是唯一的方法。
谢谢!这很有效,我在哪里可以读到?还有其他方法吗?
我需要对它进行修改,使它不仅能创建一个字符,还能创建脚本中写入的多个字符。
例如,AB AC AD 三个,以后可以按照这个原则任意添加。
每次都从列表中替换下一个符号名称,如此循环。
比如
我以前也这么做过,但我以为我已经做完了,所以删除了我的帖子。
当我刷新页面时,我看到你已经回复了。是的,错误处理 更正确了。谢谢!
ArraySize(arr)
在循环外用 ushort 定义更正确
更正确的做法是在循环外用 uint 定义
我经常这样做,但我还是希望相信编译器能优化这种标准的东西。
机器人有两个过滤器:随机 过滤器和RSI 过滤器,每个过滤器都有一组参数。只能使用一个过滤器。也就是说,如果随机 指数打开,RSI 就应该关闭,反之亦然。
现在我做到了:
目的:
请教如何使优化器在启用RSI 时不搜索随机 参数,反之亦然。