初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1124 1...111711181119112011211122112311241125112611271128112911301131...1503 新评论 Alexey Viktorov 2019.09.10 19:30 #11231 macleta: 谢谢,ndd 是什么? 没有遵循,没有取代一切。这是一个宏观。 #define ndd(A) NormalizeDouble(A, _Digits) macleta 2019.09.10 20:20 #11232 Alexey Viktorov: 没有保持跟踪,没有更换所有东西。这是一个宏观。 谢谢。(笑)。 astrologer Аполонов 2019.09.12 00:47 #11233 你能告诉我如何通过神奇的数字知道最后的开仓,也许有一个函数可以返回最后开仓的手数?我需要它在mql5上 Vladimir Karputov 2019.09.12 03:14 #11234 astrologer Аполонов: 请教如何通过神奇的数字找出最后的开仓,也许有一个函数可以返回最后开仓的手值?我需要它在mql5上 有几种方法,请说明:交易账户类型是对冲还是净值,在这种情况下,你需要知道仓位的情况:顾问是否开仓,他是否需要知道他最后一次开仓的参数? Vladimir Karputov 2019.09.12 03:36 #11235 astrologer Аполонов: 你能告诉我如何通过神奇的数字知道最后的开仓,也许有一个函数可以返回最后开仓的手数?我需要它在mql5上 例子#1。 //+------------------------------------------------------------------+ //| Trading engine 3.mq5 | //| Copyright © 2019, Vladimir Karputov | //| http://wmua.ru/slesar/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2019, Vladimir Karputov" #property link "http://wmua.ru/slesar/" #property version "1.000" /* barabashkakvn Trading engine 3.042 */ #include <Trade\SymbolInfo.mqh> //--- CSymbolInfo m_symbol; // object of CSymbolInfo class //--- input parameters input ulong InpMagic = 200; // Magic number //--- //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- if(!m_symbol.Name(Symbol())) // sets symbol name { Print(__FILE__," ",__FUNCTION__,", ERROR: CSymbolInfo.Name"); return(INIT_FAILED); } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- } //+------------------------------------------------------------------+ //| TradeTransaction function | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { //--- get transaction type as enumeration value ENUM_TRADE_TRANSACTION_TYPE type=trans.type; //--- if transaction is result of addition of the transaction in history if(type==TRADE_TRANSACTION_DEAL_ADD) { long deal_ticket =0; long deal_order =0; long deal_time =0; long deal_time_msc =0; long deal_type =-1; long deal_entry =-1; long deal_magic =0; long deal_reason =-1; long deal_position_id =0; double deal_volume =0.0; double deal_price =0.0; double deal_commission =0.0; double deal_swap =0.0; double deal_profit =0.0; string deal_symbol =""; string deal_comment =""; string deal_external_id =""; if(HistoryDealSelect(trans.deal)) { deal_ticket =HistoryDealGetInteger(trans.deal,DEAL_TICKET); deal_order =HistoryDealGetInteger(trans.deal,DEAL_ORDER); deal_time =HistoryDealGetInteger(trans.deal,DEAL_TIME); deal_time_msc =HistoryDealGetInteger(trans.deal,DEAL_TIME_MSC); deal_type =HistoryDealGetInteger(trans.deal,DEAL_TYPE); deal_entry =HistoryDealGetInteger(trans.deal,DEAL_ENTRY); deal_magic =HistoryDealGetInteger(trans.deal,DEAL_MAGIC); deal_reason =HistoryDealGetInteger(trans.deal,DEAL_REASON); deal_position_id =HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID); deal_volume =HistoryDealGetDouble(trans.deal,DEAL_VOLUME); deal_price =HistoryDealGetDouble(trans.deal,DEAL_PRICE); deal_commission =HistoryDealGetDouble(trans.deal,DEAL_COMMISSION); deal_swap =HistoryDealGetDouble(trans.deal,DEAL_SWAP); deal_profit =HistoryDealGetDouble(trans.deal,DEAL_PROFIT); deal_symbol =HistoryDealGetString(trans.deal,DEAL_SYMBOL); deal_comment =HistoryDealGetString(trans.deal,DEAL_COMMENT); deal_external_id =HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID); } else return; ENUM_DEAL_ENTRY enum_deal_entry=(ENUM_DEAL_ENTRY)deal_entry; if(deal_symbol==m_symbol.Name() && deal_magic==InpMagic) { if(deal_type==DEAL_TYPE_BUY || deal_type==DEAL_TYPE_SELL) { if(deal_entry==DEAL_ENTRY_IN) { Print("Last DEAL IN volume: ",DoubleToString(deal_volume,2)); } } } } } //+------------------------------------------------------------------+ 在OnTradeTransaction中,我们捕获一个类型为 贸易_交易_交易_添加 将交易添加到历史记录中。这是由订单执行或账户余额交易的结果。 if(type==TRADE_TRANSACTION_DEAL_ADD) 确保它是我们的象征和我们的魔法。 if(deal_symbol==m_symbol.Name() && deal_magic==InpMagic) 寻找一个买入或卖出的交易。 if(deal_type==DEAL_TYPE_BUY || deal_type==DEAL_TYPE_SELL) 确保这种交易是 DEAL_ENTRY_IN。 市场进入 if(deal_entry==DEAL_ENTRY_IN) 附加的文件: Test.mq5 10 kb Vladimir Karputov 2019.09.12 03:48 #11236 astrologer Аполонов: 请教如何通过神奇的数字找出最后开仓的位置,也许有一个函数可以返回最后开仓的手数?我需要它在mql5上 选项#2--绕过项目清单。 //+------------------------------------------------------------------+ //| Trading engine 3.mq5 | //| Copyright © 2019, Vladimir Karputov | //| http://wmua.ru/slesar/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2019, Vladimir Karputov" #property link "http://wmua.ru/slesar/" #property version "1.000" /* barabashkakvn Trading engine 3.042 */ #include <Trade\PositionInfo.mqh> #include <Trade\SymbolInfo.mqh> //--- CPositionInfo m_position; // object of CPositionInfo class CSymbolInfo m_symbol; // object of CSymbolInfo class //--- input parameters input ulong InpMagic = 200; // Magic number //--- //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- if(!m_symbol.Name(Symbol())) // sets symbol name { Print(__FILE__," ",__FUNCTION__,", ERROR: CSymbolInfo.Name"); return(INIT_FAILED); } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- ulong last_time = 0; double last_volume = 0.0; for(int i=PositionsTotal()-1; i>=0; i--) if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==InpMagic) { if(m_position.TimeMsc()>last_time) { last_time=m_position.TimeMsc(); last_volume=m_position.Volume(); } } if(last_volume>0.0) Print("Last POSITIONS volume: ",DoubleToString(last_volume,2)); } //+------------------------------------------------------------------+ //| TradeTransaction function | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { //--- } //+------------------------------------------------------------------+ 翻阅职位清单 for(int i=PositionsTotal()-1; i>=0; i--) 寻找最长的开仓时间(以毫秒计)。 时间Msc 获取自1970年1月1日起开仓 的时间,单位为毫秒。 if(m_position.TimeMsc()>last_time) { last_time=m_position.TimeMsc(); last_volume=m_position.Volume(); } 检查--如果音量高于 "0.0"--已经找到了位置。 if(last_volume>0.0) Print("Last POSITIONS volume: ",DoubleToString(last_volume,2)); 附加的文件: Test.mq5 6 kb macleta 2019.09.13 00:54 #11237 Alexey Viktorov: 对于损失大小,这里有一个函数 只需将SL替换为TP 显然,作为可用资金的百分比,存在着双重风险。我如何设定一个具体的货币利润额,例如1.5?double RiskLots(double risk, int TP) { double RiskMony, Lot; double tickValue = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE); double margin = SymbolInfoDouble(_Symbol, SYMBOL_MARGIN_INITIAL); double FreeMargin = AccountInfoDouble(ACCOUNT_MARGIN_FREE); long accountLeverage = AccountInfoInteger(ACCOUNT_LEVERAGE); RiskMony = floor(FreeMargin*risk/100); Lot = NormalizeDouble(RiskMony*_Point/NormalizeDouble(TP*_Point*tickValue, _Digits), 2); // return(Lot); } astrologer Аполонов 2019.09.13 06:01 #11238 Благодарю Vladimir Karputov: 例子#1。 在OnTradeTransaction中,我们捕获一个类型为 贸易_交易_交易_添加 将交易添加到历史记录中。这是由订单执行或账户余额交易的结果。 确保它是我们的象征和我们的魔法。 看它是买入还是卖出的交易。 确保这种交易是 DEAL_ENTRY_IN。 进入市场 Alexey Viktorov 2019.09.13 07:25 #11239 macleta: 显然,这是以可用资金的百分比计算的双重风险。我如何设定一个具体的货币利润额,例如1.5? 好了,下面是这句话 RiskMony = floor(FreeMargin*risk/100); 只要把一个数字而不是公式和... BillionerClub 2019.09.13 13:40 #11240 如何转换,鼠标的位置,期间,但没有抛出? ChartTimeOnDropped 1...111711181119112011211122112311241125112611271128112911301131...1503 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
谢谢,ndd 是什么?
没有遵循,没有取代一切。这是一个宏观。
没有保持跟踪,没有更换所有东西。这是一个宏观。
请教如何通过神奇的数字找出最后的开仓,也许有一个函数可以返回最后开仓的手值?我需要它在mql5上
有几种方法,请说明:交易账户类型是对冲还是净值,在这种情况下,你需要知道仓位的情况:顾问是否开仓,他是否需要知道他最后一次开仓的参数?
你能告诉我如何通过神奇的数字知道最后的开仓,也许有一个函数可以返回最后开仓的手数?我需要它在mql5上
例子#1。
在OnTradeTransaction中,我们捕获一个类型为
贸易_交易_交易_添加
将交易添加到历史记录中。这是由订单执行或账户余额交易的结果。
确保它是我们的象征和我们的魔法。
if(deal_symbol==m_symbol.Name() && deal_magic==InpMagic)
寻找一个买入或卖出的交易。
确保这种交易是
DEAL_ENTRY_IN。
市场进入
请教如何通过神奇的数字找出最后开仓的位置,也许有一个函数可以返回最后开仓的手数?我需要它在mql5上
选项#2--绕过项目清单。
翻阅职位清单
寻找最长的开仓时间(以毫秒计)。
时间Msc
获取自1970年1月1日起开仓 的时间,单位为毫秒。
if(m_position.TimeMsc()>last_time) { last_time=m_position.TimeMsc(); last_volume=m_position.Volume(); }
检查--如果音量高于 "0.0"--已经找到了位置。
对于损失大小,这里有一个函数
只需将SL替换为TP
例子#1。
在OnTradeTransaction中,我们捕获一个类型为
贸易_交易_交易_添加
将交易添加到历史记录中。这是由订单执行或账户余额交易的结果。
确保它是我们的象征和我们的魔法。
看它是买入还是卖出的交易。
确保这种交易是
DEAL_ENTRY_IN。
进入市场
显然,这是以可用资金的百分比计算的双重风险。我如何设定一个具体的货币利润额,例如1.5?
好了,下面是这句话
只要把一个数字而不是公式和...如何转换,鼠标的位置,期间,但没有抛出?
ChartTimeOnDropped