外部变量在编程中用于用户与程序间的交互,特别是在配置和优化交易策略时。本文介绍了外部变量的定义、使用和特点。
一、外部变量定义
外部变量由“input”存储类定义。在数据类型之前指示input修饰符。一旦定义,这些变量在程序内部不能被修改,只能读取。外部变量的值只能通过程序属性窗口由用户更改。每次调用OnInit()之前都会重新初始化外部变量。
示例:
//--- 输入参数
input int MA_Period=13;
input int MA_Shift=0;
input ENUM_MA_METHOD MA_Method=MODE_SMMA;
二、设置输入参数的值
输入参数的值可以通过属性窗口进行设置。此外,还可以通过在同一行的输入参数描述后放置字符串注释来设置输入参数在Inputs标签中的显示方式。
示例:
//--- 输入参数
input int InpMAPeriod=13; // 平滑周期
input int InpMAShift=0; // 线水平偏移
input ENUM_MA_METHOD InpMAMethod=MODE_SMMA; // 平滑方法
三、枚举作为输入参数
不仅内置枚举可以用作输入变量,还可以使用用户定义的枚举。
示例:
enum dayOfWeek
{
S=0, // 周日
M=1, // 周一
...
St=6, // 周六
};
input dayOfWeek swapday=W;
这使得用户可以通过更通用的方式指定一周中的特定日期。
四、自定义指标调用及参数传递
使用iCustom()函数调用自定义指标,并严格按照自定义指标的输入变量声明顺序传递参数。
五、“sinput”修饰符的变量
sinput
修饰符的变量允许在启动程序时设置外部参数值,并在策略测试器中优化交易策略。使用sinput
定义的变量不用于输入参数的优化。
示例:
sinput int layers=6; // 层数
这等效于
static input int layers=6; // 层数
此变量在优化输入参数时不使用,其值不会在寻找参数最佳组合时枚举。
六、总结
外部变量允许用户与程序进行互动,灵活地配置和优化交易策略。通过合理使用各种修饰符和枚举,可以提高程序的可读性和用户体验,使程序对不同的交易场景有更好的适应性。了解并掌握这些特性,将有助于开发出更加强大、灵活和易用的交易程序。