咕噜咕噜? 鼠标点击事件处理!!! - 页 13 1...67891011121314 新评论 Vladislav Andruschenko 2012.09.14 12:14 #121 sergeev:快点!只有现在!!!下载这个独特的产品。 而你得到的是一个有特别设计的错误的版本--小线的突起!这是很重要的。:))你有办法解决这个问题吗? 我已经看了所有的东西--我还想不出别的办法,而且这不是一个bug,改线是故意的,但是它闪了--我以前写过这个问题。我甚至不会说这是一个小插曲,它是沿着X轴的线条的转变。 surava 2016.02.10 11:22 #122 亲爱的交易员朋友们!我只是从.chm手册中复制了一个例子,在OrderSendAsync函数 的描述中,有一个简单的按钮响应点击,在我的例子中,它看起来像这样。 void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- обработка события CHARTEVENT_CLICK ("Нажатие кнопки мышки на графике") if( id == CHARTEVENT_OBJECT_CLICK ) { Print( "=> ", __FUNCTION__, ": sparam = ", sparam ); if( sparam=="Finalize" ) { PrintFormat( "Closing position %s",_Symbol ); while( !ClosePosition() ); //--- отожмем нажатую кнопку обратно ObjectSetInteger( 0, "Finalize", OBJPROP_STATE, false ); } ChartRedraw(); } } void CreateFinalizeButton() { //--- проверим наличие объекта с именем "Finalize" if(ObjectFind(0,"Finalize")>=0) { //--- если найденный объект не является кнопкой, удалим его if(ObjectGetInteger(0,"Finalize",OBJPROP_TYPE)!=OBJ_BUTTON) ObjectDelete(0,"Finalize"); } else ObjectCreate(0,"Finalize",OBJ_BUTTON,0,0,0); // создадим кнопку "Finalize" //--- настроим кнопку "Finalize" ObjectSetInteger( 0, "Finalize", OBJPROP_CORNER, CORNER_LEFT_LOWER ); ObjectSetInteger( 0, "Finalize", OBJPROP_XDISTANCE, 100 ); ObjectSetInteger( 0, "Finalize", OBJPROP_YDISTANCE, 50 ); ObjectSetInteger( 0, "Finalize", OBJPROP_XSIZE, 150 ); ObjectSetInteger( 0, "Finalize", OBJPROP_YSIZE, 30 ); ObjectSetString( 0, "Finalize", OBJPROP_TEXT, "Finalize" ); ObjectSetInteger( 0, "Finalize", OBJPROP_COLOR, clrBlue ); //--- принудительно обновим график, чтобы кнопки отрисовались немедленно ChartRedraw(); }事实证明,当时间框架改变时,它就会触发。你能告诉我如何解决这个问题吗? Vladimir Karputov 2016.02.10 11:36 #123 surava:亲爱的交易员朋友们!我只是从.chm手册中复制了一个例子,在OrderSendAsync函数 的描述中,有一个简单的按钮响应点击,在我的例子中,它看起来像这样。事实证明,当时间框架改变时,它就会触发。你能告诉我如何解决这个问题吗? OrderSendAsync的标准例子对图表周期的变化没有反应。这意味着你已经搞砸了一些事情。你需要更多的信息:终端类型、终端的构建和你所有的代码。 surava 2016.02.10 11:51 #124 Karputov Vladimir: OrderSendAsync的标准例子对图表周期的变化没有反应。这意味着你已经搞砸了一些事情。你需要更多信息:终端类型、终端构建和你的整个代码。弗拉基米尔,谢谢你的及时答复以下是关于该终端的信息。以下是代码(刚开始学习交易函数 的工作原理)。#property copyright "surava" #property link "https://www.mql5.com" #property version "1.00" ulong MagicNumber = 1649353089; int OnInit() { CreateFinalizeButton(); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { while( !ClosePosition() ); if( ObjectFind( 0, "Finalize" ) >= 0 ) ObjectDelete(0,"Finalize"); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- } //+------------------------------------------------------------------+ //| Trade function | //+------------------------------------------------------------------+ void OnTrade() { } //+------------------------------------------------------------------+ //| TradeTransaction function | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result) { if( trans.type != TRADE_TRANSACTION_REQUEST ) return; Print( "============= New transaction =============" ); Print( __FUNCTION__, " Trans action: ", EnumToString( trans.type ) ); Print( __FUNCTION__, " Trans order state: ", EnumToString( trans.order_state ) ); Print( __FUNCTION__, " Result order type: ", EnumToString( request.action ) ); Print( __FUNCTION__, " Request action: ", EnumToString( request.type ) ); Print( __FUNCTION__, " Deal price: ", result.price ); Print( __FUNCTION__, " Result comment: ", result.comment ); } void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- обработка события CHARTEVENT_CLICK ("Нажатие кнопки мышки на графике") if( id == CHARTEVENT_OBJECT_CLICK ) { Print( "=> ", __FUNCTION__, ": sparam = ", sparam ); if( sparam=="Finalize" ) { PrintFormat( "Closing position %s",_Symbol ); while( !ClosePosition() ); //--- отожмем нажатую кнопку обратно ObjectSetInteger( 0, "Finalize", OBJPROP_STATE, false ); } ChartRedraw(); } } void CreateFinalizeButton() { //--- проверим наличие объекта с именем "Finalize" if(ObjectFind(0,"Finalize")>=0) { //--- если найденный объект не является кнопкой, удалим его if(ObjectGetInteger(0,"Finalize",OBJPROP_TYPE)!=OBJ_BUTTON) ObjectDelete(0,"Finalize"); } else ObjectCreate(0,"Finalize",OBJ_BUTTON,0,0,0); // создадим кнопку "Finalize" //--- настроим кнопку "Finalize" ObjectSetInteger( 0, "Finalize", OBJPROP_CORNER, CORNER_LEFT_LOWER ); ObjectSetInteger( 0, "Finalize", OBJPROP_XDISTANCE, 100 ); ObjectSetInteger( 0, "Finalize", OBJPROP_YDISTANCE, 50 ); ObjectSetInteger( 0, "Finalize", OBJPROP_XSIZE, 150 ); ObjectSetInteger( 0, "Finalize", OBJPROP_YSIZE, 30 ); ObjectSetString( 0, "Finalize", OBJPROP_TEXT, "Finalize" ); ObjectSetInteger( 0, "Finalize", OBJPROP_COLOR, clrBlue ); //--- принудительно обновим график, чтобы кнопки отрисовались немедленно ChartRedraw(); } bool ClosePosition( bool async = true ) { int numPos = PositionsTotal(); PrintFormat( "Positions number: %d", numPos ); if( PositionSelect( _Symbol ) ) Print( "PositionSelect returned true" ); else Print( "PositionSelect returned false" ); if( numPos == 0 ) return true; double volume = PositionGetDouble( POSITION_VOLUME ); uint posType = PositionGetInteger( POSITION_TYPE ); MqlTradeRequest req={0}; req.action = TRADE_ACTION_DEAL; req.symbol = _Symbol; req.magic = MagicNumber; req.volume = volume; switch( posType ) { case POSITION_TYPE_BUY: req.type = ORDER_TYPE_SELL; req.price = SymbolInfoDouble( req.symbol, SYMBOL_BID ); break; case POSITION_TYPE_SELL: req.type = ORDER_TYPE_BUY; req.price = SymbolInfoDouble( req.symbol, SYMBOL_ASK ); break; default: Print( "Wrong position type" ); return true; } req.deviation = 3; req.comment = "Closing opened position"; MqlTradeResult res={0}; if( !OrderSend( req, res ) ) { Print(__FUNCTION__,": ошибка ",GetLastError(),", retcode = ",res.retcode); return false; } return true; } Vladimir Karputov 2016.02.10 12:00 #125 surava:弗拉基米尔,谢谢你的及时答复以下是关于该终端的信息。以下是代码(刚刚开始学习交易功能 的工作原理)。 一目了然--一边删除。 surava 2016.02.10 12:14 #126 Karputov Vladimir: 乍看之下,除去而。 移除它不需要任何费用,但显然问题出在其他地方。至于我--我宁可头寸 没有及时平仓 的问题会导致无休止的循环,而不是损失,你甚至可能无法马上注意到)。 surava 2016.02.10 20:19 #127 我知道问题出在哪里了。请解释一下这个逻辑,为什么按钮处理程序会受到这一行的存在/不存在的影响?input bool DescriptionModeFull=true; ??? surava 2016.02.17 23:06 #128 看起来不仅仅是这一行。我还得再跳一下舞,让歪歪扭扭的metatrader正常工作......也就是说,在我的例子中,它工作得很好,但在真正的程序中却不是这样() Igor Volodin 2016.02.18 07:15 #129 surava:也就是说,在我的例子中,它工作得很好,但在真正的程序中却不是这样()也许在其他地方有什么问题?用这种方法,你不会走得很远的 Artyom Trishkin 2016.02.18 07:43 #130 surava:看起来不只是这条线路的问题。我还得再跳一下舞,让歪歪扭扭的metatrader正常工作......也就是说,在我的例子中,它工作得很好,但在真正的程序中却不是这样() 也许我的手鼓还不够大? 1...67891011121314 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
快点!只有现在!!!下载这个独特的产品。
而你得到的是一个有特别设计的错误的版本--小线的突起!这是很重要的。
:))你有办法解决这个问题吗? 我已经看了所有的东西--我还想不出别的办法,而且这不是一个bug,改线是故意的,但是它闪了--我以前写过这个问题。
我甚至不会说这是一个小插曲,它是沿着X轴的线条的转变。
亲爱的交易员朋友们!
我只是从.chm手册中复制了一个例子,在OrderSendAsync函数 的描述中,有一个简单的按钮响应点击,在我的例子中,它看起来像这样。
事实证明,当时间框架改变时,它就会触发。你能告诉我如何解决这个问题吗?
亲爱的交易员朋友们!
我只是从.chm手册中复制了一个例子,在OrderSendAsync函数 的描述中,有一个简单的按钮响应点击,在我的例子中,它看起来像这样。
事实证明,当时间框架改变时,它就会触发。你能告诉我如何解决这个问题吗?
OrderSendAsync的标准例子对图表周期的变化没有反应。这意味着你已经搞砸了一些事情。你需要更多信息:终端类型、终端构建和你的整个代码。
弗拉基米尔,谢谢你的及时答复
以下是关于该终端的信息。
以下是代码(刚开始学习交易函数 的工作原理)。
弗拉基米尔,谢谢你的及时答复
以下是关于该终端的信息。
以下是代码(刚刚开始学习交易功能 的工作原理)。
乍看之下,除去而。
我知道问题出在哪里了。请解释一下这个逻辑,为什么按钮处理程序会受到这一行的存在/不存在的影响?
???
看起来不仅仅是这一行。我还得再跳一下舞,让歪歪扭扭的metatrader正常工作......
也就是说,在我的例子中,它工作得很好,但在真正的程序中却不是这样()
也就是说,在我的例子中,它工作得很好,但在真正的程序中却不是这样()
也许在其他地方有什么问题?用这种方法,你不会走得很远的
看起来不只是这条线路的问题。我还得再跳一下舞,让歪歪扭扭的metatrader正常工作......
也就是说,在我的例子中,它工作得很好,但在真正的程序中却不是这样()