luuvanhuong9462
Member
- 21
- 3
Xin chào anh chị coder
em tạo 1 ea trên ForexEAdvisor , em cài đã cài thêmMM
Em sử dụng nến H1 (1) làm tín hiệu và nến H1 (0) vào lệnh . nhưng lúc thị trường biến động mạnh thì khoảng 10 phút sau là đã đạt lợi nhuận . sau đó Ea tự động vào lệnh lại ( vì vẫn thỏa điều kiện ) . và làm cho vị trí vào lệnh cực xấu ( ngay chỗ xa ) .
Ngoài ra em đang cố code AdvancedMM cho nó giới hạn số lần thực hiện :
ví dụ : lottsize mặc định là : 0.1
=> thua MM * 2 = 0.2 ( lần 1)
=> thua MM * 2 = 0.4 ( lần 2)
=> thua MM tự động retturn lottsize mặc định là 0.1
Xin anh chị hướng dẫn giúp em với ạ .
Em xin gửi mã trực tiếp lên để đỡ tải về ạ :
extern int MagicNumber=10009;
extern double Lots =0.1;
extern double StopLoss=0;
extern double TakeProfit=0;
extern int TrailingStop=0;
extern int Slippage=3;
double lot=0;
//+------------------------------------------------------------------+
// expert start function
//+------------------------------------------------------------------+
int start()
{
double MyPoint=Point;
if(Digits==3 || Digits==5)
MyPoint=Point*10;
double TheStopLoss=0;
double TheTakeProfit=0;
if(AdvancedMM()>0)
lot=AdvancedMM();
else
lot=Lots;
if(TotalOrdersCount()==0)
{
int result=0;
if
(iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,1 ) > iMA(NULL,0,50,0,MODE_EMA,PRICE_CLOSE,1 ) )
// Here is your open buy rule
{
result=OrderSend(Symbol(),OP_BUY,lot,Ask,Slippage,0,0,"EA Generator www.ForexEAdvisor.com",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
(iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,1 ) > iMA(NULL,0,50,0,MODE_EMA,PRICE_CLOSE,1 ) )
// Here is your open Sell rule
{
result=OrderSend(Symbol(),OP_SELL,lot,Bid,Slippage,0,0,"EA Generator www.ForexEAdvisor.com",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 AdvancedMMLots = 0;
int SystemHistoryOrders=OrdersHistoryTotal();
for(int i=SystemHistoryOrders-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
if(OrderMagicNumber()==MagicNumber) //|
{
if(OrderSymbol()==Symbol())
{
if(OrderProfit()>=0)
{
AdvancedMMLots = Lots;
break;
}
if(OrderProfit()<0)
{
AdvancedMMLots = NormalizeDouble(2* OrderLots(),2);
break;
}
}
}
}
return (AdvancedMMLots);
}
//+------------------------------------------------------------------+
XIN CÁM ƠN ANH CHỊ TRƯỚC Ạ .
em tạo 1 ea trên ForexEAdvisor , em cài đã cài thêmMM
Em sử dụng nến H1 (1) làm tín hiệu và nến H1 (0) vào lệnh . nhưng lúc thị trường biến động mạnh thì khoảng 10 phút sau là đã đạt lợi nhuận . sau đó Ea tự động vào lệnh lại ( vì vẫn thỏa điều kiện ) . và làm cho vị trí vào lệnh cực xấu ( ngay chỗ xa ) .
Ngoài ra em đang cố code AdvancedMM cho nó giới hạn số lần thực hiện :
ví dụ : lottsize mặc định là : 0.1
=> thua MM * 2 = 0.2 ( lần 1)
=> thua MM * 2 = 0.4 ( lần 2)
=> thua MM tự động retturn lottsize mặc định là 0.1
Xin anh chị hướng dẫn giúp em với ạ .
Em xin gửi mã trực tiếp lên để đỡ tải về ạ :
extern int MagicNumber=10009;
extern double Lots =0.1;
extern double StopLoss=0;
extern double TakeProfit=0;
extern int TrailingStop=0;
extern int Slippage=3;
double lot=0;
//+------------------------------------------------------------------+
// expert start function
//+------------------------------------------------------------------+
int start()
{
double MyPoint=Point;
if(Digits==3 || Digits==5)
MyPoint=Point*10;
double TheStopLoss=0;
double TheTakeProfit=0;
if(AdvancedMM()>0)
lot=AdvancedMM();
else
lot=Lots;
if(TotalOrdersCount()==0)
{
int result=0;
if
(iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,1 ) > iMA(NULL,0,50,0,MODE_EMA,PRICE_CLOSE,1 ) )
// Here is your open buy rule
{
result=OrderSend(Symbol(),OP_BUY,lot,Ask,Slippage,0,0,"EA Generator www.ForexEAdvisor.com",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
(iMA(NULL,0,20,0,MODE_EMA,PRICE_CLOSE,1 ) > iMA(NULL,0,50,0,MODE_EMA,PRICE_CLOSE,1 ) )
// Here is your open Sell rule
{
result=OrderSend(Symbol(),OP_SELL,lot,Bid,Slippage,0,0,"EA Generator www.ForexEAdvisor.com",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 AdvancedMMLots = 0;
int SystemHistoryOrders=OrdersHistoryTotal();
for(int i=SystemHistoryOrders-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
if(OrderMagicNumber()==MagicNumber) //|
{
if(OrderSymbol()==Symbol())
{
if(OrderProfit()>=0)
{
AdvancedMMLots = Lots;
break;
}
if(OrderProfit()<0)
{
AdvancedMMLots = NormalizeDouble(2* OrderLots(),2);
break;
}
}
}
}
return (AdvancedMMLots);
}
//+------------------------------------------------------------------+
XIN CÁM ƠN ANH CHỊ TRƯỚC Ạ .
Đính kèm
Giới thiệu sách Trading hay
Trading In The Zone - Thực hành Kiểm soát Cảm xúc bằng Tâm lý học Hành vi trong Đầu tư và Giao dịch Tài chính
Là quyển sách Top 1 toàn cầu về chủ đề đầu tư/trading, Trading In The Zone giúp thấu hiểu và quản trị cảm xúc cũng như giữ vững kỷ luật khi tham gia thị trường tài chính, nhằm nâng cao trình độ và hiệu quả đầu tư lên mức cao nhất có thể
Bài viết liên quan