直方图指标问题
1 頁面的第 562 頁 12 上一個上一個
Results 1 to 10 of 15

Thread: 直方图指标问题

  1. #1
    嗨,
    是否有人可以通过发布绘制直方图所需的绝对最小代码来帮助我? (我正在使用的值是例如Pair1和Pair2之间的点差。)

    我一直在通过窃取来自这里和那里的位来搞乱它,但是从我从其他指示器复制的位,我无法弄清楚如何指定直方图条的起点的0点,也不是数字的酒吧回来计算。我也希望有一个固定的范围 /-直方图。

    非常感谢。
    约翰

  2. #2
    嗨,约翰,希望这会让你更靠近一步。取代任何更有用的东西,它只是绘制每个蜡烛上的封闭位置,以蜡烛高度的百分比表示。指标子窗口的范围由以下设置:#property indior_minimum -10 #property indior_maximum 110级别(虚线,可选)绘制为:#property indior_level1 100 #property indior_level2 0通过循环设置直方图条的数量:for(int i = 0; ilt; Bars; i ){0 =图表上最右边的(最近的)条形Bars =预定义的变量,给出图表上的条形数量David Inserted Code/ -------------- -------------------------------------------------- - /|直方图sample.mq4 |/ ----------------------------------------------- ------------------- #property indior_separate_window #property indior_minimum -10 #property indior_maximum 110 #property indior_level1 100 #property indior_level2 0 #property indior_buffers 1 double HistBuffer#91;# 93 ;;/ ----------------------------------------------- ------------------- int init(){// ---------------------- -------------------------------------------- SetIndexBuffer(0,HistBuffer ); SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3,Red); IndiorDigits(0);返回(0); }/ ---------------------------------------------- -------------------- int deinit(){// --------------------- --------------------------------------------- return(0) ; }/ ---------------------------------------------- -------------------- int start(){// --------------------- --------------------------------------------- for(int i = 0; ilt; bars; i ){if(High#91; i#93; - Low#91; i#93; 0; HistBuffer#91; i#93; = 100 *(Close#91; i#93; Low#91; i#93;)/(High#91; i#93; Low#91; i#93;); } return(0); }

  3. #3
    嗨大卫,非常感谢!这一定会在我的路上帮助我。一切顺利,约翰

  4. #4
    好的,有些东西有用。但是有一些问题。首先,让我解释我想要做的事情。我想比较Pair1和Pair2之间的点差(在这种情况下为EURUSD和GBPUSD)。我将当天的开盘价作为零点。所以,我们以1.6120的公开价格和当前价格1.6100减去,我们看到价格目前已经下跌了20个点。为另一对做同样的事情,并提出一个40点的举动(例如)。所以说我们有GBPUSD =( - 20)和EURUSD =( - 40)。我们可以看到双方正在从开盘走低,欧元在下跌行情中领先20个点。我想要做的是制作一个不错的小直方图,显示出这种差异。下面的代码(这是我从Swingman的一个指示器上写下来的,以及上面的代码片段)我做了很多事情。目前它只显示直方图上的开盘价格(对于一对),并且这使我发出第1号。问题#1)现在这个指标是通过打勾勾选的。这很好,但是如果你把它加载到一个新的图表上,你必须等待几小时/分钟/天才能使它填充数据。有没有办法调用最后一个勾号(我猜这就和关闭吧一样?),并填充除当前栏之外的所有栏?有没有比MarketInfo Mode_Bid更好的调用来计算?问题#2)这显然是更先进的,但是有可能在直方图的顶部/底部标记一个blip指示高/低,就像在立体声均衡器上一样,因为这些组合条可能会达到高/低和然后receede结束之前?问题#3)现在我手动输入开始日期。在最后的00:00 1M蜡烛开放时,指标会自动启动的代码是什么?我的想法可能是愚蠢的,但我希望无论如何都能把它发挥出来。我希望使用这个指标来显示相关对之间的点差的范围。我的想法是,如果你能够从日常的角度了解相关性的范围,那么你可以在最广泛的部分进行交易,然后向中心交易。如果任何人有关于上述任何一点的想法,我全都耳熟能详。最终,这是我想写作自己作为一个学习过程,但你的帮助引导我在正确的方向,将不胜感激。谢谢约翰插入代码// ------------------------------------------- ----------------------- /|直方图sample.mq4 |/ ----------------------------------------------- ------------------- #property indior_separate_window #property indior_minimum -100 #property indior_maximum 150 #property indior_level1 100 #property indior_level2 -150 #property indior_buffers 1 double HistBuffer#91; #93 ;; extern string Pair1 = GBPUSD; extern字符串Pair2 = EURUSD; extern int StartDate = D'2009.7.8 00:00'; extern string StartingTimeCorr = 2009.07.08 00:00; extern int TFperiod = 60;extern int moreBars = 0; double ExtMapBuffer1#91;#93 ;; double ExtMapBuffer2#91;#93 ;;双dPoint; int iWindow; int firstBar; int _BarsCount,_LastBar; int init(){SetIndexBuffer(0,HistBuffer); SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3,Red); IndiorDigits(4);返回(0); }/ ---------------------------------------------- -------------------- int deinit(){return(0); }/ ---------------------------------------------- -------------------- int start(){double Price_1 = MarketInfo(Pair1,MODE_ASK); double Open_Pair1 = iOpen(Pair1,PERIOD_M1,iBarShift(NULL,PERIOD_M1,{StartDate},True)); firstBar = iBarShift(NULL,TFperiod,StrToTime(StartingTimeCorr),true);如果(firstBar lt; 0){Alert(StartingTimeCorr似乎是​​错误的)。返回(0); } RefreshRates(); ArrayInitialize(ExtMapBuffer1,0.0); ArrayInitialize(ExtMapBuffer2,0.0); _BarsCount = WindowBarsPerChart() moreBars 1; int _FirstBar = firstBar; int _LastBar = _FirstBar - _BarsCount moreBars 1; if(_LastBar <0){_LastBar = 0; _BarsCount = _FirstBar moreBars 1; } int i = 0;/ILT;棒; i ){//if(High#91; i#93; - Low#91; i#93; 0; HistBuffer#91; i#93; =(((Price_1) - (Open_Pair1))* 10000); } return(0); }

  5. #5
    好。得到它或多或少的工作。奇怪;当它位于不同的图表上时,我会得到不同的结果,尽管两个图表都应调用相同的信息。有任何想法吗?插入的代码// --------------------------------------------- --------------------- /| JM_Pip差异v1.006.mq4 |/ ----------------------------------------------- ------------------- #property indior_separate_window #property indior_minimum -200 #property indior_maximum 200 #property indior_level1 100 #property indior_level2 -100 #property indior_level3 -50 #property indior_level4 50 #property indior_level5 0 #property indior_buffers 1/----输入参数extern color FontColor = Red; extern int FontSize = 18; extern字符串FontType = Arial黑色; extern string Pair1 = GBPUSD; extern字符串Pair2 = EURUSD; extern int StartDate = D'2009.7.8 00:00'; extern string StartingTimeCorr = 2009.07.08 00:00; extern int TFperiod = 60; extern int moreBars = 0; extern double范围= 200;/----变量int iWindow; int firstBar; int _BarsCount,_LastBar;双重HistBuffer#91;#93 ;; double ExtMapBuffer1#91;#93 ;; double ExtMapBuffer2#91;#93 ;;双dPoint;/ ----------------------------------------------- ------------------- /|自定义指标初始化函数|/ ----------------------------------------------- ------------------- int init(){SetIndexBuffer(0,HistBuffer); SetIndexStyle(0,DRAW_HISTOGRAM,STYLE_SOLID,3,Red); IndiorDigits(0);返回(0); }/ ---------------------------------------------- -------------------- /|自定义指标取消初始化函数|/ ----------------------------------------------- ------------------- int deinit(){ObjectDelete(Pip_Diff_Label); ObjectDelete(Buy_Sell_Label);返回(0); }/ ---------------------------------------------- -------------------- int start(){double Price_1 = MarketInfo(Pair1,MODE_ASK); Double Price_2 = MarketInfo(Pair2,MODE_ASK); double Open_Pair1 = iOpen(Pair1,PERIOD_M1,iBarShift(NULL,PERIOD_M1,{StartDate},True)); double Open_Pair2 = iOpen(Pair2,PERIOD_M1,iBarShift(NULL,PERIOD_M1,{StartDate},True)); double Variance1 =((Price_1-Open_Pair1)* 10000); double Variance2 =((Price_2-Open_Pair2)* 10000);双微分= Variance1-Variance2; int Output1 = Variance1; int Output2 = Variance2; firstBar = iBarShift(NULL,TFperiod,StrToTime(StartingTimeCorr),true);如果(firstBar lt; 0){Alert(StartingTimeCorr似乎是​​错误的)。返回(0); } RefreshRates(); ArrayInitialize(ExtMapBuffer1,0.0); ArrayInitialize(ExtMapBuffer2,0.0); _BarsCount = WindowBarsPerChart() moreBars 1; int _FirstBar = firstBar; int _LastBar = _FirstBar - _BarsCount moreBars 1; if(_LastBar <0){_LastBar = 0;_BarsCount = _FirstBar moreBars 1; } int i = 0;/ILT;棒; i )//将粗体数字添加到直方图窗口字符串Pip_Diff = DoubleToStr(Differential,0); ObjectCreate(Pip_Diff_Label,OBJ_LABEL,1,0,0); ObjectSetText(Pip_Diff_Label,Pip_Diff,FontSize,FontType,FontColor); ObjectSet(Pip_Diff_Label,OBJPROP_CORNER,1); ObjectSet(Pip_Diff_Label,OBJPROP_XDISTANCE,1); ObjectSet(Pip_Diff_Label,OBJPROP_YDISTANCE,1); {HistBuffer#91; i#93; =微分; IndiorShortName(Differential Pair2 =( Output2 ) Pair1 =( Output1 )); } return(0); }

  6. #6

    Quote Originally Posted by ;
    奇怪;当它位于不同的图表上时,我会得到不同的结果,尽管两个图表都应调用相同的信息。有任何想法吗?
    iBarShift(NULL,.....)将返回图表所附对的蜡烛编号。也许iBarShift(Pair1,.....)等会更好?对不起,我没有时间详细介绍你的代码,所以我只是猜测。

  7. #7

  8. #8
    有人能给我一个快速的想法,你如何填充数据到数组中?我一直通过MT4的帮助,但在这方面对我来说太神秘了。基本上我有20个值,我想平均。我正在使用其他数学来创建这些值,所以我不能只使用[close price,period 20]。因此,我为每个酒吧创建一个数字。我想对这个数字的最后20栏进行平均,并对其进行一些其他的数学运算。我猜测阵列是做到这一点的方法,但我从哪里开始就失去了。任何指针将不胜感激。谢谢约翰

  9. #9
    双myarray [20]; myarray [0] = value1;/第一个值myarray [1] = value2;/第二个值。 。 。 myarray [19] = value20;/第20个值averageval = 0; for(int i = 0; ilt; 20; i ){averageval = averageval myarray [i]; } averageval = averageval20;

  10. #10
    嗨埃文,非常感谢。你能帮我简单解释一下i 对我做了什么以及它在上面的代码中做了什么?我知道它给自己加了1等,但我对此有点模糊。谢谢约翰

發布權限

  • 您不可發布新主題
  • 您不可回复
  • 您不可發布附件
  • 您不可編輯您的帖子
  •  
  • BB代碼是打開的
  • 表情符號是打開的
  • [IMG]代碼是打開的
  • [視頻]代碼是打開的
  • HTML代碼是關閉的
forex-pedia網站使用cookie 文字跟蹤
forex-pedia.com網站使用cookie 文字跟蹤,某些設定已經固定。您可以點擊此處閱讀我們的Cookie使用說明。 請點擊右鍵接受我們的cookies。如果您選擇繼續使用forex-pedia.com網站,我們將認為您接受我們的cookies。