新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1540 1...153315341535153615371538153915401541154215431544154515461547...1953 新评论 Mikhail Tkachev 2021.07.15 11:55 #15391 我请求社区的帮助... MT5 无法同时在多个货币对上通过超限参数进行优化。 当我在测试器的 "符号 "下选择 "来自市场观察的所有符号 "选项时,它禁用了在 "参数 "选项卡中设置输入参数超限的功能,只是没有复选框被选中,也没有输入任何数值。应该怎么做? Mikhail Mishanin 2021.07.15 12:39 #15392 MikeZv: 我请求社区的帮助...MT5 无法同时在多个货币对上通过超限参数做优化。当我在测试器的 "符号 "栏中选择 "来自市场观察的所有符号 "选项时,在 "参数 "选项卡中设置输入参数过冲的功能被禁用,只是没有选中复选框,也没有输入任何数值。应该怎么做? 在几个字符上,并没有进行优化,它只是在相同的参数下进行了测试(验证)交易。 Андрей 2021.07.17 13:26 #15393 大家好。 请帮我在mql5中写一个指标,以便在图表上有一个按钮,两个价格参数,时间范围。 当你填入这些数据并按下按钮时--在图表上画出一个填满的矩形,上面有上、下限价格,在指定的时间范围内持续时间。 законопослушный гражданин 2021.07.17 15:28 #15394 你好。试图将一只马汀与猫头鹰 "栓 "在一起的MA。 但它不工作.... 我应该马上说,这些代码在网站上是公开可用的。 我不能假装使用它们。 //+-----------------------------------------------------------------------------------------------+ //| Simple Moving Average.mq4 | //| Copyright 2016, Andrey Minaev | //| https://www.mql5.com/ru/users/id.scorpion | //+-----------------------------------------------------------------------------------------------+ #property copyright "Copyright 2016, Andrey Minaev" #property link "https://www.mql5.com/ru/users/id.scorpion" #property version "1.00" #property strict // Параметры советника extern string sParametersEA = ""; // Параметры советника extern double dLots = 0.01; // Количество лотов extern int iStopLoss = 30; // Уровень убытка (в пунктах) extern int iTakeProfit = 30; // Уровень прибыли (в пунктах) extern int iSlippage = 3; // Проскальзование (в пунктах) extern int iMagic = 1; // Индентификатор советника extern double K_Martin = 2.0; // мартин extern int DigitsLot = 2; // для мартина extern int OrdersClose = 5; // мартин сделки // Параметры индикатора extern string sParametersMA = ""; // Параметры индикатора extern int iPeriodMA = 14; // Период усреднения // Глобальные переменные double dMA; //+-----------------------------------------------------------------------------------------------+ int OnInit() { // Если брокер использует 3 или 5 знаков после запятой, то умножаем на 10 if(Digits == 3 || Digits == 5) { iStopLoss *= 10; iTakeProfit *= 10; iSlippage *= 10; } return(INIT_SUCCEEDED); } //+-----------------------------------------------------------------------------------------------+ void OnDeinit(const int reason) { } //+-----------------------------------------------------------------------------------------------+ void OnTick() { // Получим значение индикатора dMA = iMA(Symbol(), 0, iPeriodMA, 0, MODE_SMA, PRICE_CLOSE, 0); // Если нет открытых ордеров, то входим в условие if(bCheckOrders() == true) { // Если появился сигнал на покупку, то откроем ордер на покупку if(bSignalBuy() == true) vOrderOpenBuy(); // Если появился сигнал на продажу, то откроем ордер на продажу if(bSignalSell() == true) vOrderOpenSell(); } } //+-----------------------------------------------------------------------------------------------+ //| Функция проверки открытых оредров | //+-----------------------------------------------------------------------------------------------+ bool bCheckOrders() { // Переберем в цикле ордера, для проверки открытых ордеров данным советником for(int i = 0; i <= OrdersTotal(); i++) if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) if(OrderSymbol() == Symbol() && OrderMagicNumber() == iMagic) return(false); return(true); } //+-----------------------------------------------------------------------------------------------+ //| Функция поиска сигнала на покупку | //+-----------------------------------------------------------------------------------------------+ bool bSignalBuy() { if(dMA > Open[1] && dMA < Close[1]) return(true); return(false); } //+-----------------------------------------------------------------------------------------------+ //| Функция поиска сигнала на продажу | //+-----------------------------------------------------------------------------------------------+ bool bSignalSell() { if(dMA < Open[1] && dMA > Close[1]) return(true); return(false); } //+-----------------------------------------------------------------------------------------------+ //| Функция открытия ордера на покупку | //+-----------------------------------------------------------------------------------------------+ void vOrderOpenBuy() { int iOTi = 0; // Тикет ордера iOTi = OrderSend(Symbol(), OP_BUY, dLots, Ask, iSlippage, 0, 0, "", iMagic, 0, clrNONE); // Проверим открылся ли ордер if(iOTi > 0) // Есди да, то выставим уровни убытка и прибыли vOrderModify(iOTi); else // Если нет, то получим ошибку vError(GetLastError()); } //+-----------------------------------------------------------------------------------------------+ //| Функция открытия ордера на продажу | //+-----------------------------------------------------------------------------------------------+ void vOrderOpenSell() { int iOTi = 0; // Тикет ордера iOTi = OrderSend(Symbol(), OP_SELL, dLots, Bid, iSlippage, 0, 0, "", iMagic, 0, clrNONE); // Проверим открылся ли ордер if(iOTi > 0) // Есди да, то выставим уровни убытка и прибыли vOrderModify(iOTi); else // Если нет, то получим ошибку vError(GetLastError()); } //+-----------------------------------------------------------------------------------------------+ //| Функция модификации ордера | //+-----------------------------------------------------------------------------------------------+ void vOrderModify(int iOTi) { int iOTy = -1; // Тип ордера double dOOP = 0; // Цена открытия ордера double dOSL = 0; // Стоп Лосс int iMag = 0; // Идентификатор советника double dSL = 0; // Уровень убытка double dTP = 0; // Уровень прибыли // double OL= dLots; // для мартина // Выберем по тикету открытый ордер, получим некоторые значения if(OrderSelect(iOTi, SELECT_BY_TICKET, MODE_TRADES)) { iOTy = OrderType(); dOOP = OrderOpenPrice(); dOSL = OrderStopLoss(); iMag = OrderMagicNumber(); } // Если ордер открыл данный советник, то входим в условие if(OrderSymbol() == Symbol() && OrderMagicNumber() == iMag) { // Если Стоп Лосс текущего ордера равен нулю, то модифицируем ордер if(dOSL == 0) { if(iOTy == OP_BUY) { dSL = NormalizeDouble(dOOP - iStopLoss * Point, Digits); dTP = NormalizeDouble(dOOP + iTakeProfit * Point, Digits); bool bOM = OrderModify(iOTi, dOOP, dSL, dTP, 0, clrNONE); } if(iOTy == OP_SELL) { dSL = NormalizeDouble(dOOP + iStopLoss * Point, Digits); dTP = NormalizeDouble(dOOP - iTakeProfit * Point, Digits); bool bOM = OrderModify(iOTi, dOOP, dSL, dTP, 0, clrNONE); } } } } //+-----------------------------------------------------------------------------------------------+ //| Функция обработки ошибок | //+-----------------------------------------------------------------------------------------------+ void vError(int iErr) { switch(iErr) { case 129: // Неправильная цена case 135: // Цена изменилась case 136: // Нет цен case 138: // Новые цены Sleep(1000); RefreshRates(); break; case 137: // Брокер занят case 146: // Подсистема торговли занята Sleep(3000); RefreshRates(); break; } } //+-----------------------------------------------------------------------------------------------+ double LOT() { int n=0; double OL=dLots; for(int j = OrdersHistoryTotal()-1; j >= 0; j--) { if(OrderSelect(j, SELECT_BY_POS,MODE_HISTORY)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == iMagic) { if(OrderProfit()<0) { if(n==0) OL=NormalizeDouble(OrderLots()*K_Martin,DigitsLot); n++; if(n>=OrdersClose) { Comment("1"); return(dLots); } } else { if(n==0) { Comment("2"); return(dLots); } else { Comment("3"); return(OL); } } } } } return(OL); } //+------------------------------------------------------------------+ Tretyakov Rostyslav 2021.07.17 16:05 #15395 законопослушный гражданин:你好。试图将一只马汀与猫头鹰 "栓 "在一起的MA。但它不工作....我应该马上说,这些代码在网站上是公开可用的。我想知道我哪里错了。 乍看之下。 if(OrderSelect(j, SELECT_BY_POS,MODE_HISTORY)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == iMagic) { if(OrderProfit()<0) 你要找的是一个失败的订单。我认为你应该首先找到最后一个平仓的,然后看利润,如果是负数,就看 "OrderLots()*K_Martin"。 Tretyakov Rostyslav 2021.07.17 16:08 #15396 законопослушный гражданин:但有些事情是不可行的.... 对问题的描述非常翔实 законопослушный гражданин 2021.07.19 07:59 #15397 你好! 谁能告诉我如何在MT4终端的策略测试器中 运行2,3...,运行2,3...测试用的EA? Tretyakov Rostyslav 2021.07.19 08:01 #15398 законопослушный гражданин:你好!谁能告诉我如何在MT4终端的策略测试器中 运行2,3...,运行2,3......来测试? 合而为一 SanAlex 2021.07.19 08:01 #15399 законопослушный гражданин:你好!谁能告诉我如何在MT4终端的策略测试器中 运行2,3...,运行2,3...测试用的EA? 就像上了一辆车,向三个方向开去 \\\\\\\\\\\\\\\\\\\\\\\\\\\ 尽管你可以创建一个多货币的专家顾问--为每一种货币创建一个单独的函数 законопослушный гражданин 2021.07.19 09:10 #15400 谢谢你!这是个好主意。 1...153315341535153615371538153915401541154215431544154515461547...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
MT5
无法同时在多个货币对上通过超限参数进行优化。
当我在测试器的 "符号 "下选择 "来自市场观察的所有符号 "选项时,它禁用了在 "参数 "选项卡中设置输入参数超限的功能,只是没有复选框被选中,也没有输入任何数值。应该怎么做?
我请求社区的帮助...MT5 无法同时在多个货币对上通过超限参数做优化。当我在测试器的 "符号 "栏中选择 "来自市场观察的所有符号 "选项时,在 "参数 "选项卡中设置输入参数过冲的功能被禁用,只是没有选中复选框,也没有输入任何数值。应该怎么做?
在几个字符上,并没有进行优化,它只是在相同的参数下进行了测试(验证)交易。
大家好。
请帮我在mql5中写一个指标,以便在图表上有一个按钮,两个价格参数,时间范围。
当你填入这些数据并按下按钮时--在图表上画出一个填满的矩形,上面有上、下限价格,在指定的时间范围内持续时间。
你好。试图将一只马汀与猫头鹰 "栓 "在一起的MA。
但它不工作....
我应该马上说,这些代码在网站上是公开可用的。
我不能假装使用它们。
你好。试图将一只马汀与猫头鹰 "栓 "在一起的MA。
但它不工作....
我应该马上说,这些代码在网站上是公开可用的。
我想知道我哪里错了。
乍看之下。
你要找的是一个失败的订单。我认为你应该首先找到最后一个平仓的,然后看利润,如果是负数,就看 "OrderLots()*K_Martin"。
但有些事情是不可行的....
对问题的描述非常翔实
你好!
谁能告诉我如何在MT4终端的策略测试器中 运行2,3...,运行2,3...测试用的EA?
你好!
谁能告诉我如何在MT4终端的策略测试器中 运行2,3...,运行2,3......来测试?
合而为一
你好!
谁能告诉我如何在MT4终端的策略测试器中 运行2,3...,运行2,3...测试用的EA?
就像上了一辆车,向三个方向开去
\\\\\\\\\\\\\\\\\\\\\\\\\\\
尽管你可以创建一个多货币的专家顾问--为每一种货币创建一个单独的函数
谢谢你!这是个好主意。