新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 949 1...942943944945946947948949950951952953954955956...1953 新评论 Yevhenii Levchenko 2019.08.30 10:13 #9481 同时错误地显示自初始化以来出现的所有条形计算....。 MrBrooklin 2019.08.30 12:15 #9482 大家好! 这里是Metatrader5的部分脚本代码。 #property copyright "Copyright 2019, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" //---- показывать входные параметры #property script_show_inputs //--- #include <Trade\Trade.mqh> #include <Trade\SymbolInfo.mqh> CTrade m_trade; // trading object CSymbolInfo m_symbol; // symbol info object //+------------------------------------------------------------------+ //| Enum Stop or Limit | //+------------------------------------------------------------------+ enum ENUM_STOP_OR_LIMIT { stop=0, // Buy stop and Sell stop limit=1 // Buy limit and Sell limit }; //--- input parameters input ushort InpUpGap = 15; // Gap for pending orders UP from the current price (in points) input ushort InpUpStep = 30; // Step between orders UP (in points) input ushort InpDownGap = 15; // Gap for pending orders DOWN from the current price (in points) input ushort InpDownStep = 30; // Step between orders DOWN (in points) input ENUM_STOP_OR_LIMIT InpPending = stop; // Type of pending orders input uchar InpUpQuantity = 1; // UP quantity orders input uchar InpDownQuantity = 1; // DOWN quantity orders input double InpLots = 0.01; // Lots input ushort InpStopLoss = 50; // Stop Loss (in points) input ushort InpTakeProfit = 50; // Take Profit (in points) //--- ulong m_slippage=30; // slippage double ExtUpGap=0.0; double ExtUpStep=0.0; double ExtDownGap=0.0; double ExtDownStep=0.0; double ExtStopLoss=0.0; double ExtTakeProfit=0.0; //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- if(InpLots<=0.0) { Print("The \"Lots\" can't be smaller or equal to zero"); return; } //--- if(!m_symbol.Name(Symbol())) // sets symbol name return; if(!RefreshRates()) return; string err_text=""; if(!CheckVolumeValue(InpLots,err_text)) { Print(err_text); return; } //--- if(IsFillingTypeAllowed(SYMBOL_FILLING_FOK)) m_trade.SetTypeFilling(ORDER_FILLING_FOK); else if(IsFillingTypeAllowed(SYMBOL_FILLING_IOC)) m_trade.SetTypeFilling(ORDER_FILLING_IOC); else m_trade.SetTypeFilling(ORDER_FILLING_RETURN); //--- m_trade.SetDeviationInPoints(m_slippage); m_trade.SetAsyncMode(true); //--- ExtUpGap = m_symbol.Point() * InpUpGap; ExtUpStep = m_symbol.Point() * InpUpStep; ExtDownGap = m_symbol.Point() * InpDownGap; ExtDownStep = m_symbol.Point() * InpDownStep; ExtStopLoss = m_symbol.Point() * InpStopLoss; ExtTakeProfit = m_symbol.Point() * InpTakeProfit; //--- start work double start_price_ask=m_symbol.Ask()-ExtUpGap; double start_price_bid=m_symbol.Bid()+ExtDownGap; //--- set pending orders for(int i=0; i<InpUpQuantity; i++) { double price_ask = start_price_ask+i*ExtUpStep; double price_bid = start_price_bid+i*ExtUpStep; if(InpPending==stop) { double sl = (ExtStopLoss==0.0) ? 0.0 : price_ask - ExtStopLoss; double tp = (ExtTakeProfit==0.0) ? 0.0 : price_ask + ExtTakeProfit; m_trade.BuyStop(InpLots,m_symbol.NormalizePrice(price_ask),m_symbol.Name(), m_symbol.NormalizePrice(sl), m_symbol.NormalizePrice(tp)); } else { double sl = (ExtStopLoss==0.0) ? 0.0 : price_bid + ExtStopLoss; double tp = (ExtTakeProfit==0.0) ? 0.0 : price_bid - ExtTakeProfit; m_trade.SellLimit(InpLots,m_symbol.NormalizePrice(price_bid),m_symbol.Name(), m_symbol.NormalizePrice(sl), m_symbol.NormalizePrice(tp)); } } for(int i=0; i<InpDownQuantity; i++) { double price_ask = start_price_ask-i*ExtDownStep; double price_bid = start_price_bid-i*ExtDownStep; if(InpPending==limit) { double sl = (ExtStopLoss==0.0) ? 0.0 : price_ask - ExtStopLoss; double tp = (ExtTakeProfit==0.0) ? 0.0 : price_ask + ExtTakeProfit; m_trade.BuyLimit(m_symbol.LotsMin(),m_symbol.NormalizePrice(price_ask),m_symbol.Name(), m_symbol.NormalizePrice(sl), m_symbol.NormalizePrice(tp)); } else { double sl = (ExtStopLoss==0.0) ? 0.0 : price_bid + ExtStopLoss; double tp = (ExtTakeProfit==0.0) ? 0.0 : price_bid - ExtTakeProfit; m_trade.SellStop(m_symbol.LotsMin(),m_symbol.NormalizePrice(price_bid),m_symbol.Name(), m_symbol.NormalizePrice(sl), m_symbol.NormalizePrice(tp)); } } } 脚本应该是在离卖出价和买入价一定距离的地方设置挂单限价,或者设置止损单。限价挂单 的设置没有问题,但止损挂单 却没有问题。我不知道为什么没有设置卖出止损和买入止损的挂单。 你真诚的,弗拉基米尔。 Rustam Bikbulatov 2019.08.30 13:49 #9483 嗨,伙计们。在一个开放的订单旁边做了很多书写。 for(int no1=0; no1<OrdersTotal(); no1++){ if(OrderSelect(no1,SELECT_BY_POS,MODE_TRADES)){ if(OrderSymbol()==Symbol() && OrderType()== OP_BUY){ ObjectCreate("LOTB"+OrderTicket(),OBJ_TEXT,0,TimeCurrent(),OrderOpenPrice()); ObjectSetText("LOTB"+OrderTicket(),OrderLots()*100,20,"Arial",clrWheat); ObjectSetInteger(0,"LOTB"+OrderTicket(),OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER); }}} 你能告诉我如何采取最后的文本和这个列表吗? Yevhenii Levchenko 2019.08.30 13:54 #9484 Rustam Bikbulatov: 嗨,伙计们。在一个开放的订单旁边做了很多书写。你能告诉我如何采取最后的文本和这个列表吗? Rustam Bikbulatov 2019.08.30 14:34 #9485 Yevhenii Levchenko: 首先你要找到所有的文本,然后用这个函数来计算? Yevhenii Levchenko 2019.08.30 14:59 #9486 Rustam Bikbulatov: 首先你要找到所有的文本,然后用这个函数来计算? 我对这个问题不了解,因为我自己最近正在学习mql4语言。你可以在帮助中找到一切。你需要对象中的整个文本还是一个块? Rustam Bikbulatov 2019.08.30 17:13 #9487 Yevhenii Levchenko: 我对这一点了解得并不透彻,因为我自己也是最近才学的mql4语言。你可以在帮助中找到一切。你需要对象的整个文本还是其中的一部分? 我需要上次写的东西 Rustam Bikbulatov 2019.08.30 17:42 #9488 嗨,伙计们。在一个开放的订单旁边做了很多书写。 for(int no1=0; no1<OrdersTotal(); no1++){ if(OrderSelect(no1,SELECT_BY_POS,MODE_TRADES)){ if(OrderSymbol()==Symbol() && OrderType()== OP_BUY){ ObjectCreate("LOTB"+OrderTicket(),OBJ_TEXT,0,TimeCurrent(),OrderOpenPrice()); ObjectSetText("LOTB"+OrderTicket(),OrderLots()*100,20,"Arial",clrWheat); ObjectSetInteger(0,"LOTB"+OrderTicket(),OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER); }}} 你能告诉我如何采取最后的文本和这个列表吗? Artyom Trishkin 2019.08.30 18:19 #9489 Rustam Bikbulatov:嗨,伙计们。在一个开放的订单旁边做了很多书写。 你能告诉我如何采取最后的文本和这个列表吗? 从哪个名单中? 并请使用编辑器中的样式器(Ctrl+<)。 for(int no1=0; no1<OrdersTotal(); no1++) { if(OrderSelect(no1,SELECT_BY_POS,MODE_TRADES)) { if(OrderSymbol()==Symbol() && OrderType()== OP_BUY) { ObjectCreate("LOTB"+OrderTicket(),OBJ_TEXT,0,TimeCurrent(),OrderOpenPrice()); ObjectSetText("LOTB"+OrderTicket(),OrderLots()*100,20,"Arial",clrWheat); ObjectSetInteger(0,"LOTB"+OrderTicket(),OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER); } } } //+------------------------------------------------------------------+ 哪些东西应该从哪里取? Rustam Bikbulatov 2019.08.30 19:11 #9490 Artyom Trishkin: 从哪个名单中? 并请使用编辑器中的样式器(Ctrl+<)。 我从哪里得到它? 这个函数在每个订单上写一个数字,或者更准确地说是批量*100。 我们现在需要一个反函数,显示最后一个数字是什么 1...942943944945946947948949950951952953954955956...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
大家好!
这里是Metatrader5的部分脚本代码。
脚本应该是在离卖出价和买入价一定距离的地方设置挂单限价,或者设置止损单。限价挂单 的设置没有问题,但止损挂单 却没有问题。我不知道为什么没有设置卖出止损和买入止损的挂单。
你真诚的,弗拉基米尔。
嗨,伙计们。在一个开放的订单旁边做了很多书写。你能告诉我如何采取最后的文本和这个列表吗?
首先你要找到所有的文本,然后用这个函数来计算?
首先你要找到所有的文本,然后用这个函数来计算?
我对这一点了解得并不透彻,因为我自己也是最近才学的mql4语言。你可以在帮助中找到一切。你需要对象的整个文本还是其中的一部分?
我需要上次写的东西
嗨,伙计们。在一个开放的订单旁边做了很多书写。 你能告诉我如何采取最后的文本和这个列表吗?
从哪个名单中?
并请使用编辑器中的样式器(Ctrl+<)。
哪些东西应该从哪里取?
从哪个名单中?
并请使用编辑器中的样式器(Ctrl+<)。
我从哪里得到它?
这个函数在每个订单上写一个数字,或者更准确地说是批量*100。
我们现在需要一个反函数,显示最后一个数字是什么