锁仓顺势加码EA源码(MT4自动交易系统实例三)

发布时间 : 星期四 文章锁仓顺势加码EA源码(MT4自动交易系统实例三)更新完毕开始阅读

MT4自动交易系统实例三

锁仓顺势加码EA源码

#property copyright \#property link \#include

extern bool USE_ATR=true;

extern int PercentATR=40; //40% ATR extern double HedgingLevel=30; extern bool AutoTakeProfit=false; int start() {

Hedge_Assistante(); return(0); }

//+------------------------------------------------------------------+ void Hedge_Assistante() {

int i,Tic,Ticket,Hedge,Type; double TP; string

msg=\RIOD_D1,0)+\ dLow:\

iLow(Symbol(),PERIOD_D1,0)+\R(Symbol(),PERIOD_D1,14,0))+

\ AtrLo:\Comment( msg,Red,10);

//1)仅对于BUY/SELL 手动订单进行止盈, BUY/SELL STOP 和BUY/SELL LIMIT 的手动订单不会进行止盈

//2)GBP/USD 止盈 17点, 其他货币对止盈 10点 if(AutoTakeProfit)

{ for(i=0;i

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

if(Symbol()==OrderSymbol() && OrderMagicNumber()==0 && OrderProfit()!=0) //找到手动订单 {

if(Symbol()==\takeprofit is 10

if(OrderType()==OP_BUY ) {

if (Bid-OrderOpenPrice()>=TP*Point) {

if(OrderClose(OrderTicket(),OrderLots(),Bid,2,0)==true)

{Alert(\自动止盈@\ \- \

\ return(0); }

else Alert(OrderTicket(),\ }

if (OrderTakeProfit()-OrderOpenPrice()<(TP-1)*Point || OrderTakeProfit()-OrderOpenPrice()>(TP+1)*Point)

{

if(OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OrderOpenPrice()+TP*Point,0,0)==true)

{Alert(OrderTicket(),\设置止盈@\ Sleep(10000); }

else Alert(OrderTicket(),\error---->\ } }

if(OrderType()==OP_SELL) {

if (OrderOpenPrice()-Ask>=TP*Point) {

if(OrderClose(OrderTicket(),OrderLots(),Ask,2,0)==true)

{Alert(\自动止盈@\ \- \

\ return(0); }

else Alert(OrderTicket(),\error---->\

}

if (OrderOpenPrice()-OrderTakeProfit()>(TP+1)*Point ||OrderOpenPrice()-OrderTakeProfit()<(TP-1)*Point) {

if(OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),OrderOpenPrice()-TP*Point,0,0)==true)

{Alert(OrderTicket(),\设置止盈@\ Sleep(10000); }

else Alert(OrderTicket(),\error----> \ } } } } }

//-------------------------------------------------------------------------

if (USE_ATR) HedgingLevel=iATR(NULL,PERIOD_D1,14,0)*PercentATR/100; else HedgingLevel=HedgingLevel*Point;

//Check all manual order, if no it's countpart hedging order, then creat one for (i=0;i

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

if(Symbol()==OrderSymbol() && OrderMagicNumber()==0 && OrderProfit()!=0/*Actived!*/ ) //it's a manual Order {

Hedge=0;

Ticket=OrderTicket(); Type=OrderType();

double Lots=OrderLots(),OpenPrice=OrderOpenPrice(); for (int j=i;j

{if (OrderSelect(j,SELECT_BY_POS,MODE_TRADES)==false) break; if (Ticket==OrderMagicNumber()) Hedge++; }

if (Hedge==0) //no hedge order, creat one {

if (Type==OP_BUY) {

Tic=OrderSend(Symbol(),OP_SELLSTOP,Lots,

NormalizeDouble(OpenPrice-HedgingLevel,Digits),0,0,0,\\

if( Tic>0) Alert(Ticket,\的对冲单:\生成 SELL

STOP:\ }

if (Type==OP_SELL) {

Tic=OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(OpenPrice+HedgingLevel,Digits),0,0,0,\

if( Tic>0) Alert(Ticket,\的对冲单:\生成 BUY

STOP:\ } } }

}

//Check all hedge order, if no it's countpart manual order, then delete the hedge Order for (i=0;i

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

if (Symbol()==OrderSymbol() && OrderMagicNumber() !=0) //it's a hedge OrderClose {Hedge=0;

Ticket=OrderTicket();

int Magic=OrderMagicNumber();

for (j=0;j

{if (OrderSelect(j,SELECT_BY_POS,MODE_TRADES)==false) break;

if (Magic==OrderTicket()) Hedge++;//use Hedge Order's Magic# compare with Maunal order's Ticket# }

if (Hedge==0 && OrderType()>1/*exclde type OP_BUY && OP_SELL */ )

OrderDelete(Ticket);//no it's countpart manual order exist, delete this hedge OrderClose } }

//v2.2 revise manul order TP=0 if Hedge order have created. for (i=0;i

if(OrderSelect(i,SELECT_BY_POS)==false) continue;

if(Symbol()==OrderSymbol() && OrderMagicNumber()!=0 && OrderType()<2) //Actived HedgeOrder founded! {

Ticket=OrderMagicNumber();

if( OrderSelect(Ticket,SELECT_BY_TICKET)==false) break; if( OrderTakeProfit()!=0)

if(OrderModify(Ticket,OrderOpenPrice(),0,0,0,0)) Alert(Ticket,\对冲单已生成, 系统将止盈改为零,需要手动开锁!\ } } }

联系合同范文客服:xxxxx#qq.com(#替换为@)