初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1317

 
Vladimir Karputov:

看到这些错误。

1.始终明确指定图表符号(是的,你可以依靠文档,但最好是始终明确指定它)

2.字符串没有意义--因为preff+"hhh "永远不会等于Symbol()。


补充:最好有这种方法--在图表上始终有一条线,只是在切换图表时改变线的价格。

如果明确警告:从 "字符串 "到 "数字 "的隐式转换

问题的实质是,该行没有显示在它创建的地方。

如果我在工具上创建的价格是255,为什么当我加载另一个当前价格为310的工具时,它显示为255?

请告诉我如何保存该行并在其创建的地方显示。
 
serg_V777:

如果它明确发出警告:从'字符串'到'数字'的隐式转换

问题的实质是,该行没有显示在它创建的地方。

如果我在工具上创建的价格是255,为什么当我加载另一个当前价格为310的工具时,它显示为255?

请告知如何保存该行并在其创建的地方显示。

你已经给我看了你的代码片段--我已经给了你你的代码片段。声明变量,你就不会有错误。

我无法理解你对线条的逻辑。试着详细描述你的行动--最重要的是你为什么需要这样做。


在你的代码中,我不明白为什么ChartSymbol

 
Vladimir Karputov:

你给我看了一段废旧的代码--我把你的废旧代码给了你。声明变量,就不会有错误。

我不明白你对线条的逻辑。尝试详细描述你的行动--最重要的是你为什么要这样做。


在你的代码中,我不明白为什么我需要ChartSymbol

void OnChartEvent(const int id,           // идентификатор события   
                  const long& lparam,     // параметр события типа long 
                  const double& dparam,   // параметр события типа double 
                  const string& sparam) { // параметр события типа string 
 
 
  preff=ChartSymbol( NULL);
  price=SymbolInfoDouble(Symbol(),SYMBOL_BIDLOW); 
 if(id == CHARTEVENT_OBJECT_CLICK && sparam == "dz_draw")// Нажатие кнопки   
  {   
   ObjectCreate(0,preff+"hhh",OBJ_HLINE,0,0,price) ;    
 ObjectSetInteger(0,preff+"hhh",OBJPROP_COLOR,clrBlack); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_STYLE,0); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_WIDTH,3); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_BACK,false); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_SELECTABLE,true); 
   ObjectSetInteger(0,preff+"hhh",OBJPROP_SELECTED,true); 
   ObjectSetInteger(0,"dz_draw"   ,OBJPROP_STATE,false);
   }
}

所以我在Gazp图表上的277的价格处 创建了一条线。

当我在Sber的同一个窗口中改变它时,在Gazp 上创建的277 行被显示出来......

如果我在310处 创建和Sber线,我在图表上得到两条线--一条是正确的(在需要的地方和需要的地方创建),第二条是错误的--不是来自这个图表....。

通过改变工具并在200-400的价格范围内创建线条,再回到Gazp 图表中,我把人和马都搞混了:)

但我需要唯一的一条(也许是几条横线), 在我需要的地方和时间创建。

 
serg_V777:

所以我在Gazp图表上的277处 创建了一条线...

当在Sber的同一窗口中改变时,在Gazp 上创建的277 号线被显示出来......

如果我在Sber上 创建了310号线,我在图表上得到两条线--一条是正确的(在必要的地方创建,而且是为了必要的东西),第二条是不正确的--不是来自这个图表....

通过改变工具并在200-400的价格范围内创建线条,再回到Gazp 图表中,我把人和马都搞混了:)

但这是我唯一需要的(也许是几条横线), 在我需要的地方和时间创建。

ChartSymbol

阅读帮助。帮助之后,不要使用这个运算符--你不需要它。


你需要以下算法:为每个字符保存价格。价格存储在终端的全局变量中(全局变量名称为符号名称)。接下来,你需要服务'CHARTEVENT_OBJECT_CHANGE'和'CHARTEVENT_OBJECT_DRAG'--并重新将价格保存到全局变量中。

还有很多细微的问题需要解决:例如--有一个全局变量,在图表上没有线......

 
User_mt5:
非常感谢你。你 真的帮助了我。当然,除了在技术指标列表的中间,这个功能还能出现在哪里呢?)

你就不能做到不挖苦别人吗?

你似乎根本就没有读过文件...但你在回答提示时,好像你是宇宙的中心......只有一个不识字的、无助的肚脐...

 
Vitaly Muzichenko:

谢谢你!

没有办法用标准工具做到这一点。

如果不使用系统DLLs,你就无法做到。

我为此出版了一个 完整的图书馆)

对于5的单独
CDir (MT4) - класс для получения оглавления каталога
CDir (MT4) - класс для получения оглавления каталога
  • www.mql5.com
Класс CDir предназначен для получения сведений о файлах и папках вне "песочницы" MQL4 подобно команде MS-DOS Dir. Задействован вызов системных DLL, поэтому следует разрешить их использование.
 
Vladimir Karputov:

阅读帮助。在帮助之后,不要使用这个操作者--你不需要它。


你需要这种算法:对于每个符号,你需要保存一个价格。价格被存储在终端的全局变量中(全局变量的名称只是符号的名称)。接下来,你需要服务'CHARTEVENT_OBJECT_CHANGE'和'CHARTEVENT_OBJECT_DRAG'--并重新将价格保存到全局变量中。

还有很多细微的问题需要解决:例如--有一个全局变量,而在图表上没有线......。

谢谢你的算法。

问题 -- 为什么在这段代码中发现了这一行,并且变色了?

if(preff+"hhh" == ChartSymbol(0) ){
ObjectSetInteger(0,preff+"hhh",OBJPROP_COLOR,clrNONE); }

但要做到这一点,应该是一个黑暗的森林,要去....。

 
Mikhail Dovbakh:

如果不使用系统DLLs,你就无法做到。

我为此出版了一个 完整的图书馆)

对于5个单独的

很好,这正是我需要的。

 
Сергей Таболин:

你就不能做到不挖苦别人吗?

你似乎根本就没有读过文件...然而,你对线索的反应就像你是宇宙的中心一样......。只有一个文盲和无助的肚脐...

与其无理取闹,不如做一些有用的事情,看在上帝的份上!

而且不要费力地回答和回复!你的意见,唉,我不感兴趣!)

 

请告诉我应该从哪个类继承你的类,以便使用这些类的所有方法

在你的类中使用这些类的所有方法,而不在你的类中创建对象