新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1695 1...168816891690169116921693169416951696169716981699170017011702...1953 新评论 EVGENII SHELIPOV 2021.10.24 17:19 #16941 MakarFX #: 谢谢你,Makar,我准备把它附在EA上,然后看一看。 EVGENII SHELIPOV 2021.10.24 17:46 #16942 MakarFX #: Makar 谢谢 一切都按我想要的方式运作。谢谢你!!!。 EVGENII SHELIPOV 2021.10.24 17:48 #16943 MakarFX #: 我希望不需要的线条能自己删除,比如说24小时后。 提前感谢!!。 Tretyakov Rostyslav 2021.10.24 18:14 #16944 EVGENII SHELIPOV #:我希望不必要的行会被自行删除,比方说在24小时后。提前感谢!!。 int OnInit() { if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0) { ObjectCreate(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE),OBJ_VLINE,0,Time[0]+(StartTime*3600),0); ObjectSetInteger(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE),OBJPROP_COLOR, clrBlue); ObjectCreate(0,"Окончание торговли"+TimeToString(Time[0],TIME_DATE),OBJ_VLINE,0,Time[0]+(StopTime*3600),0); ObjectSetInteger(0,"Окончание торговли"+TimeToString(Time[0],TIME_DATE),OBJPROP_COLOR, clrBlue); } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ void OnTick() { if((UseHour==1&&Hour()>=StartTime&&Hour()<=StopTime)||UseHour==0) { if(ObjectFind(0,"Начало торговли"+TimeToString(Time[1],TIME_DATE))==0) { ObjectMove(0,"Начало торговли"+TimeToString(Time[0],TIME_DATE),0,Time[0]+(StartTime*3600),0) ObjectMove(0,"Окончание торговли"+TimeToString(Time[0],TIME_DATE),0,Time[0]+(StopTime*3600),0) } if(CountTrade(0)==0 && CountTrade(1)==0 && TradeSignal()==0) SendFirsOrder(0); if(CountTrade(1)==0 && CountTrade(0)==0 && TradeSignal()==1) SendFirsOrder(1); } //----- } Maxim Kuznetsov 2021.10.24 18:42 #16945 Nerd Trader #:来自帮助: "为了确保得到一个不重复的序列,使用MathSrand(GetTickCount()),因为GetTickCount() 自操作系统启动以来一直在增加,在49天内不会重复"。 用计算器计算一下rand()需要多少次才能得到第一个重复的值(以前产生的任何一个)。 Volodymyr Zubov 2021.10.24 18:58 #16946 根据我的经验--不要写西里尔文 开通ECN MT4 /+----------------------------------------------------------------------------+ //| Функция открытия ордера (c) BeerGod 2015 | //+----------------------------------------------------------------------------+ //| Параметры: | //| sy - наименование инструмента ("" - текущий символ) | //| op - операция | //| ll - лот | //| sl - уровень стоп | //| tp - уровень тейк | //| mn - MagicNumber | //+----------------------------------------------------------------------------+ // OpenPosition(string symbol,int operation,double volume,int slippage,double stoploss,double takeprofit,string comment,int magic,color); int OpenPosition(string sy, int op, double ll, int Slippage, int sl, int tp, string comment, int mn,color Color) { if(op == 0) // открытие BUY { // проверяем доступность свободных средств if((AccountFreeMarginCheck(sy,OP_BUY,ll)<=0) || (GetLastError()==134)) { Print(sy," ",ll," It is impossible to open the order Buy, not enough money."); return(0); } RefreshRates(); // открываем ордер int ticketbuy = OrderSend(sy,OP_BUY,ll,MarketInfo(sy,MODE_ASK),Slippage,0,0,comment,mn,0,Color); if(ticketbuy<0) Print(sy," OpenPosition. OrderSend Buy fail #",GetLastError()); else Print(sy," OpenPosition. OrderSend Buy successfully"); // Sleep (Pause); // модифицируем ордер (выставляем тейпрофит и стоплосс) if(sl !=0 || tp !=0) { //--- вычисленные значения цен SL и TP должны быть нормализованы double BSLoss = NormalizeDouble(MarketInfo(sy,MODE_ASK)-sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS)); double BTProfit = NormalizeDouble(MarketInfo(sy,MODE_ASK)+tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS)); //--- если входящие значения ноль то заменяем цену модификации на ноль if(sl == 0) BSLoss = 0; if(tp == 0) BTProfit = 0; bool resbuy = OrderModify(ticketbuy,OrderOpenPrice(),BSLoss,BTProfit,0,clrNONE); if(!resbuy) Print(sy," OpenPosition. OrderModify Buy fail #",GetLastError()); else Print(sy," OpenPosition. OrderModify Buy successfully"); } } if(op == 1) // открытие Sell { // проверяем доступность свободных средств if((AccountFreeMarginCheck(sy,OP_SELL,ll)<=0) || (GetLastError()==134)) { Print(sy," ",ll," It is impossible to open the order Sell, not enough money."); return(0); } RefreshRates(); // открываем ордер int ticketsell = OrderSend(sy,OP_SELL,ll,MarketInfo(sy,MODE_BID),Slippage,0,0,comment,mn,0,Color); if(ticketsell<0) Print(sy," OpenPosition. OrderSend Sell fail #",GetLastError()); else Print(sy," OpenPosition. OrderSend Sell successfully"); // Sleep (Pause); // модифицируем ордер (выставляем тейпрофит и стоплосс) if(sl !=0 || tp !=0) { //--- вычисленные значения цен SL и TP должны быть нормализованы double SSLoss = NormalizeDouble(MarketInfo(sy,MODE_BID)+sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS)); double STProfit = NormalizeDouble(MarketInfo(sy,MODE_BID)-tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS)); //--- если входящие значения ноль то заменяем цену модификации на ноль if(sl == 0) SSLoss = 0; if(tp == 0) STProfit = 0; bool ressell = OrderModify(ticketsell,OrderOpenPrice(),SSLoss,STProfit,0,clrNONE); if(!ressell) Print(sy," OpenPosition. OrderModify Sell fail #",GetLastError()); else Print(sy," OpenPosition. OrderModify Sell successfully"); } } return (0); } //--- End --- ANDREY 2021.10.25 00:31 #16947 祝大家今天愉快 请告知您在哪里可以找到关于MQL4中动态二维数组的基本信息。首先,我对如何创造它感兴趣。如何使用它?哪些功能适用于它? 谢谢你。 Valeriy Yastremskiy 2021.10.25 10:27 #16948 ANDREY #:祝大家今天愉快请告知您在哪里可以找到关于MQL4中动态二维数组的基本信息。首先,我对如何创造它感兴趣。如何使用它?哪些功能适用于它? 谢谢你。文档数组 而且,这些动力只是在第一维度。其他尺寸是静态的。 Объект динамического массива - Типы данных - Основы языка - Справочник MQL4 docs.mql4.com Объект динамического массива - Типы данных - Основы языка - Справочник MQL4 Artyom Trishkin 2021.10.25 11:14 #16949 Valeriy Yastremskiy #:文件数组 而且只在第一个维度上动态地进行。其他尺寸是静态的。 CArray 等--你可以制作任何维度的动态数组,在任何维度上都可以改变。 Документация по MQL5: Стандартная библиотека / Коллекции данных www.mql5.com Коллекции данных - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 ANDREY 2021.10.25 13:05 #16950 Artyom Trishkin #:CArray 等--你可以制作任何维度的动态数组,在任何维度上都可以改变。 谢谢你的帮助。但你给了我一个链接,让我了解MQL5 中动态数组的信息。我还在掌握MQL4,或者MQL5 的代码在动态数组方面 也适用于MQL4? 谢谢。 1...168816891690169116921693169416951696169716981699170017011702...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢你,Makar,我准备把它附在EA上,然后看一看。
Makar 谢谢 一切都按我想要的方式运作。谢谢你!!!。
我希望不需要的线条能自己删除,比如说24小时后。
提前感谢!!。
我希望不必要的行会被自行删除,比方说在24小时后。
提前感谢!!。
来自帮助:
"为了确保得到一个不重复的序列,使用MathSrand(GetTickCount()),因为GetTickCount() 自操作系统启动以来一直在增加,在49天内不会重复"。
用计算器计算一下rand()需要多少次才能得到第一个重复的值(以前产生的任何一个)。
根据我的经验--不要写西里尔文
开通ECN MT4
祝大家今天愉快
请告知您在哪里可以找到关于MQL4中动态二维数组的基本信息。首先,我对如何创造它感兴趣。如何使用它?哪些功能适用于它?
谢谢你。
祝大家今天愉快
请告知您在哪里可以找到关于MQL4中动态二维数组的基本信息。首先,我对如何创造它感兴趣。如何使用它?哪些功能适用于它?
谢谢你。
文档数组
而且,这些动力只是在第一维度。其他尺寸是静态的。文件数组
而且只在第一个维度上动态地进行。其他尺寸是静态的。CArray 等--你可以制作任何维度的动态数组,在任何维度上都可以改变。
CArray 等--你可以制作任何维度的动态数组,在任何维度上都可以改变。
谢谢你的帮助。但你给了我一个链接,让我了解MQL5 中动态数组的信息。我还在掌握MQL4,或者MQL5 的代码在动态数组方面 也适用于MQL4?
谢谢。