来高手写EA
MT51.MACD金叉后K线上穿MA60,往下回调后不破0轴,第二次金叉确认后第二跟K线进多。
2.MACD死叉后K线下穿MA60,往上回调后不破0轴,第二次死叉确认后第二跟K线进多。
3.盈亏比任意设置
//+------------------------------------------------------------------+
//| 自定义交易策略示例 |
//+------------------------------------------------------------------+
#property copyright "Your Name"
#property link "http://yourwebsite.com"
#property version "1.00"
// 定义全局变量
extern double TakeProfit = 100; // 止盈点数,可自行设置
extern double StopLoss = 50; // 止损点数,可自行设置
//+------------------------------------------------------------------+
//| 初始化函数,仅在EA启动时调用一次 |
//+------------------------------------------------------------------+
int OnInit()
{
// 检查是否有足够的历史数据
if (Bars < 100)
{
Print("历史数据不足");
return INIT_FAILED;
}
return INIT_SUCCEEDED;
}
//+------------------------------------------------------------------+
//| 每根K线结束时调用的函数 |
//+------------------------------------------------------------------+
void OnTick()
{
// 获取MACD指标数据
int rates_total = Bars;
double macdBuffer[];
double signalBuffer[];
double histogramBuffer[];
IndicatorBuffers(3);
IndicatorSetInteger(INDICATOR_APPLIED_PRICE, PRICE_CLOSE);
IndicatorSetDouble(INDICATOR_PERIOD_1, 12);
IndicatorSetDouble(INDICATOR_PERIOD_2, 26);
IndicatorSetDouble(INDICATOR_PERIOD_SIGNAL, 9);
CopyBuffer(0, 0, 0, rates_total, macdBuffer);
CopyBuffer(0, 1, 0, rates_total, signalBuffer);
CopyBuffer(0, 2, 0, rates_total, histogramBuffer);
// 获取MA60数据
double ma60Buffer[];
int ma60_handle = iMA(_Symbol, _Period, 60, 0, MODE_SMA, PRICE_CLOSE);
CopyBuffer(ma60_handle, 0, 0, rates_total, ma60Buffer);
// 做多条件
if (macdBuffer < signalBuffer && macdBuffer > signalBuffer &&
Close < ma60Buffer && Close > ma60Buffer &&
histogramBuffer >= 0 && histogramBuffer >= 0)
{
if (OrderSelect(Symbol(), SELECT_BY_SYMBOL | SELECT_BY_POS, MODE_TRADES) == -1)
{
int ticket = OrderSend(_Symbol, OP_BUY, LotSize, Ask, 3, Ask - StopLoss * Point, Ask + TakeProfit * Point, "MACD MA60 Long", 16384, 0, Green);
if (ticket < 0)
PrintFormat("做多下单失败, 错误代码: %d", GetLastError());
}
}
// 做空条件
if (macdBuffer > signalBuffer && macdBuffer < signalBuffer &&
Close > ma60Buffer && Close < ma60Buffer &&
histogramBuffer <= 0 && histogramBuffer <= 0)
{
if (OrderSelect(Symbol(), SELECT_BY_SYMBOL | SELECT_BY_POS, MODE_TRADES) == -1)
{
int ticket = OrderSend(_Symbol, OP_SELL, LotSize, Bid, 3, Bid + StopLoss * Point, Bid - TakeProfit * Point, "MACD MA60 Short", 16384, 0, Red);
if (ticket < 0)
PrintFormat("做空下单失败, 错误代码: %d", GetLastError());
}
}
}
//+------------------------------------------------------------------+
//| 程序停止时调用的函数 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
// 清理资源
}
请问愿意支付人民币吗?
页:
[1]