指示器仅在当前栏上发出信号
Results 1 to 5 of 5

Thread: 指示器仅在当前栏上发出信号

  1. #1
    嗨,
    我有一个移动平均线交叉指标,每当移动均线交叉时就会发出警报。

    我希望指标只有在发生交叉时(即在当前栏上)才会产生警报。但是,通过这个指标,每次我打开MT4或在两个时间段之间切换时,即使交叉发生在2-3个小时前,我也会收到警报。

    以下是下面的代码的副本。非常感谢。


    #property indior_chart_window
    #property indior_buffers 2
    #property indior_color1 DarkGoldenrod
    #property indior_color2 FireBrick
    double CrossUp [];
    双CrossDown [];
    extern int FasterEMA = 1;
    extern int SlowerEMA = 50;
    extern bool SoundON = true;
    双重alertTag;
    双控制= 2147483647;

    // ----------------------------------------------- -------------------
    //|自定义指标初始化函数|
    // ----------------------------------------------- -------------------
    int init()
    {
    //----指标
    SetIndexStyle(0,DRAW_ARROW,EMPTY,1);
    SetIndexArrow(0,233);
    SetIndexBuffer(0,CrossUp);
    SetIndexStyle(1,DRAW_ARROW,EMPTY,1);
    SetIndexArrow(1,234);
    SetIndexBuffer(1,CrossDown);
    //----
    返回(0);
    }
    // ----------------------------------------------- -------------------
    //|自定义指标取消初始化函数|
    // ----------------------------------------------- -------------------
    int deinit()
    {
    //----
    //----
    返回(0);
    }
    // ----------------------------------------------- -------------------
    //|自定义指标迭代函数|
    // ----------------------------------------------- -------------------
    int start(){
    int limit,i,counter;
    快一倍,慢一点,快一点,以前,慢一点,快一点,慢一点;
    双Range,AvgRange;
    int counted_bars = IndiorCounted();
    //----检查可能的错误
    if(counts_barslt; 0)return(-1);
    //----最后计算的酒吧将被重新计算
    if(counts_barsgt; 0)counting_bars--;
    极限=棒材 - counted_bars;

    for(i = 0; i lt; = limit; i ){

    计数器= I;
    范围= 0;
    AvgRange = 0;
    for(counter = i; counterlt; = i 9; counter )
    {
    AvgRange = AvgRange MathAbs(高[计数器] - 低[计数器]);
    }
    范围= AvgRange10;

    更快EMAnow= iMA(NULL,0,FasterEMA,0,MODE_EMA,PRICE_CLOSE,i);
    更快EMAEMApre= iMA(NULL,0,FasterEMA,0,MODE_EMA,PRICE_CLOSE,i 1);
    fasterEMAafter = iMA(NULL,0,FasterEMA,0,MODE_EMA,PRICE_CLOSE,i-1);
    更低的当前= iMA(NULL,0,SlowerEMA,0,MODE_EMA,PRICE_CLOSE,i);
    slowEMAprevious = iMA(NULL,0,SlowerEMA,0,MODE_EMA,PRICE_CLOSE,i 1);
    slowEMAafter = iMA(NULL,0,SlowerEMA,0,MODE_EMA,PRICE_CLOSE,i-1);

    if((fasterEMAnow gt; slowerEMAnow)(fasterEMAprevious lt; slowerEMAprevious)(fasterEMAafter gt; slowerEMAafter)){
    CrossUp [i] =低[i] - 范围* 0.5;
    }
    else if((fasterEMAnow lt; slowlyEMAnow)(fasterEMAprevious gt; slowerEMAprevious)(fasterEMAafter lt; slowerEMAafter)){
    CrossDown [i] =高[i] 范围* 0.5;
    }
    if(SoundON == true i == 1 CrossUp [i] gt; CrossDown [i] alertTag!= Time [0]){
    警报(MACD 0 cross down,Symbol(),Period());
    alertTag = Time [0];
    SendNotifiion(MACD 0 cross DOWN _Symbol);
    }
    if(SoundON == true i == 1 CrossUp [i] lt; CrossDown [i] alertTag!= Time [0]){
    警报(MACD 0交叉向上,Symbol(),Period());
    alertTag = Time [0];
    SendNotifiion(MACD 0 cross up _Symbol);
    }


    }
    返回(0);
    }

  2. #2
    #property indior_chart_window #property indior_buffers 2 #property indior_color1 DarkGoldenrod #property indior_color2 FireBrick double CrossUp [];双CrossDown []; extern int FasterEMA = 1; extern int SlowerEMA = 50; extern bool SoundON = true;双重alertTag;双控制= 2147483647;/ ----------------------------------------------- ------------------- /|自定义指标初始化函数|/ ----------------------------------------------- ------------------- int init(){//---- ----指标SetIndexStyle(0,DRAW_ARROW,EMPTY,1); SetIndexArrow(0,233); SetIndexBuffer(0,CrossUp); SetIndexStyle(1,DRAW_ARROW,EMPTY,1); SetIndexArrow(1,234); SetIndexBuffer(1,CrossDown);/---- return(0); }/ ---------------------------------------------- -------------------- /|自定义指标取消初始化函数|/ ----------------------------------------------- ------------------- int deinit(){//----/---- return(0); }/ ---------------------------------------------- -------------------- /|自定义指标迭代函数|/ ----------------------------------------------- ------------------- int start(){int limit,i,counter;快一倍,慢一点,快一点,以前,慢一点,快一点,慢一点;双Range,AvgRange; int counted_bars = IndiorCounted();/----检查可能的错误if(counts_barslt; 0)return(-1);/----最后一个计数的小节将被重新计数if(counts_barsgt; 0)counts_bars--;极限=棒材 - counted_bars; for(i = 0; i lt; = limit; i ){counter = i;范围= 0; AvgRange = 0; for(counter = i; counterlt; = i 9; counter ){AvgRange = AvgRange MathAbs(High [counter] - Low [counter]); } Range = AvgRange10;更快EMAnow= iMA(NULL,0,FasterEMA,0,MODE_EMA,PRICE_CLOSE,i);更快EMAEMApre= iMA(NULL,0,FasterEMA,0,MODE_EMA,PRICE_CLOSE,i 1); fasterEMAafter = iMA(NULL,0,FasterEMA,0,MODE_EMA,PRICE_CLOSE,i-1);更低的当前= iMA(NULL,0,SlowerEMA,0,MODE_EMA,PRICE_CLOSE,i); slowEMAprevious = iMA(NULL,0,SlowerEMA,0,MODE_EMA,PRICE_CLOSE,i 1); slowEMAafter = iMA(NULL,0,SlowerEMA,0,MODE_EMA,PRICE_CLOSE,i-1); if((fasterEMAnow gt; slowerEMAnow)(fasterEMAprevious lt; slowerEMAprevious)(fasterEMAafter gt; slowerEMAafter)){CrossUp [i] = Low [i] - Range * 0.5; } else if((fasterEMAnow lt; slowerEMAnow)(fasterEMAprevious gt; slowerEMAprevious)(fasterEMAafter lt; slowerEMAafter)){CrossDown [i] = High [i] Range * 0.5;如果(SoundON == true i == 1 CrossUp [0] gt; CrossDown [0] alertTag!= Time [0]){Alert(MACD 0 cross DOWN on,Symbol(),Period()); alertTag = Time [0]; SendNotifiion(MACD 0 cross DOWN _Symbol);如果(SoundON == true i == 1 CrossUp [0] lt; CrossDown [0] alertTag!= Time [0]){Alert(MACD 0 cross up on,Symbol(),Period()); alertTag = Time [0]; SendNotifiion(MACD 0 cross up _Symbol); }} return(0); }

  3. #3

  4. #4

  5. #5

    Quote Originally Posted by ;
    它是MACD交叉相关的
    对于指标你可以设置任何2移动平均线。 12和26十字代表MACD上的0线交叉。

發布權限

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