expforex.com 专家的功能特点和参数
现成专家与编程/自由职业者的优势。
描述
让我们研究一下指标 (indicators)的行为,重点关注那些绘制 (draw)和不绘制的指标。例如,考虑一下柱 (Candle) 指标与其他指标可能存在的不同功能。
编程中的信号差异。使用shift 参数 (shift parameter)
为了更好地理解指标 (indicators)的工作原理,探索绘制指标 (drawing indicators)和非绘制指标 (non-drawing indicators)的示例会很有帮助。
绘制指标 (Drawing indicators) (重绘 (Repaint)) 是那些直接在价格图表 (price chart)上绘制的指标,而非绘制指标 (non-drawing indicators)则在单独的窗口中显示其输出。?????? 否
绘制 (Drawing) 或 重绘指标 (Redrawing Indicators) 是在交易中使用的技术工具,它们会修改其信号 (signals)(例如箭头)或改变信号方向 (signal direction),以在当前或之前的柱 (Candle)上提供更准确的指示。
柱 (Bar) = 烛 (Candle):
这些指标 (indicators)具有重绘其信号 (signals)的能力,这既可以被视为违反交易诚信,又是一种欺骗行为。
一些指标 (indicators)故意重绘其信号 (signals)以增强视觉吸引力,使图表更具美感。
其他指标 (indicators)在其数学计算中执行重绘,以提高生成信号的准确性和可靠性。
然而,对于所有指标 (indicators)来说,在第0根柱 (bar)(Candle)或当前柱 (current bar)(Candle)上绘制是正常行为。这一初始绘制确保指标与最新的市场数据正确对齐。
让我们探讨指标 (indicators)为何重绘其信号 (signals)的根本原因,以及这对交易策略 (trading strategies)的影响。
这两种类型的指标 (indicators)之间的信号 (signals)差异可能很大,因此在编程交易策略 (trading strategies)时理解它们的行为至关重要。
影响指标 (indicators)行为的一种方法是使用shift 参数 (shift parameter),它允许您将指标输出在时间上向前或向后移动。
通过尝试不同的shift 参数 (shift parameter)值,您可以微调指标 (indicators)以更好地与您的交易策略 (trading strategy)对齐,从而提高您在市场中成功的机会。
您还可以使用我们的通用专家顾问 (Expert Advisor, EA)通过策略测试器检查这些指标 (indicators):
EA xCustomEA:适用于 iCustom 指标的通用交易顾问 (Universal Trading Advisor for iCustom Indicators)。定制策略构建器 (Custom Strategy Builder)
或者使用我们的模拟器在策略测试器中:
前言
本文应我们的合作伙伴的要求撰写。
在订购专家顾问 (Expert Advisor, EA) 编程时,您可以在所有我的顾问中调整信号柱 (signal bar)。
在线上常见到抱怨称一些专家顾问 (Expert Advisors, EAs)因其指标 (indicators)而无法正常工作。
我将详细解释这些信号并展示相反的情况:所有指标 (indicators)都会绘制,它们只需正确使用即可。
本文有一个视频版本 (video version),但在观看之前,我建议先阅读文本版本以获得更深入的理解。
Shift (0,1,2…..) 柱 (Candle) 数量
该参数表示您的指标 (indicators)将从第几个柱 (Bar)获取信号。
在订购专家顾问 (Expert Advisor, EA)时,您必须指定以下信号定义参数:在信号出现后立即开仓,或等待信号在已关闭的柱 (Bar)上形成后,仅在下一个柱 (Bar)开盘时开仓。
由于算法的不同,一些指标 (indicators)有明确的定义:信号在第几根柱 (Bar)给出?
如果谈到订单的清晰度和正确执行,则交易必须仅在已关闭的柱 (Bar)上处理,即参数 shift=1。
如果需要在当前柱 (Bar)上信号出现时立即开仓,并且指标 (indicator)允许这样做,则需要设置shift=0。
专家顾问 (Expert Advisor)
该EA是使用我们的 EA 编写模板 (template for writing an EA)编写的。
顾问的所有功能都在此页面上描述:Forex 顾问功能 (Forex Advisor Functions)。
您可以从以下链接下载包裹:信号柱 (Signal Bar) 测试包 (Testing Package)
1. 移动平均指标 (Moving Average Indicator)
MT4 终端的标准指标 (indicator)包括平均周期、平均价格和设置中的平均类型。
交易策略 (Trading Strategy): 平均线交叉。慢速 MA 和快速 MA 的交叉。
策略代码 (Strategy Code):
double ExampleMA=iMA(Symbol(),0,20,0,MODE_SMA,PRICE_CLOSE,shift); // MA Call Example double ExampleMA2=iMA(Symbol(),0,50,0,MODE_SMA,PRICE_CLOSE,shift); // MA Call Example double ExampleMA23=iMA(Symbol(),0,20,0,MODE_SMA,PRICE_CLOSE,shift+1); // MA Call Example double ExampleMA22=iMA(Symbol(),0,50,0,MODE_SMA,PRICE_CLOSE,shift+1); // MA Call Example if(ExampleMA23<ExampleMA22 && ExampleMA>ExampleMA2) Sig=1; if(ExampleMA23>ExampleMA22 && ExampleMA<ExampleMA2) Sig=2;
Shift = 0 的工作示例 (Examples of Work with Shift = 0)
Shift = 1 的工作示例 (Examples of Work with Shift = 1)
解释 (Explanation): 该指标 (indicator)不绘制 (draw),允许与任何shift 参数 (shift)一起使用。
视频示例 (Video Example):
2. 指标交叉 (Indicator Cross)
基于 MA 交叉策略的自定义指标 (indicator),具有附加功能。它以高精度显著绘制。在1根柱 (Bar)上交叉时,在第0根柱 (Bar)上绘制箭头并持续重绘。
交易策略 (Trading Strategy): 箭头交易 (Arrow Trading)
策略代码 (Strategy Code):
int Sig=0; if(shift!=-1) { double UP=iCustom(Symbol(),0,"cross",0,shift); double DN=iCustom(Symbol(),0,"cross",1,shift); } if(shift==-1) for(int i=1;i<=100;i++) { UP=iCustom(Symbol(),0,"cross",0,i); DN=iCustom(Symbol(),0,"cross",1,i); if(UP!=EMPTY_VALUE || DN!=EMPTY_VALUE) break; } if(UP!=EMPTY_VALUE){Sig=1;} if(DN!=EMPTY_VALUE){Sig=2;}
Shift = 0 的工作示例 (Examples of Work with Shift = 0)
Shift = 1 的工作示例 (Examples of Work with Shift = 1)
Shift = -1 的工作示例 (Examples of Work with Shift = -1)
解释 (Explanation): 该指标 (indicator)显著绘制,开发者故意重绘信号。因此,使用该指标 (indicator)作为信号指标 (indicator)是有风险的。
视频示例 (Video Example):
3. CurrencyPowerMeter 指标 (CurrencyPowerMeter Indicator)
一个自定义指标 (indicator),用于衡量货币的强度。该指标 (indicator)使用对象操作,因此shift 参数 (shift)无关紧要。该指标 (indicator)的交易策略 (trading strategy)基于从图表上的对象指示而不是从指标缓冲区 (indicator buffer)提取值。
交易策略 (Trading Strategy): 交易货币强度差异
策略代码 (Strategy Code):
double EUR_HOUR[1]; double GBP_HOUR[1]; double AUD_HOUR[1]; double NZD_HOUR[1]; double USD_HOUR[1]; double CAD_HOUR[1]; double CHF_HOUR[1]; double JPY_HOUR[1]; double PervayaValuta; double VtorayaValuta; string note=" Authentication SETTINGS =="; string username = ""; string password = ""; double trend; string DATATRend; trend=iCustom(Symbol(),0,"CurrencyPowerMeter",0,0); EUR_HOUR[0]=StringToDouble(ObjectDescription("CPMEUR_Str_h")); GBP_HOUR[0]=StringToDouble(ObjectDescription("CPMGBP_Str_h")); AUD_HOUR[0]=StringToDouble(ObjectDescription("CPMAUD_Str_h")); NZD_HOUR[0]=StringToDouble(ObjectDescription("CPMNZD_Str_h")); USD_HOUR[0]=StringToDouble(ObjectDescription("CPMUSD_Str_h")); CAD_HOUR[0]=StringToDouble(ObjectDescription("CPMCAD_Str_h")); CHF_HOUR[0]=StringToDouble(ObjectDescription("CPMCHF_Str_h")); JPY_HOUR[0]=StringToDouble(ObjectDescription("CPMJPY_Str_h")); if(StringSubstr(Symbol(),0,3)=="USD") PervayaValuta=USD_HOUR[0]; if(StringSubstr(Symbol(),0,3)=="GBP") PervayaValuta=GBP_HOUR[0]; if(StringSubstr(Symbol(),0,3)=="EUR") PervayaValuta=EUR_HOUR[0]; if(StringSubstr(Symbol(),0,3)=="AUD") PervayaValuta=AUD_HOUR[0]; if(StringSubstr(Symbol(),0,3)=="NZD") PervayaValuta=NZD_HOUR[0]; if(StringSubstr(Symbol(),0,3)=="CAD") PervayaValuta=CAD_HOUR[0]; if(StringSubstr(Symbol(),0,3)=="CHF") PervayaValuta=CHF_HOUR[0]; if(StringSubstr(Symbol(),0,3)=="JPY") PervayaValuta=JPY_HOUR[0]; if(StringSubstr(Symbol(),3,3)=="USD") VtorayaValuta=USD_HOUR[0]; if(StringSubstr(Symbol(),3,3)=="GBP") VtorayaValuta=GBP_HOUR[0]; if(StringSubstr(Symbol(),3,3)=="EUR") VtorayaValuta=EUR_HOUR[0]; if(StringSubstr(Symbol(),3,3)=="AUD") VtorayaValuta=AUD_HOUR[0]; if(StringSubstr(Symbol(),3,3)=="NZD") VtorayaValuta=NZD_HOUR[0]; if(StringSubstr(Symbol(),3,3)=="CAD") VtorayaValuta=CAD_HOUR[0]; if(StringSubstr(Symbol(),3,3)=="CHF") VtorayaValuta=CHF_HOUR[0]; if(StringSubstr(Symbol(),3,3)=="JPY") VtorayaValuta=JPY_HOUR[0]; if(PervayaValuta - VtorayaValuta > 0) return(1); if(PervayaValuta - VtorayaValuta < 0) return(2); return(0);
工作示例 (Work Examples)
Shift = 0 的工作示例 (Examples of Work with Shift = 0)
解释 (Explanation): 该指标 (indicator)绘制,因此我不建议从中获取信号。
视频示例 (Video Example):
6. HMA 颜色指标 (HMA Color Indicator)
一个自定义指标 (indicator),基于 MA 运算并根据其公式计算信号。
交易策略 (Trading Strategy): 颜色变化交易
策略代码 (Strategy Code):
int Sig=0; double HMARED=iCustom(Symbol(),0,"HMA Color",3,shift); double HMAGREEN=iCustom(Symbol(),0,"HMA Color",1,shift); double HMARED2=iCustom(Symbol(),0,"HMA Color",3,shift+1); double HMAGREEN2=iCustom(Symbol(),0,"HMA Color",1,shift+1); // 指定开仓信号: if(HMAGREEN!=EMPTY_VALUE && HMAGREEN2==EMPTY_VALUE) Sig=1; if(HMARED!=EMPTY_VALUE && HMARED2==EMPTY_VALUE) Sig=2;
工作示例 (Work Examples)
Shift = 1 的工作示例 (Examples of Work with Shift = 1)
解释 (Explanation): 该指标 (indicator)不绘制 (draw)。然而,它使用上述技巧放置信号。这是为数不多的提供相当良好信号的指标 (indicators)之一。
视频示例 (Video Example):
7. MACD 指标 (MACD Indicator)
标准 MT 终端指标 (indicator)。
交易策略 (Trading Strategy): 在信号线和直方图的交叉处进行交易
策略代码 (Strategy Code):
int Sig=0; double MACD_SIGNAL1=iMACD(Symbol(),0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,shift); // MA Call Example double MACD_SIGNAL2=iMACD(Symbol(),0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,shift+1); // MA Call Example double MACD_MAIN1=iMACD(Symbol(),0,12,26,9,PRICE_CLOSE,MODE_MAIN,shift); // MA Call Example double MACD_MAIN2=iMACD(Symbol(),0,12,26,9,PRICE_CLOSE,MODE_MAIN,shift+1); // MA Call Example if(MACD_SIGNAL2<MACD_MAIN2 && MACD_SIGNAL1>MACD_MAIN1) Sig=1; if(MACD_SIGNAL2>MACD_MAIN2 && MACD_SIGNAL1<MACD_MAIN1) Sig=2;
工作示例 (Examples of Work with Shift = 0)
Shift = 1 的工作示例 (Examples of Work with Shift = 1)
解释 (Explanation): 该指标 (indicator)在1根已关闭的柱 (Bar)上不重绘 (redraw),因此您可以自由使用shift=1。
视频示例 (Video Example):
8. ZIGZAG 指标 (ZIGZAG Indicator)
标准 MT 终端指标 (indicator)。基于特定区域的高低构建顶部和底部。
交易策略 (Trading Strategy): 交易顶部和底部的形成。不建议在具有仓位的指标 (indicator)上进行交易。这是一种良好的限制策略。
策略代码 (Strategy Code):
int Sig=0; double PriceZZ1=GetExtremumZZPrice(Symbol(),0,1); double PriceZZ2=GetExtremumZZPrice(Symbol(),0,2); double priceUP, priceDN; if(PriceZZ2>PriceZZ1) { priceUP=PriceZZ2; priceDN=PriceZZ1; Sig=2; } if(PriceZZ2<PriceZZ1) { priceUP=PriceZZ1; priceDN=PriceZZ2; Sig=1; }
工作示例 (Examples of Work)
解释 (Explanation): 该指标 (indicator)绘制顶部和底部,因此shift 参数 (shift)无关紧要。该策略 (strategy)的独特条件允许在该指标 (indicator)上成功交易。
视频示例 (Video Example):
9. BARS 按请求工作 (BARS Work on Request)
在标准 MT 终端的柱 (Bars)上操作。
交易策略 (Trading Strategy): 如果柱 (Bar)看涨,则开多;如果柱 (Bar)看跌,则开空。
策略代码 (Strategy Code):
int Sig=0; if(Open[shift] < Close[shift]) Sig=1; if(Open[shift] > Close[shift]) Sig=2;
工作示例 (Examples of Work)
Shift = 1 的工作示例 (Examples of Work with Shift = 1)
解释 (Explanation): 这是shift 参数 (shift)如何工作的完美示例,展示了如何基于此参数交易策略 (strategies)。
视频示例 (Video Example):
结论 (Conclusions)
这篇信息丰富的文章提供了使用各种指标 (indicators)与不同shift 参数 (shift parameter)值的有用示例。
每个指标 (indicator)都是独一无二的;因此,在创建专家顾问 (Expert Advisor, EA)时,必须考虑指标 (indicator)的类型及其信号。
在聘请程序员创建专家顾问 (Expert Advisor, EA)之前,首先测试您的指标 (indicator)是否存在任何重绘 (redrawing)问题非常重要。
这是至关重要的,因为您的机器人交易的可靠性和有效性将取决于您的指标 (indicator)的准确性。
因此,建议您在继续创建专家顾问 (Expert Advisor, EA)之前,彻底检查和测试您的指标 (indicator)。
顾问 (Advisor)
该EA是使用我们的 EA 编写模板 (template for writing an EA)编写的。
所有顾问功能都在此页面上描述:Forex 顾问功能 (Forex Advisor Functions)。
如果您想为您的指标 (indicator)创建警报,请阅读我们的文章:
有问题吗? (Questions?)
如果您有任何问题,请随时提问。我们不卖“捆绑销售”的产品。
我们的每个产品在购买前都可以进行测试。
我们感谢您对我们产品的反馈和期望,并努力保持高质量标准。
感谢您与我们同行!
您有问题吗? (Do you have a question?)
This post is also available in: English Українська Portuguese Español Deutsch Chinese Русский Français Italiano Türkçe 日本語 한국어
Leave a Reply