新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 385 1...378379380381382383384385386387388389390391392...1953 新评论 fxsaber 2017.11.23 08:19 #3841 Alexandr Ivanov:嗯,我也没有找到...悲伤。因此,你必须估计1个柱子里有多少个点,并从中得出结论--这些是开盘价 还是所有点。只要有正确的技能,制作MT4 EA跨平台是5分钟(一次!)。然后你在MT5中用真实 或自定义刻度线进行测试(多次),并在MT4中交易。 Mickey Moose 2017.11.23 15:04 #3842 大家好。有一个脚本,可以通过选择改变所有打开的图表上的TF需要做一个批准的,改变模式的但对于这一点,至少要告诉我什么是代码方面的模式 msvmes 2017.11.24 17:06 #3843 你好。有一个现成的SMI指标。但这并不奏效。当我第一次运行它时,它确实如此,但随后我不得不按刷新或切换到另一个时间框架,每一个新的酒吧。为什么?也许这个问题在这里已经被提出来了,我可以直接获得链接吗?预先感谢你。 附加的文件: SMI.mq4 8 kb RichLux 2017.11.24 20:56 #3844 请解释为什么该订单没有打开。下面是日志中的几行字。2017.11.24 20:00:00.061 '5390918': requote 1.19357 / 1.19368 for open sell 0.01 EURUSD at 1.19361 sl: 1.19848 tp: 1.184022017.11.24 19:59:59.515 '5390918': 即时订单在1.19361卖出0.01欧元兑美元 sl: 1.19848 tp: 1.18402滑点是11个点。在EA中滑点被设定为27点。检查订单开盘的结果是错误138(新价格)。请解释为什么该订单没有打开? Any questions from newcomers OrderSend works on market, [Archive!] FOREX - Trends, Vitaly Muzichenko 2017.11.24 21:00 #3845 RichLux:请解释为什么该订单没有打开。下面是日志中的几行字。2017.11.24 20:00:00.061 '5390918': requote 1.19357 / 1.19368 for open sell 0.01 EURUSD at 1.19361 sl: 1.19848 tp: 1.184022017.11.24 19:59:59.515 '5390918': 即时订单在1.19361卖出0.01欧元兑美元 sl: 1.19848 tp: 1.18402滑点是11个点。在EA中滑点被设定为27点。检查订单开盘的结果是错误138(新价格)。请解释为什么该订单没有打开?改变交易或账户类型以避免这些问题。你应该得到一个有市场执行力的账户--忘掉即时性。 gastinets 2017.11.25 12:08 #3846 请告知如何编写代码来关闭交易,而不是在信号指标的对面,并获取利润,并且顾问不会在关闭后立即打开。 例如,一个信号,进入不同时期的移动平均线 的交叉点,获利50点,如果可能的话,在MQL5我有一个代码,一旦它达到获利并关闭交易,就立即打开一个新的交易,即使没有新的信号/交叉点。 voron_026 2017.11.28 00:24 #3847 再会。请看代码。出现新横线时机器人不移除横线//+------------------------------------------------------------------+ //| 2.0.mq4 | //| Copyright 2017,UriyGlushko | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2017,UriyGlushko" #property link "https://www.mql5.com" #property version "1.00" #property strict extern string Rodot = "Параметры робота" ; extern double Lots = 0.1 ; extern int StopLoss = 20 ; extern int TakeProfit = 80 ; extern int Magic = 568422685 ; extern int Slippage = 3 ; // Проскальзывание extern int Shag = 40 ; // Шаг для трейлингстопа extern int Tral_dist = 40 ; // Дистанция трейлингстопа extern bool Use_traling = true ; // Использование трейлингстопа true - Включено, false - Выключено extern bool Use_shag = false ; // Использование шага. true - Включено, false - Выключено extern bool Use_bezubitok = true ; // Использование безубытка. true - Включено, false - Выключено // Параметры индикатора moving_averages extern string MA = "Параметры Скользащей средней" ; extern int MA_Period = 3 ; // Период extern int MA_Shift = 0 ; // Сдвиг extern int MA_Method = 0 ; // 0-простая, 1-экспонециальная, 2-сглаженная, 3-линейно-взвешенная // Параметры разворотных свечей extern string Comment2 = "Параметры разворотных свечей" ; extern bool _Doji = false ; extern ENUM_TIMEFRAMES TimeFrame = PERIOD_M5 ; // Период разворотной свечи extern ENUM_TIMEFRAMES LittleTimeFrame = PERIOD_M1 ; // Период точки входа extern int ATR_period = 14 ; // Период индикатора волотильности // Параметры уровней области разворота extern string Comment3 = "Параметры уровней области разворота" ; extern int UpLineSell = 4 ; // Верхняя линия ОР для продаж (пункт от High) extern int DownLineSell = 4 ; // Нижняя линия ОР для продаж (пункт от High) extern int UpLineBuy = 4 ; // Верхняя линия ОР для покупок (пункт от Low) extern int DownLineBuy = 4 ; // Нижняя линия ОР для покупок (пункт от Low) double sl, tp, dist, shag, ma1, ma2; int ticket; int DojiCandle = 0 ; //Счетчик баров "Дожи" int DojiCandleBuy = 0 ; //Счетчик входных баров на разворотном баре "Дожи" Buy int DojiCandleSell = 0 ; //Счетчик входных баров на разворотном баре "Дожи" Sell int lineDojiCandle = 0 ; //Счетчик уровней области разворота по паттерну "Дожи" // Переменные функции "Новый бар" bool New_Bar = false ; // Переменные функции паттерна "Дожи" bool BuyDoji = false ; bool SellDoji = false ; bool TradeUpDoji = false ; bool TradeDownDoji = false ; double UpLine_Doji; double DownLine_Doji; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit () { if ( Digits == 3 || Digits == 5 ) { TakeProfit *= 10 ; StopLoss *= 10 ; Slippage *= 10 ; UpLineSell *= 10 ; DownLineSell *= 10 ; UpLineBuy *= 10 ; DownLineBuy *= 10 ; } return ( INIT_SUCCEEDED ); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit ( const int reason) { } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick () { int magic = Magic; int shag_ = Shag; double Open1 = NormalizeDouble ( iOpen ( Symbol (), TimeFrame, 1 ), Digits ); double Close1 = NormalizeDouble ( iClose ( Symbol (), TimeFrame, 1 ), Digits ); double High1 = NormalizeDouble ( iHigh ( Symbol (), TimeFrame, 1 ), Digits ); double Low1 = NormalizeDouble ( iLow ( Symbol (), TimeFrame, 1 ), Digits ); Fun_New_Bar(); Doji(); ma1 = iCustom ( NULL , 0 , "moving_averages" ,MA_Period, MA_Shift, MA_Method, 0 , 1 ); ma2 = iCustom ( NULL , 0 , "moving_averages" ,MA_Period, MA_Shift, MA_Method, 0 , 2 ); if (_Doji == true ) { if (SellDoji == true ) { if (! ObjectCreate ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJ_ARROW_DOWN , 0 , TimeCurrent (), High [ 1 ] + 70 * Point )) { Print ( "Не удалось создать метку вниз" ); } ObjectSetInteger ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJPROP_COLOR , clrChocolate ); //--- установка цвета ObjectSetInteger ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJPROP_STYLE , STYLE_SOLID ); //--- установка стиля линии ObjectSetInteger ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJPROP_WIDTH , 1 ); //--- установка толщины линии ObjectSetInteger ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJPROP_BACK , false ); //--- отображение на переднем (false) или заднем (true) плане DojiCandle ++; if (! ObjectCreate ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJ_HLINE , 0 , TimeCurrent (),UpLine_Doji)) { Print ( "Не удалось создать верхнюю линию" ); } ObjectSetInteger ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_COLOR , clrChocolate ); //--- установим цвет прямоугольника ObjectSetInteger ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_STYLE , STYLE_SOLID ); //--- установим стиль линий прямоугольника ObjectSetInteger ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_WIDTH , 1 ); //--- установим толщину линий прямоугольника ObjectSetInteger ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_BACK , false ); //--- отобразим на переднем (false) или заднем (true) плане if (! ObjectCreate ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJ_HLINE , 0 , TimeCurrent (),DownLine_Doji)) { Print ( "Не удалось создать нижнюю линию" ); } ObjectSetInteger ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_COLOR , clrBrown ); //--- установим цвет прямоугольника ObjectSetInteger ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_STYLE , STYLE_SOLID ); //--- установим стиль линий прямоугольника ObjectSetInteger ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_WIDTH , 1 ); //--- установим толщину линий прямоугольника ObjectSetInteger ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_BACK , false ); //--- отобразим на переднем (false) или заднем (true) плане lineDojiCandle ++; if (Open1 == Close1) { if (! ObjectCreate ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJ_ARROW_DOWN , 0 , TimeCurrent (), High [ 1 ] + 70 * Point )) { Print ( "Не удалось создать метку вниз" ); } ObjectSetInteger ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJPROP_COLOR , clrChocolate ); //--- установка цвета ObjectSetInteger ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJPROP_STYLE , STYLE_SOLID ); //--- установка стиля линии ObjectSetInteger ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJPROP_WIDTH , 1 ); //--- установка толщины линии ObjectSetInteger ( ChartID (), "Arrow_Down_Doji" + IntegerToString (DojiCandle), OBJPROP_BACK , false ); //--- отображение на переднем (false) или заднем (true) плане DojiCandle ++; Print ( "Дожи крест Down" ); if (! ObjectCreate ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJ_HLINE , 0 , TimeCurrent (),UpLine_Doji)) { Print ( "Не удалось создать верхнюю линию" ); } ObjectSetInteger ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_COLOR , clrOrangeRed ); //--- установим цвет прямоугольника ObjectSetInteger ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_STYLE , STYLE_SOLID ); //--- установим стиль линий прямоугольника ObjectSetInteger ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_WIDTH , 1 ); //--- установим толщину линий прямоугольника ObjectSetInteger ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_BACK , false ); //--- отобразим на переднем (false) или заднем (true) плане if (! ObjectCreate ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJ_HLINE , 0 , TimeCurrent (),DownLine_Doji)) { Print ( "Не удалось создать нижнюю линию" ); } ObjectSetInteger ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_COLOR , clrBrown ); //--- установим цвет прямоугольника ObjectSetInteger ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_STYLE , STYLE_SOLID ); //--- установим стиль линий прямоугольника ObjectSetInteger ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_WIDTH , 1 ); //--- установим толщину линий прямоугольника ObjectSetInteger ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle), OBJPROP_BACK , false ); //--- отобразим на переднем (false) или заднем (true) плане lineDojiCandle ++; } } static int switch12 = 0 ; static int switch22 = 0 ; static int switch32 = 0 ; if (ma2 > UpLine_Doji && ma2 > DownLine_Doji && ma1 > UpLine_Doji && ma1 > DownLine_Doji) { UpLine_Doji = 0 ; DownLine_Doji = 0 ; } if (ma2 > DownLine_Doji) { if (ma1 < DownLine_Doji) { switch12 = 1 ; Print ( "пересечение дожи 1" ); } } if (ma2 < DownLine_Doji) { if (ma1 > DownLine_Doji) { if (switch12 == 1 ) { switch22 = 1 ; Print ( "пересечение дожи 2" ); } } } if (ma2 > DownLine_Doji) { if ( Close [ 1 ] < DownLine_Doji) { if (switch12 == 1 ) { if (switch22 == 1 ) { switch32 = 1 ; Print ( "пересечение дожи 3" ); } } } } if (switch12 == 1 ) { if (switch22 == 1 ) { if (switch32 == 1 ) { if (! ObjectCreate ( ChartID (), "Arrow_Sell_Doji" + IntegerToString (DojiCandleSell), OBJ_ARROW_SELL , 0 , TimeCurrent (), Low [ 1 ] + 50 * Point )) { Print ( "Не удалось создать метку вниз" ); } ObjectSetInteger ( ChartID (), "Arrow_Sell_Doji" + IntegerToString (DojiCandleSell), OBJPROP_COLOR , clrChocolate ); //--- установка цвета ObjectSetInteger ( ChartID (), "Arrow_Sell_Doji" + IntegerToString (DojiCandleSell), OBJPROP_STYLE , STYLE_SOLID ); //--- установка стиля линии ObjectSetInteger ( ChartID (), "Arrow_Sell_Doji" + IntegerToString (DojiCandleSell), OBJPROP_WIDTH , 1 ); //--- установка толщины линии ObjectSetInteger ( ChartID (), "Arrow_Sell_Doji" + IntegerToString (DojiCandleSell), OBJPROP_BACK , false ); //--- отображение на переднем (false) или заднем (true) плане DojiCandleSell ++; Print ( "Точка входа SELL по разворотной свече 'Дожи'" ); UpLine_Doji = 0 ; DownLine_Doji = 0 ; if ( ObjectFind ( ChartID (), "Arrow_Sell_Doji" + IntegerToString (DojiCandleSell))) { switch12 = 0 ; switch22 = 0 ; switch32 = 0 ; } if ( ObjectFind ( ChartID (), "UpLine_Doji" + IntegerToString (lineDojiCandle)) && ObjectFind ( ChartID (), "DownLine_Doji" + IntegerToString (lineDojiCandle))) { ObjectDelete ( "UpLine_Doji" + IntegerToString (lineDojiCandle)); ObjectDelete ( "DownLine_Doji" + IntegerToString (lineDojiCandle)); Print ( "Линии удалены" ); } Print ( "Не удалось удалить верхнюю и нижнюю линии" ); } } } } } //-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------// //+------------------------------------------------------------------+ // Функция определения нового бара | //+------------------------------------------------------------------+ void Fun_New_Bar() { datetime TimeBar0 = iTime ( Symbol (),TimeFrame, 0 ); static datetime New_Time= 0 ; // Время текущего бара New_Bar= false ; // Нового бара нет if (New_Time != TimeBar0) // Сравниваем время { New_Time = TimeBar0; // Теперь время такое New_Bar = true ; // Поймался новый бар } } //+------------------------------------------------------------------+ // Функция паттерна Дожи для бычьего и медвежьего рынка | //+------------------------------------------------------------------+ void Doji() { //Параметры Дожи double Open1 = NormalizeDouble ( iOpen ( Symbol (), TimeFrame, 1 ), Digits ); double Close1 = NormalizeDouble ( iClose ( Symbol (), TimeFrame, 1 ), Digits ); double High1 = NormalizeDouble ( iHigh ( Symbol (), TimeFrame, 1 ), Digits ); double Low1 = NormalizeDouble ( iLow ( Symbol (), TimeFrame, 1 ), Digits ); double Open2 = NormalizeDouble ( iOpen ( Symbol (), TimeFrame, 2 ), Digits ); double Close2 = NormalizeDouble ( iClose ( Symbol (), TimeFrame, 2 ), Digits ); double High2 = NormalizeDouble ( iHigh ( Symbol (), TimeFrame, 2 ), Digits ); double Low2 = NormalizeDouble ( iLow ( Symbol (), TimeFrame, 2 ), Digits ); //Параметры индикатора волотильности ATR для нахожденя относительно большой свечи перед Доджи double ATR = iATR ( Symbol (),TimeFrame,ATR_period, 1 ); BuyDoji = false ; SellDoji = false ; //Математическое описание патерна Дожи if (Close1 < High1 - NormalizeDouble ( 0.3 *(High1-Low1), Digits )&& Open1 < High1 - NormalizeDouble ( 0.3 *(High1-Low1), Digits )&& Close1 > High1 - NormalizeDouble ( 0.7 *(High1-Low1), Digits )&& Open1 > High1 - NormalizeDouble ( 0.7 *(High1-Low1), Digits )&& MathAbs (Close1-Open1) <= NormalizeDouble ( 0.4 *(High1-Low1), Digits )&& MathAbs (Close2-Open2) > 0.8 *ATR && MathAbs (High1-Low1) > 0.6 *ATR) { if ((Close2 - Open2) > 0 && New_Bar) { UpLine_Doji = High1 + UpLineSell* Point (); DownLine_Doji = High1 - DownLineSell* Point (); SellDoji = true ; Print ( "Down Doji" ); // Условие разворота в медвежий тренд } if ((Close2 - Open2) < 0 ) { UpLine_Doji = High1 + UpLineBuy* Point (); DownLine_Doji = High1 - DownLineBuy* Point (); BuyDoji = true ; Print ( "Up Doji" ); // Условие разворота в бычий тренд } } }使用变量 static int switch12 = 0 ; static int switch22 = 0 ; static int switch32 = 0 ;入口点条件被写入 Alexey Viktorov 2017.11.28 08:23 #3848 voron_026: 下午好。请看一下代码。当出现新的水平线 时,机器人不会删除水平线使用变量来写入口点的条件原因是在行名中加入了一个计数器,在删除之前,该值会增加一个。 voron_026 2017.11.28 08:47 #3849 我明白你的意思。那么如何实施拆线。我需要在一个新的图案出现时,立即删除这些线条,并有自己的线条。 Alexey Viktorov 2017.11.28 08:51 #3850 voron_026: 我明白你的意思。那么如何实施拆线。我需要在出现一个有自己线条的新图案时,立即删除这些线条。你有什么自己的建议吗?也许先删除然后再创建?或者不删除,只改变坐标?删除和创建新的有什么意义呢? 1...378379380381382383384385386387388389390391392...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
嗯,我也没有找到...
悲伤。因此,你必须估计1个柱子里有多少个点,并从中得出结论--这些是开盘价 还是所有点。
只要有正确的技能,制作MT4 EA跨平台是5分钟(一次!)。然后你在MT5中用真实 或自定义刻度线进行测试(多次),并在MT4中交易。
大家好。有一个脚本,可以通过选择改变所有打开的图表上的TF
需要做一个批准的,改变模式的
但对于这一点,至少要告诉我什么是代码方面的模式
你好。有一个现成的SMI指标。但这并不奏效。当我第一次运行它时,它确实如此,但随后我不得不按刷新或切换到另一个时间框架,每一个新的酒吧。为什么?也许这个问题在这里已经被提出来了,我可以直接获得链接吗?预先感谢你。
请解释为什么该订单没有打开。
下面是日志中的几行字。
2017.11.24 20:00:00.061 '5390918': requote 1.19357 / 1.19368 for open sell 0.01 EURUSD at 1.19361 sl: 1.19848 tp: 1.18402
2017.11.24 19:59:59.515 '5390918': 即时订单在1.19361卖出0.01欧元兑美元 sl: 1.19848 tp: 1.18402
滑点是11个点。在EA中滑点被设定为27点。检查订单开盘的结果是错误138(新价格)。
请解释为什么该订单没有打开?
请解释为什么该订单没有打开。
下面是日志中的几行字。
2017.11.24 20:00:00.061 '5390918': requote 1.19357 / 1.19368 for open sell 0.01 EURUSD at 1.19361 sl: 1.19848 tp: 1.18402
2017.11.24 19:59:59.515 '5390918': 即时订单在1.19361卖出0.01欧元兑美元 sl: 1.19848 tp: 1.18402
滑点是11个点。在EA中滑点被设定为27点。检查订单开盘的结果是错误138(新价格)。
请解释为什么该订单没有打开?
改变交易或账户类型以避免这些问题。你应该得到一个有市场执行力的账户--忘掉即时性。
请告知如何编写代码来关闭交易,而不是在信号指标的对面,并获取利润,并且顾问不会在关闭后立即打开。
例如,一个信号,进入不同时期的移动平均线 的交叉点,获利50点,如果可能的话,在MQL5
我有一个代码,一旦它达到获利并关闭交易,就立即打开一个新的交易,即使没有新的信号/交叉点。
使用变量
入口点条件被写入
下午好。请看一下代码。当出现新的水平线 时,机器人不会删除水平线
使用变量
来写入口点的条件
原因是在行名中加入了一个计数器,在删除之前,该值会增加一个。
我明白你的意思。那么如何实施拆线。我需要在出现一个有自己线条的新图案时,立即删除这些线条。
你有什么自己的建议吗?
也许先删除然后再创建?或者不删除,只改变坐标?删除和创建新的有什么意义呢?