Hoang Quang Minh
Active Member
- 209
- 90
Truớc tiên xin lỗi Admin nếu mình đăng bài không đúng chỗ, thì xin Admin chuyển về mục đó giúp.
Mình đang tập viết EA nhưng không biết là bị sai ở chỗ nào mà bị 1 lỗi mà mình sửa hoài không được.
Xin cảm ơn trước các bạn nào biết code bớt chút thời gian liếc qua xem giúp 1 chút.
Xin cảm ơn nhiều.
//+------------------------------------------------------------------+
extern int MagicNumber =10001;
extern double Lots =0.01;
extern double MMLots =0.1;
extern double StopLoss =50;
extern double TakeProfit =50;
extern int TrailingStop =50;
extern int Slippage =3;
//+------------------------------------------------------------------+
// expert start function
//+------------------------------------------------------------------+
int start()
{double MyPoint=Point;
if(Digits==3|| Digits==5) {MyPoint=Point*10;}
double TheStopLoss=0; double TheTakeProfit=0;
if(TotalOrdersCount()==0)
{int result=0;
if((iRSI(NULL,PERIOD_D1,14,PRICE_CLOSE,0)>iRSI(NULL,PERIOD_D1,18,PRICE_CLOSE,0))) // Here is your open buy rule
{result=OrderSend(Symbol(),OP_BUY,AdvancedMM(),Ask,Slippage,0,0,"EA",MagicNumber,0,Blue);
if(result>0){TheStopLoss=0;TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit = Ask+TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss = Ask-StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);}
return(0);}
if((iRSI(NULL,PERIOD_D1,14,PRICE_CLOSE,0)<iRSI(NULL,PERIOD_D1,18,PRICE_CLOSE,0))) // Here is your open Sell rule
{result=OrderSend(Symbol(),OP_SELL,AdvancedMM(),Bid,Slippage,0,0,"EA",MagicNumber,0,Red);
if(result>0){TheStopLoss=0;TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit = Bid-TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss = Bid+StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);}
return(0);}}
//+------------------------------------------------------------------+
for(int cnt=0;cnt<OrdersTotal();cnt++)
{OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{if(OrderType()==OP_BUY){if(TrailingStop>0)
{if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)
{if(OrderStopLoss()<Bid-MyPoint*TrailingStop)
{OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green);
return(0);}}}}
else {if(TrailingStop>0)
{if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop))
{if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))
{OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red);
return(0);}}}}}}
return(0);}
int TotalOrdersCount()
{int result=0;
for(int i=0;i<OrdersTotal();i++)
{OrderSelect(i,SELECT_BY_POS ,MODE_TRADES);
if (OrderMagicNumber()==MagicNumber) result++;}
return (result);}
//======================================================================
double AdvancedMM();
double lastLotsize();
if((lastprofitEn(sym) >1) AdvancedMM = Lots
if((lastprofitEn(sym) <1) AdvancedMM = lastLotsize*MMLots
//+------------------------------------------------------------------+
double lastprofiEn(string symm)
{double lastprofit; datetime lasttime;
for(int i=0; i<= OrdersHistoryTotal()-1; i++)
{if(OrderSelect(i, SELECT_BY_POS,MODE_HISTORY)==False){continue;}
if(OrderSymbol() != symm){continue;}
if(OrderMagicNumber()!= MagicNumber){continue;}
if(OrderType()<2)
{continue;}
if(OrderCloseTime()>lasttime)
{
lasttime = OrderCloseTime();
lastprofit = OrderProfit();
lastLotsize= OrderLots();
}
}
return(lastprofit);
return(lastLotsize);
}
//+------------------------------------------------------------------+
Mình đang tập viết EA nhưng không biết là bị sai ở chỗ nào mà bị 1 lỗi mà mình sửa hoài không được.
Xin cảm ơn trước các bạn nào biết code bớt chút thời gian liếc qua xem giúp 1 chút.
Xin cảm ơn nhiều.
//+------------------------------------------------------------------+
extern int MagicNumber =10001;
extern double Lots =0.01;
extern double MMLots =0.1;
extern double StopLoss =50;
extern double TakeProfit =50;
extern int TrailingStop =50;
extern int Slippage =3;
//+------------------------------------------------------------------+
// expert start function
//+------------------------------------------------------------------+
int start()
{double MyPoint=Point;
if(Digits==3|| Digits==5) {MyPoint=Point*10;}
double TheStopLoss=0; double TheTakeProfit=0;
if(TotalOrdersCount()==0)
{int result=0;
if((iRSI(NULL,PERIOD_D1,14,PRICE_CLOSE,0)>iRSI(NULL,PERIOD_D1,18,PRICE_CLOSE,0))) // Here is your open buy rule
{result=OrderSend(Symbol(),OP_BUY,AdvancedMM(),Ask,Slippage,0,0,"EA",MagicNumber,0,Blue);
if(result>0){TheStopLoss=0;TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit = Ask+TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss = Ask-StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);}
return(0);}
if((iRSI(NULL,PERIOD_D1,14,PRICE_CLOSE,0)<iRSI(NULL,PERIOD_D1,18,PRICE_CLOSE,0))) // Here is your open Sell rule
{result=OrderSend(Symbol(),OP_SELL,AdvancedMM(),Bid,Slippage,0,0,"EA",MagicNumber,0,Red);
if(result>0){TheStopLoss=0;TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit = Bid-TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss = Bid+StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(TheStopLoss,Digits),NormalizeDouble(TheTakeProfit,Digits),0,Green);}
return(0);}}
//+------------------------------------------------------------------+
for(int cnt=0;cnt<OrdersTotal();cnt++)
{OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{if(OrderType()==OP_BUY){if(TrailingStop>0)
{if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)
{if(OrderStopLoss()<Bid-MyPoint*TrailingStop)
{OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green);
return(0);}}}}
else {if(TrailingStop>0)
{if((OrderOpenPrice()-Ask)>(MyPoint*TrailingStop))
{if((OrderStopLoss()>(Ask+MyPoint*TrailingStop)) || (OrderStopLoss()==0))
{OrderModify(OrderTicket(),OrderOpenPrice(),Ask+MyPoint*TrailingStop,OrderTakeProfit(),0,Red);
return(0);}}}}}}
return(0);}
int TotalOrdersCount()
{int result=0;
for(int i=0;i<OrdersTotal();i++)
{OrderSelect(i,SELECT_BY_POS ,MODE_TRADES);
if (OrderMagicNumber()==MagicNumber) result++;}
return (result);}
//======================================================================
double AdvancedMM();
double lastLotsize();
if((lastprofitEn(sym) >1) AdvancedMM = Lots
if((lastprofitEn(sym) <1) AdvancedMM = lastLotsize*MMLots
//+------------------------------------------------------------------+
double lastprofiEn(string symm)
{double lastprofit; datetime lasttime;
for(int i=0; i<= OrdersHistoryTotal()-1; i++)
{if(OrderSelect(i, SELECT_BY_POS,MODE_HISTORY)==False){continue;}
if(OrderSymbol() != symm){continue;}
if(OrderMagicNumber()!= MagicNumber){continue;}
if(OrderType()<2)
{continue;}
if(OrderCloseTime()>lasttime)
{
lasttime = OrderCloseTime();
lastprofit = OrderProfit();
lastLotsize= OrderLots();
}
}
return(lastprofit);
return(lastLotsize);
}
//+------------------------------------------------------------------+
Giới thiệu sách Trading hay
Nhật Ký Giao Dịch Thực Chiến của Phù Thủy Thị trường Tài Chính
Sách chia sẻ 05 tháng giao dịch thực tế trên thị trường tài chính, sử dụng Price Action và Mô hình Biểu đồ của Phù thủy trader Peter Brandt, người có gần 50 năm kinh nghiệm trading và đạt lợi nhuận bình quân 68% lợi nhuận mỗi năm
Bài viết liên quan