ATM Machine Modified

Author: Copyright � 2009
ATM Machine Modified

解释

MQL4 脚本用于在 MetaTrader 平台上创建一个简单的商品交易自动化机制(ATM机),并通过交易信号触发警报。脚本主要基于商品指数平滑移动平均线 (CCI) 来确定买卖时机。以下是其逻辑的详细描述:

1. 属性声明

  • #property copyright "Copyright © 2009": 指定版权信息。
  • #property link "http://www.extremeideologies.blogspot.com": 提供链接到脚本作者或站点的信息。
  • #property indicator_chart_window: 标记此指标应在图表窗口中显示。

2. 外部变量声明

- `extern int CCI_Trend = 140;`:定义趋势CCI的周期长度,默认为140。
- `extern int CCI_Entry = 100;`:定义入场CCI的周期长度,默认为100。
- `extern int CCI_Power = 42;`:定义过滤CCI的周期长度,默认为42。

3. 初始化函数 (init())

- 此函数在指标加载时调用。当前实现中未执行任何操作,直接返回0。

4. 去初始化函数 (deinit())

- 在指标卸载时调用。当前实现中也未执行任何操作,直接返回0。

5. 迭代函数 (start())

这是脚本的主要逻辑部分,在每个图表条形更新时被调用。

  • int counted_bars=IndicatorCounted();: 获取当前计数的指标条形数量。这用于确保所有历史数据都已加载。

  • double cciTrendNow, cciTrendPrevious, cciEntryNow, cciEntryPrevious, cciFilterNow , cciFilterPrevious ;:声明变量来存储CCI值及其前一个周期的值。

  • 获取当前和前一个周期的CCI值:

    - `cciTrendNow = iCCI(NULL,0,CCI_Trend, PRICE_MEDIAN,0);`: 获取趋势CCI的值。
    - `cciTrendPrevious = iCCI(NULL,0, CCI_Trend, PRICE_MEDIAN,1);`: 获取趋势CCI前一个周期的值。
    - `cciEntryNow = iCCI(NULL,0,CCI_Entry, PRICE_MEDIAN,0);`: 获取入场CCI的值。
    - `cciFilterNow = iCCI(NULL,0,CCI_Power,PRICE_MEDIAN,0);`: 获取过滤CCI的值。
    - `cciFilterPrevious = iCCI(NULL,0,CCI_Power,PRICE_MEDIAN,1);`: 获取过滤CCI前一个周期的值。
    - `cciEntryPrevious = iCCI(NULL,0,CCI_Entry,PRICE_MEDIAN,1);`: 获取入场CCI前一个周期的值。
    
  • 根据CCI条件触发交易信号并发送警报:

    - `if ((cciEntryNow < 0) && (cciEntryPrevious >= 0 ))`: 如果当前入场CCI小于零,而前一周期大于等于零,则可能发出卖出信号。进一步检查趋势和过滤CCI以确认。
      ```markdown
      - `if(((cciTrendNow < 0) && (cciTrendPrevious >= 0)) && ((cciFilterNow < 0) && (cciFilterPrevious >= 0)))`: 检查趋势CCI和过滤CCI的条件,确保它们也符合卖出条件。
        ```markdown
        - `Alert(Symbol(), " M", Period(), "  ....SELL....");`:发送警报指示卖信号。
    
    • else if((cciEntryNow > 0) && (cciEntryPrevious <= 0)): 如果当前入场CCI大于零,而前一周期小于等于零,则可能发出买入信号。进一步检查趋势和过滤CCI以确认。
      - `if(((cciTrendNow > 0) && (cciTrendPrevious <= 0)) && ((cciFilterNow > 0) && (cciFilterPrevious >=0)))`: 检查趋势CCI和过滤CCI的条件,确保它们也符合买入条件。
        ```markdown
        - `Alert(Symbol(), " M", Period(), "   ....BUY....");`:发送警报指示买信号。
      
    
    
  • 记录日志信息:

    - `Comment("Trend CCI: ", cciTrendNow, " Entry CCI: ", cciEntryNow , "Power CCI:", cciFilterNow);`: 输出CCI值到图表的注释栏,帮助调试和查看数据。
    
  • 返回0表示迭代完成。

这个脚本通过比较当前周期与前一周期的CCI值来决定是否发出交易信号,并使用警报功能在图表上提示用户进行相应的操作。

Indicators Used
Commodity channel index
Miscellaneous
It issuies visual alerts to the screen
0 Views
0 Downloads
0 Favorites
ATM Machine Modified
//+------------------------------------------------------------------+
//|                                       ATM Machine with Alert.mq4 |
//|                                                 Copyright © 2009 |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009"
#property link      "http://www.extremeideologies.blogspot.com"

#property indicator_chart_window

extern int CCI_Trend = 140;
extern int CCI_Entry = 100;
extern int CCI_Power = 42;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   double cciTrendNow, cciTrendPrevious, cciEntryNow, cciEntryPrevious, cciFilterNow , cciFilterPrevious ;
   
   cciTrendNow = iCCI(NULL,0,CCI_Trend, PRICE_MEDIAN,0);
   cciTrendPrevious = iCCI(NULL,0, CCI_Trend, PRICE_MEDIAN,1);
   cciEntryNow = iCCI(NULL,0,CCI_Entry, PRICE_MEDIAN,0);
   cciFilterNow = iCCI(NULL,0,CCI_Power,PRICE_MEDIAN,0);
   cciFilterPrevious = iCCI(NULL,0,CCI_Power,PRICE_MEDIAN,1);
   cciEntryPrevious = iCCI(NULL,0,CCI_Entry,PRICE_MEDIAN,1);
   
//---- 
   //Print(cciTrendNow, "...", cciTrendPrevious, "...", cciEntryNow, "...", cciFilterNow, "...", cciFilterPrevious, "...", cciEntryPrevious);
 
 if ((cciEntryNow < 0) && (cciEntryPrevious >= 0 )){
      if(((cciTrendNow < 0) && (cciTrendPrevious >= 0)) && ((cciFilterNow < 0) && (cciFilterPrevious >= 0))){
         Alert(Symbol(), " M", Period(), "  ....SELL....");
      }
   }
   else if((cciEntryNow > 0) && (cciEntryPrevious <= 0)) {
      if(((cciTrendNow > 0) && (cciTrendPrevious <= 0)) && ((cciFilterNow > 0) && (cciFilterPrevious >=0))){
         Alert(Symbol(), " M", Period(), "   ....BUY....");
      }
   }
   Comment("Trend CCI: ", cciTrendNow, " Entry CCI: ", cciEntryNow , "Power CCI:", cciFilterNow);

   
//----
   return(0);
  }
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---