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
Mô Hình Biểu Đồ - Phương Pháp Hiệu Quả Để Tìm Kiếm Lợi Nhuận
Được xem là cẩm nang về mô hình biểu đồ của các nhà đầu tư, giao dich tài chính toàn cầu và là kiến thức bắt buộc phải nắm về Phân Tích Kỹ Thuật
Bài viết liên quan