Professional Documents
Culture Documents
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------Ms ROBOT: robotfx.mt5@gmail.com-----------------------+
void OnTick()
{
//---
AutoSL();
TrailingStop();
Show();
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int dem = 0; // Khai báo biến để lưu tổng lệnh được auto đặt SL, TP
int cmd = 0; // Số lệnh đang tồn tại
int PriceUp_TS = 0; // Giá TrailingStop UP
int PriceDown_TS = 0; // Giá TrailingStop Down
Page 1/3
double Ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);
double AskUp = NormalizeDouble(Ask + TPPoint*_Point,5);
double AskDown = NormalizeDouble(Ask - TPPoint*_Point,5);
if (PositionSelect(_Symbol)==true)
{
if((PositionSymbol==_Symbol)&&P_SL==0&&PositionType==0)
// PositionType==0 BUY
{
trade.PositionModify(PositionTicket,AskDown,AskUp);
}
if((PositionSymbol==_Symbol)&&P_SL==0&&PositionType==1)
// PositionType==1 SELL
{
trade.PositionModify(PositionTicket,AskUp,AskDown);
}
if(PositionSymbol==_Symbol)
{
cmd++;
}
}
if(cmd > 0)
{
if(PriceUp_TS == 0 || PriceDown_TS == 0)
{
PriceUp_TS = NormalizeDouble(AskUp - TSPoint*_Point/2,5);
PriceDown_TS = NormalizeDouble(AskDown + TSPoint*_Point/2,5);
}
}
if(cmd == 0)
{
PriceUp_TS = 0;
PriceDown_TS = 0;
}
}
}
//+------------Ms ROBOT: robotfx.mt5@gmail.com-----------------------+
//+------------------------------------------------------------------+
void TrailingStop()
{
//--------------------------------------------------------
if (PositionSelect(_Symbol)==true)
{
double Ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);
double PriceUp = NormalizeDouble(Ask + TSPoint*_Point,5);
double PriceDown = NormalizeDouble(Ask - TSPoint*_Point,5);
Page 2/3
{
for(int i=PositionsTotal()-1; i>=0;i--)
{
ulong PositionTicket=PositionGetTicket(i);
string PositionSymbol=PositionGetString(
POSITION_SYMBOL);
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void Show()
{
Comment(
"\n",
"Số lệnh TrailingStop ", (string)dem,"\n",
"Số lệnh đang tồn tại ", (string)cmd
);
}
//+------------Ms ROBOT: robotfx.mt5@gmail.com-----------------------+
//+------------------------------------------------------------------+
Page 3/3