这是我一直在使用的一个方便的脚本。它每隔10个点就会画出参考线,以帮助我衡量市场的动向。我试图通过观察屏幕右侧的价格来弄清楚这个问题,真的很沮丧,所以我创建了一个脚本。这个脚本可以作为初学者练习绘制对象的好帮手。
让它成为一个CI而不是脚本,从0开始计算而不是从收盘价开始计算,只在图表的可见部分(WinPriceMax()和它的姊妹部分)绘制,当价格移动超过限制时更新它(在你的例子中,线的间隔=10点),使用OBJ_RECTANGLE 而不是OBJ_HLINE。
它将在所有打开的图表上同步进行。
:D
或者 . . . 把它变成一个指标 . . 需要更多的代码,以便它只在一个新条形的开始时被刷新 . . .
int deinit() { for (int ix = 0; ix < nLines; ix++) // delete my horizontal lines { ObjectDelete("tensLines"+ix); } return(0); } int start() { int nLines = 40; // Number of total line to draw double lineInterval = 0.0010; // Interval between lines double normPrice = NormalizeDouble(Close[1],3); // Current price is rounded to nearest "10" for (int ix = 0; ix < nLines; ix++) // Loop span number of times { if(ObjectFind("tensLines"+ix) < 0) ObjectCreate("tensLines"+ix, OBJ_HLINE, 0, 0, normPrice+((ix-(nLines/2))*lineInterval)); // Place half above and half below the current price else ObjectSet("tensLines"+ix, OBJPROP_PRICE1, normPrice+((ix-(nLines/2))*lineInterval)); ObjectSet("tensLines"+ix,OBJPROP_COLOR,DarkSlateGray); // Make the lines look better } return(0); //All done }
或者 . . . 把它变成一个指标 . . 需要更多的代码,以便它只在一个新条形的开始时被刷新 . . .
是的,当然--好得多。告诉我,是否有办法对像ObjectDelete这样的东西使用某种 "通配符"?我想做这样的事情,ObjectDelete("tensLines "*);换句话说,删除任何以 "tensLines "开头的东西。
实际上,我喜欢你用酒吧布置的方式。这很容易让人看懂。你说,"反正你从来没有看到右边的价格"。我经常想,为什么只有两个选择,买入或卖出,我有50-50的机会,但80% 的时间我都错了。)
我也一样...
:D
实际上,我喜欢你用酒吧布置的方式。这很容易让人眼前一亮。你说,"反正你从来没有看到右边的价格"。我经常想,为什么只有两个选择,买入或卖出,我有50-50的机会,但80%的时间我都错了。)
onewithzachy,我正准备设置你的OBJ_RECTANGLE风格的图表。你提到 "WindowsBarsPerChart()和WindowsFirstVisibleBar()"。我仍然很难弄清楚如何让条形图从屏幕的左侧运行到右侧。但我确实喜欢这种布局有任何关于如何做到这一点的线索吗?
嗨,MisterDog。
很简单。
1.1.获得一个条形图与另一个条形图之间的时间距离。我们可以通过用当前柱状体时间减去前一个柱状体时间或用60秒乘以周期来获得,选择后一种,因为周一有时间差。
datetime Bar_Time_Gap; // or integer type Bar_Time_Gap = Time [0] - Time [1]; // or Time [7] - Time [8] or whatever Bar_Time_Gap = Period()*60;
2.2.WindowsFirstVisibleBar()是最左边的一条。从该条开始画,或者最好从该条的左边开始画,比如说左边的5条。假设 WindowsFirstVisibleBar() 的返回值 是20。这意味着最左边的条形图是[20],那么就从[25]条形图开始画。我实际上是从[Bars - 1]开始画的。
datetime Start; Start = Time [WindowFirstVisibleBar() + 5]; //which is the same ... Start = Time [WindowFirstVisibleBar()] - 5 * Bar_Time_Gap; //... with this one
3.WindowsBarsPerChart()是图表上的条数 。假设WindowsBarsPerChart() 的返回值 是35, WindowsFirstVisibleBar()是20。所以 从条形图[0]开始 ,右边有大约15个条形图的空位。把这个矩形的末端画到这个空位的右边,或者最好从这个 空位的右边开始画,比如向右5个 空位。
datetime End; int Right_Bar = WindowBarsPerChart() - WindowFirstVisibleBar() + 5; End = Time[0] + Right_Bar * Bar_Time_Gap;
当新的条形图出现时,右边的条形图将向左移动,所以矩形的末端将是可见的,我们必须再次画出它。
我希望我没有在这里犯错,因为我写得很快。
:D
这是我一直在使用的一个方便的脚本。它每隔10个点就会画出参考线,以帮助我衡量市场的动向。我试图通过观察屏幕右侧的价格来弄清楚这个问题,真的很沮丧,所以我创建了一个脚本。这个脚本可以作为初学者练习绘制对象的好帮手。