写3个函数
MT51 5分钟周期, 写一个 函数boolwanpan( intindex) 输入 Index , 求 判断这根K线所在的时间 是不是在晚间 20:00到 凌晨02:00之间
2 booljcd( int index) ,jcd 定义 :ma5上穿 ma20 为 金叉, 下穿为死叉,金叉 与 死叉 之间的 最低价位 为 jcd ,输入 index 判断这根K线是不是 jcd
3反之,金叉 死叉 之间的 高点 为 scg, bool scg ( int index) 判断这根K线是不是scg
我一个都不会写。。。 //--- 5分钟周期, 写一个 函数boolwanpan( intindex) 输入 Index , 求 判断这根K线所在的时间 是不是在晚间 20:00到 凌晨02:00之间
bool wanpan(int index)
{
datetime time = iTime(_Symbol, PERIOD_M5, index); // 获取K线的时间戳
int hour = TimeHour(time); // 获取当前小时数
int minute = TimeMinute(time); // 获取当前分钟数
// 判断当前时间是否处于20:00到次日02:00之间
if ((hour >= 20 && minute >= 0) || (hour < 2 && minute >= 0))
{
return true;
}
else
{
return false;
}
}
//--- booljcd( int index) ,jcd 定义 :ma5上穿 ma20 为 金叉, 下穿为死叉,金叉 与 死叉 之间的 最低价位 为 jcd ,输入 index 判断这根K线是不是 jcd
bool jcd(int index)
{
double ma5 = iMA(_Symbol, PERIOD_CURRENT, 5, 0, MODE_SMA, PRICE_CLOSE, index); // 获取MA5值
double ma20 = iMA(_Symbol, PERIOD_CURRENT, 20, 0, MODE_SMA, PRICE_CLOSE, index); // 获取MA20值
if (ma5 > ma20) // 上穿MA20,判断是否为金叉
{
double preMa5 = iMA(_Symbol, PERIOD_CURRENT, 5, 0, MODE_SMA, PRICE_CLOSE, index + 1); // 获取前一根K线的MA5值
double preMa20 = iMA(_Symbol, PERIOD_CURRENT, 20, 0, MODE_SMA, PRICE_CLOSE, index + 1); // 获取前一根K线的MA20值
if (preMa5 <= preMa20) // 前一根K线处于下穿MA20(死叉)状态,当前K线为金叉
{
double low = iLowest(_Symbol, PERIOD_CURRENT, MODE_LOW, 2, index + 1); // 获取金叉和死叉之间的最低价位
if (Low <= low) // 判断当前K线(index)是否处于金叉和死叉之间的最低价位
{
return true;
}
}
}
else // 下穿MA20,判断是否为死叉
{
double preMa5 = iMA(_Symbol, PERIOD_CURRENT, 5, 0, MODE_SMA, PRICE_CLOSE, index + 1); // 获取前一根K线的MA5值
double preMa20 = iMA(_Symbol, PERIOD_CURRENT, 20, 0, MODE_SMA, PRICE_CLOSE, index + 1); // 获取前一根K线的MA20值
if (preMa5 >= preMa20) // 前一根K线处于上穿MA20(金叉)状态,当前K线为死叉
{
double high = iHighest(_Symbol, PERIOD_CURRENT, MODE_HIGH, 2, index + 1); // 获取金叉和死叉之间的最高价位
if (High >= high) // 判断当前K线(index)是否处于金叉和死叉之间的最高价位
{
return true;
}
}
}
return false;
}
//--- 反之,金叉 死叉 之间的 高点 为 scg, bool scg ( int index) 判断这根K线是不是scg
bool scg(int index)
{
double ma5 = iMA(_Symbol, PERIOD_CURRENT, 5, 0, MODE_SMA, PRICE_CLOSE, index); // 获取MA5值
double ma20 = iMA(_Symbol, PERIOD_CURRENT, 20, 0, MODE_SMA, PRICE_CLOSE, index); // 获取MA20值
if (ma5 > ma20) // 上穿MA20,判断是否为金叉
{
double preMa5 = iMA(_Symbol, PERIOD_CURRENT, 5, 0, MODE_SMA, PRICE_CLOSE, index + 1); // 获取前一根K线的MA5值
double preMa20 = iMA(_Symbol, PERIOD_CURRENT, 20, 0, MODE_SMA, PRICE_CLOSE, index + 1); // 获取前一根K线的MA20值
if (preMa5 <= preMa20) // 前一根K线处于下穿MA20(死叉)状态,当前K线为金叉
{
double high = iHighest(_Symbol, PERIOD_CURRENT, MODE_HIGH, 2, index + 1); // 获取金叉和死叉之间的最高价位
if (High >= high) // 判断当前K线(index)是否处于金叉和死叉之间的最高价位
{
return true;
}
}
}
else // 下穿MA20,判断是否为死叉
{
double preMa5 = iMA(_Symbol, PERIOD_CURRENT, 5, 0, MODE_SMA, PRICE_CLOSE, index + 1); // 获取前一根K线的MA5值
double preMa20 = iMA(_Symbol, PERIOD_CURRENT, 20, 0, MODE_SMA, PRICE_CLOSE, index + 1); // 获取前一根K线的MA20值
if (preMa5 >= preMa20) // 前一根K线处于上穿MA20(金叉)状态,当前K线为死叉
{
double low = iLowest(_Symbol, PERIOD_CURRENT, MODE_LOW, 2, index + 1); // 获取金叉和死叉之间的最低价位
if (Low <= low) // 判断当前K线(index)是否处于金叉和死叉之间的最低价位
{
return true;
}
}
}
return false;
}
页:
[1]