来自一个 "傻瓜 "的问题 - 页 9

 
stringo:

这不是我要说的重点。

它说的是测试员的日志,它的意思是测试员的日志。

首先,对于后来者,你需要说明在什么地方,什么东西(最好有图片)...
 

是否可以通过拖动使物体移动? 顺利地 横向的还是纵向的

我想为一个图形做一种卷轴。

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
kPVT:

是否有可能通过拖动使一个物体移动 顺利地 可以使图表对象沿水平或垂直线 移动?

我想为图表做一种卷轴。

找到了一个脚本,对它进行了一些调整。

#import "user32.dll"
bool      GetCursorPos(int &Pos[]);
bool      GetWindowRect(int hWnd,int &Pos[]);
#import
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int p[2];
   int rect[4];
   int hwnd=ChartGetInteger(ChartID(),CHART_WINDOW_HANDLE);
   while(!IsStopped())
     {
      GetWindowRect(hwnd,rect);
      GetCursorPos(p);
      int X=p[0]-rect[0];
      int Y=p[1]-rect[1];
      string c="Глобальные координаты мыши x= "+p[0]+" y= "+p[1]+"\n"+
               "Координаты мыши в окне котировок x= "+X+" y= "+Y;
      Comment(c);
      Sleep(100);
     }
  }
//+------------------------------------------------------------------+

我试着用user32.dll来获取鼠标坐标,使滚动平稳,应该可以。

一般来说,如果有内置的图表对象导航就更好了。

 
你看到角度 部分的例子了吗?
 
Rosh:
你看了绑定角度 部分的例子吗?

谢谢,已经发现并删除了信息,但你更快了:)

我还有一个问题,EA在OnTimer上工作,但窗口只在下一个tick时更新,这个问题可以处理吗?

 
Olegts:

谢谢,已经发现并删除了信息,但你更快了:)

我还有一个问题,该EA在OnTimer上工作,但窗口只在下一个tick时更新,这能处理吗?

在图表上的物体意义上的窗口?

ChartRedraw - 强行重绘图表(很可能这应该会有帮助)。

Документация по MQL5: Операции с графиками / ChartRedraw
Документация по MQL5: Операции с графиками / ChartRedraw
  • www.mql5.com
Операции с графиками / ChartRedraw - Документация по MQL5
 
Interesting:

窗口是指图表上的物体吗?

ChartRedraw - 强制重绘图形(这可能会有帮助)。

我把ChartRedraw(0);,窗口正好是零,而且是唯一的一个,这没有帮助,对象只在下一个tick后更新,尽管Print()显示每秒一次的数据变化 EventSetTimer(1)
 
Olegts:
我把ChartRedraw(0);窗口是零,而且是唯一的一个,这没有帮助,对象只在下一个tick后更新,尽管Print()显示数据每秒变化一次 EventSetTimer(1)

那么,至少需要更多的信息。

对象是什么?谁创造它们,如何创造(例如,对象可以由猫头鹰或指标创造/改变)?

而一般情况下的描述是非常模糊的。

 
Interesting:

那么,至少需要更多的信息。

对象是什么?谁创造它们,如何创造(例如,物体可以由猫头鹰创造/改变,也可以由火鸡创造)?

而且对整体情况的描述非常模糊。

//+------------------------------------------------------------------+
//|                                                    testClass.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"

//--- input parameters

input int Timer=1;


int Val=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(Timer);
   int height=ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS,0);
   int width=ChartGetInteger(0,CHART_WIDTH_IN_PIXELS,0);
   int step=0;
   step=step+30; CreateLabel(0,"EUR",CORNER_LEFT_UPPER,"",50,step);
   step=step+30; CreateLabel(0,"GBP",CORNER_LEFT_UPPER,"",50,step);
   
   
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();
   ObjectDelete(0,"EUR");
   ObjectDelete(0,"GBP");
  
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
//void OnTick()
//  {
//---
//   
//  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
   Val=Val+1;
   int EUR0=Val,EUR1=Val;
   
   int GBP0=Val,GBP1=Val;

     
   ObjectSetString(0,"EUR",OBJPROP_TEXT,"EUR: "+IntegerToString(EUR0)+" | "+IntegerToString(EUR1));
   ObjectSetString(0,"GBP",OBJPROP_TEXT,"GBP: "+IntegerToString(GBP0)+" | "+IntegerToString(GBP1));

   ChartRedraw(0);
//---
  }
//+------------------------------------------------------------------+

void CreateLabel(long   chart_id,
                 string name,
                 int    chart_corner,
                 string text_label,
                 int    x_ord,
                 int    y_ord)
  {
//---
   ObjectCreate(chart_id,name,OBJ_LABEL,0,0,0);
   ResetLastError();
   if(!ObjectSetInteger(chart_id,name,OBJPROP_CORNER,chart_corner))
      Print("Не удалось установить угол привязки для объекта ",
            name,", ошибка ",GetLastError());
   ObjectSetInteger(chart_id,name,OBJPROP_XDISTANCE,x_ord);
   ObjectSetInteger(chart_id,name,OBJPROP_YDISTANCE,y_ord);
   ObjectSetString(chart_id,name,OBJPROP_TEXT,text_label);
   }
 
Olegts:
一切更新正常,数值每秒钟都在变化。