指示器,需要关于自动控制文本之间距离的建议(MT-4)。

 

亲爱的程序员们,你们好!
请给出您的建议。

我们制作一个指标形式的专家顾问!它的任务是--在图表上搜索一个PATTERN,并在条形图上写上文本(多行(!),如

第1行 "信号名称"
第2行 "%的概率"
3号线 "图标"(箭头)。

问题是,如果你设置了一个固定的线间距离=比如说。25点,在M5上一切正常 ...但在H1=上,行距太远(这就是固定文本的问题(!!)。


请教--如何才能在TF变化时 "自动计算 "线与线之间的距离,或在图形稍微向左移动时 "自动计算 "图形的 "高度",或按高度计算(????!!)。

.....,我只想到了一件事。

1) "获得 "当前的图表高度(最低和最高价格)。


2) 最高价-最低价="图表高度(点)",我们总是把它当作100%。

3) 代替 "线条之间的固定距离(25点)--以百分比指定距离(例如,从第2点开始的图表高度的2%)。


..... 和一个程序员谈过 - 他说 == 不要移动物体 ...好吧,你不能在翻转图表后....... ==重新定位多行文本,使其不会相互重叠 ==你必须在翻转图表后删除所有文本 ==删除所有文本,并重新写,考虑到图表的新高度(第2点)(!)。


.....,然后我一直在思考==好吧,如果==只在SCREEN GUIDE中做画呢??

它说=好的,新的信号将被写入正确的,但那些被留下的= = =或再次适合于彼此的顶部,或反之=伸展得更宽(彼此上下),因为 "你不能移动已经绘制的对象,但只需要删除它们,然后重新绘制(!)。


向您提问= 是否有人已经遇到过这样的情况 ??????? 如何解决这个问题?)))
(这样,在图表的任何比例和高度上=多行文字都会恢复到正常的行距(如果用尺子目测==3毫米的目测)......。即行距应该是动态的) ?????)))))))))

我只是不想把整个铭文写成一行,而且是45°的角度(!),因为从视觉上来说,把文字做成横向的,而且是2-3行,更方便。)

请告知(分享您的经验)。


谢谢))。

 
Vitaliy Kostrubko:


研究这个简短的代码,它可能会帮助你。一切都在Canvas中实现。

Canvas的好处是,对于MT4和MT5来说,代码几乎相同。

附加的文件:
 
Vitaliy Kostrubko:

你好,亲爱的程序员们!
请给出您的最佳建议。

...


谢谢你))。

在画布上画画。

Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas
Документация по MQL5: Стандартная библиотека / Пользовательская графика / CCanvas
  • www.mql5.com
Стандартная библиотека / Пользовательская графика / CCanvas - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
哎呀...尼古拉打败了我......。
 

你的想法是正确的。

//подсчитывает количество пунктов цены в одном пикселе
double GetPointsInPixel(long eChartId, int eWindow)
   {
   double eMin=EMPTY_VALUE;
   ChartGetDouble(eChartId,CHART_PRICE_MIN,eWindow,eMin);
   if(eMin==EMPTY_VALUE) return(0);
   double eMax=EMPTY_VALUE;
   ChartGetDouble(eChartId,CHART_PRICE_MAX,eWindow,eMax);
   if(eMax==EMPTY_VALUE) return(0);
   long ePixels=-1;
   ChartGetInteger(eChartId,CHART_HEIGHT_IN_PIXELS,eWindow,ePixels);
   if(ePixels<=0) return(0);
   return(double(eMax-eMin)/ePixels);
   }

double eIndent=GetPointsInPixel(eChartId,eWindow);

然后在事件发生变化时,在所需的价格上增加或减去这个值。

-时间框架的改变。

-一个图表的增加/减少。

-价格表的缩减。

 
Nikolai Semko:

研究这个简短的代码,它可能会帮助你。一切都在Canvas中实现。

Canvas的好处是,对于MT4和MT5,代码几乎相同。

好的,谢谢你 )

 
Artyom Trishkin:
哎呀...尼古拉打败了我......。

...))))))最主要的是,思想是一样的))))。
谢谢 )))))

 
Aleksei Stepanenko:

你的想法是正确的。

double eIndent=GetPointsInPixel(eChartId,eWindow);

然后在事件发生变化时,在所需的价格上增加或减去这个值。

-时间框架的改变。

-一个图表的增加/减少。

-价格表的缩水/缩水。

谢谢你 ))))))))

 

Vitaliy Kostrubko:

阿列克谢-斯捷潘延科

你的想法是正确的。

double eIndent=GetPointsInPixel(eChartId,eWindow);

然后在事件发生变化时,在所需的价格上增加或减去这个值。

-时间框架的改变。

-一个图表的增加/减少。

-价格表的缩水/缩水。

谢谢你 ))))))))

并告诉那个可怜的顾问,他需要开始学习语言,而不是学习****coders的例子。

 
Alexey Viktorov:

并告诉那个可怜的顾问,他需要开始学习语言,而不是学习****coders的例子。

复制 )))))
...时间表明,即使有10年的各种EA(不同复杂程度)的编程经验==也不足以了解整个编码领域)
因为在这10年中,你可以在2/3的编程语言中成为超级专业人员。而且根本不知道其中的1/3))
所以不必冒犯))。但能否掌握这1/3的部分取决于你自己==这是个人问题)。

....他只是对 "能带来利润的狡猾的算法 "更感兴趣。写 "漫画 "并不是他的兴趣所在......

但你的例子我肯定会给他看))。
谢谢 ))))

 
Vitaliy Kostrubko:

拿去吧 )))))
...时间表明,即使有10年的各种EA(不同复杂程度)的编程经验,==也不足以了解TOTAL编码领域)
因为在这10年中,你可以在2/3的编程语言中成为超级专业人员。而且根本不知道其中的1/3))
所以不必冒犯))。但能否掌握这1/3的部分取决于你自己==这是个人的事))。

....他只是对 "能带来利润的狡猾的算法 "更感兴趣。和 "卡通 "不是他的兴趣......

你的例子我肯定会给他看))。
谢谢 ))))

你不需要提到我。这个选项,虽然我使用了它,但我没有说出它。我只是支持我的同名者的意见。

如果一个 "程序员 "谈论不可能移动一个图形对象,他根本就不是一个程序员,甚至不是模仿程序员,而只是****coder。