MT4将品种参数外置可调,代码怎么写
时间: 2024-02-18 08:03:08 浏览: 22
要将品种参数外置可调,需要使用 MetaTrader 4 的 #property 预处理指令。以下是一个示例代码:
```
#property symbol "EURUSD"
#property type "Forex"
#property digits 5
#property stop 100
#property trail 50
```
这段代码定义了 EURUSD 作为交易品种,类型为外汇,价格小数位数为5。同时,还定义了止损和跟踪止损的默认值。您可以根据需要修改这些参数的值,而无需编辑代码,只需在 MT4 平台中打开“属性”窗口并更改值即可。
请注意,您需要将这些属性放在代码文件的顶部,并使用 #property 预处理指令来指定属性名称和值。
相关问题
MT4,在参数修改栏可修随意添加交易品种,MQL4代码怎么写
要在 MT4 参数修改栏中添加交易品种,您需要使用 MQL4 中的特定函数来获取可用的交易品种列表。以下是一个示例代码:
```MQL4
string symbolList = "";
// 获取可用的交易品种
int totalSymbols = SymbolsTotal();
for (int i = 0; i < totalSymbols; i++) {
string symbol = SymbolName(i, false);
symbolList += symbol + ";";
}
// 将交易品种列表添加到参数
input string tradeSymbol = "EURUSD";
input string symbolListParam = "可用的交易品种列表:" + symbolList;
// 在参数修改栏中添加交易品种参数
input bool useTradeSymbol = true;
if (useTradeSymbol) {
tradeSymbol = Symbol();
}
// 执行交易操作
...
```
这段代码中,我们使用 SymbolsTotal() 函数获取可用的交易品种数量,并使用 SymbolName() 函数获取每个交易品种的名称。然后,我们将这些交易品种名称添加到一个字符串变量 symbolList 中。
接下来,我们将交易品种列表作为一个字符串参数添加到参数修改栏中,并将可用的交易品种的列表显示在该参数的值中。
最后,我们使用 Symbol() 函数获取当前交易品种的名称,并将其用作交易品种,同时还可以在参数修改栏中选择其他交易品种。
请注意,您需要将这些代码添加到您的交易策略或指标中,并在代码中适当地调用参数。
请写出MT4的分型指标Fractals 源代码
以下是MT4 Fractals指标的源代码:
```
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Lime
extern int BarsToCount = 2; // Fractal calculation period
double ExtMapBuffer1[];
double ExtMapBuffer2[];
void CalculateFractals(int shift)
{
if (shift < BarsToCount) return;
double hi = High[shift];
double lo = Low[shift];
bool fractal_high = true;
bool fractal_low = true;
for (int i = 1; i <= BarsToCount; i++)
{
if (High[shift - i] > hi)
{
fractal_high = false;
}
if (Low[shift - i] < lo)
{
fractal_low = false;
}
}
if (fractal_high)
{
ExtMapBuffer1[shift - BarsToCount] = hi;
}
else
{
ExtMapBuffer1[shift - BarsToCount] = 0;
}
if (fractal_low)
{
ExtMapBuffer2[shift - BarsToCount] = lo;
}
else
{
ExtMapBuffer2[shift - BarsToCount] = 0;
}
}
int init()
{
SetIndexBuffer(0, ExtMapBuffer1, INDICATOR_DATA);
SetIndexBuffer(1, ExtMapBuffer2, INDICATOR_DATA);
return(0);
}
int start()
{
int limit = Bars - BarsToCount - 1;
for(int i = limit; i >= 0; i--)
{
CalculateFractals(i);
}
return(0);
}
```
这个指标使用`BarsToCount`参数来计算最近几个价格周期内的分型。如果最高价在指定周期内是极大值,那么就标记为顶部分型;如果最低价在指定周期内是极小值,那么就标记为底部分型。这些标记存储在两个指标缓冲区`ExtMapBuffer1`和`ExtMapBuffer2`中,分别用红色和绿色表示。