教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 资格考试 >

ea简明教程收集以及修改(3)

来源:网络收集 时间:2025-09-22
导读: int init() //初始化 { Lots = 1; lasttime = NULL; return(0); } int deinit() { return(0); } //反初始化 //主程序 int start() { CheckForOpen(); //开仓 平仓 条件检查 和操作 if (bb0) CTP(); //跟踪止赢 retu

int init() //初始化

{

Lots = 1;

lasttime = NULL;

return(0);

}

int deinit() { return(0); } //反初始化

//主程序

int start()

{

CheckForOpen(); //开仓 平仓 条件检查 和操作

if (bb>0) CTP(); //跟踪止赢

return(0);

}

//+------下面是各子程序--------------------------------------------+

double LotsOptimized() //确定下单量,开仓调用 资金控制

{ double lot=Lots;

int orders=HistoryTotal(); // history orders total

int losses=0; // number of losses orders without a break

//MarketInfo(Symbol(),MODE_MINLOT); 相关信息

//MarketInfo(Symbol(),MODE_MAXLOT);

//MarketInfo(Symbol(),MODE_LOTSTEP);

lot=NormalizeDouble(MaximumRisk * AccountBalance()/AccountLeverage(),1); //

if(lot<0.1) lot=0.1;

if(lot>maxLots) lot=maxLots;

return(lot);

}

//平仓持有的买单

void CloseBuy()

{

if (OrdersTotal( ) > 0 )

{

for(i=OrdersTotal()-1;i>=0;i--)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderType()==OP_BUY)

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,White);

Sleep(5000);

}

}

} 开仓量计算

mt4只做ea的教程

}

//平仓持有的卖单

void CloseSell()

{

if (OrdersTotal( ) > 0 )

{

for(i=OrdersTotal()-1;i>=0;i--)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderType()==OP_SELL)

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,White);

Sleep(5000);

}

}

}

}

//判断是否买或卖或平仓

int buyorsell() //在这个函数计算设置你的交易信号 这里使用MACD 和MA 做例子

{

double MacdCurrent, MacdPrevious, SignalCurrent;

double SignalPrevious, MaCurrent, MaPrevious;

MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);

MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);

SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);

SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);

MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);

MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);

if(MacdCurrent<0 & MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious

& MaCurrent>MaPrevious)

return (1); // 买 Ma在上升,Macd在0线上,并且两线上交叉

if(MacdCurrent>0 & MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious

& MaCurrent<MaPrevious)

return (-1); // 卖

return (0); //不交易

}

int nowbuyorsell = 0;

void CheckForOpen()

{

if (Time[0] == lasttime ) return; //每时间周期检查一次 时间控制

lasttime = Time[0];

nowbuyorsell = buyorsell(); //获取买卖信号

if (nowbuyorsell == 1) //买 先结束已卖的

mt4只做ea的教程

CloseSell();

if (nowbuyorsell == -1) //卖 先结束已买的

CloseBuy();

if (TimeDayOfWeek(CurTime()) == 1)

{

if (TimeHour(CurTime()) < 3 ) return; //周一早8点前不做 具体决定于你的时区和服务器的时区 时间控制 }

if (TimeDayOfWeek(CurTime()) == 5)

{

if (TimeHour(CurTime()) > 19 ) return; //周五晚11点后不做

}

if (OrdersTotal( ) >= maxOpen) return ;

//如果已持有开仓次数达到最大,不做

if (nowbuyorsell==0) return; //不交易

TradeOK(); //去下单交易

}

void TradeOK() //去下单交易

{

int error ;

if (nowbuyorsell == 1) //买

{

switch (whichmethod)

{

case 1: res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);break;

case 2: res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask-StopLoss*Point,0,"",MAGICMA,0,Blue); break;

case

3: res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point,"",MAGICMA,0,Blue);break; case

4: res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",MAGICMA,0,Blue);break;

default : res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);break;

}

if (res <=0)

{

error=GetLastError();

if(error==134)Print("Received 134 Error after OrderSend() !! "); // not enough money

if(error==135) RefreshRates(); // prices have changed

}

Sleep(5000);

return ;

}

if (nowbuyorsell == -1) //卖

mt4只做ea的教程

{

switch (whichmethod)

{

case 1: res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red); break;

case 2: res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,Bid+StopLoss*Point,0,"",MAGICMA,0,Red); break;

case 3: res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,Bid-TakeProfit*Point,"",MAGICMA,0,Red); break;

case

4: res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"",MAGICMA,0,Red); break;

default : res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red); break;

}

if (res <=0)

{

error=GetLastError();

if(error==134) Print("Received 134 Error after OrderSend() !! "); // not enough money

if(error==135) RefreshRates(); // prices have changed

}

Sleep(5000);

return ;

}

}

void CTP() //跟踪止赢

{

bool bs = false;

for (int i = 0; i < OrdersTotal(); i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if (OrderType() == OP_BUY)

{

if ((Bid - OrderOpenPrice()) > (TrailingStop * MarketInfo(OrderSymbol(), MODE_POINT))) //

损和当前价格比较判断是否要修改跟踪止 …… 此处隐藏:4099字,全部文档内容请下载后查看。喜欢就下载吧 ……

ea简明教程收集以及修改(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/97647.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)