EMATrailingStop
EMATrailingStop

EMATrailingStop

更新日期:
2022-10-26
分类标签:
语言:
中文
平台:
没限制

23 人已下载 手机查看

EMATrailingStop

//+——————————————————————+
//| EMATrailingStop_v1.mq4 |
//| Copyright ?2006, Forex-TSD.com |
//| Written by IgorAD,igorad2003@yahoo.co.uk |
//| http://finance.groups.yahoo.com/group/TrendLaboratory |
//+——————————————————————+
#property copyright “Copyright ?2006, Forex-TSD.com ”
#property link “http://www.forex-tsd.com/”

//—- input parameters
extern int EMATimeFrame = 0;
extern int Price = 0;
extern int EMAPeriod = 13;
extern int EMAShift = 2;
extern int InitialStop = 0;
//+——————————————————————+
//| expert initialization function |
//+——————————————————————+
int init()
{

//—-
return(0);
}

// —- Stepped Stops
void TrailStop()
{
double minstop = MarketInfo(Symbol(),MODE_STOPLEVEL);
double ask = MarketInfo(Symbol(),MODE_ASK);
double bid = MarketInfo(Symbol(),MODE_BID);
double ema = iMA(Symbol(),EMATimeFrame,EMAPeriod,0,MODE_EMA,Price,EMAShift);

for (int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS);
int mode=OrderType();
if ( OrderSymbol()==Symbol())
{
if (mode==OP_BUY)
{
double BuyStop = ema;
if(OrderStopLoss() == 0 && InitialStop>0 ) BuyStop = Bid-InitialStop*Point;
if((bid – BuyStop) < minstop*Point) BuyStop = bid – minstop*Point;
Print(“MA=”,ema,” BuyStop=”,BuyStop);
if ((OrderOpenPrice() <= BuyStop && BuyStop > OrderStopLoss()) || OrderStopLoss()==0)
{
bool result = OrderModify(OrderTicket(),OrderOpenPrice(),
NormalizeDouble(BuyStop, Digits),
OrderTakeProfit(),0,LightGreen);
if( !result )
{
Print(“BUY: OrderModify failed with error #”,GetLastError());
}
return(0);

}
}
// – SELL Orders
if (mode==OP_SELL)
{
double SellStop = ema;
if (OrderStopLoss()==0 && InitialStop > 0) SellStop = ask+InitialStop*Point;
if((SellStop-ask) < minstop*Point) SellStop = ask + minstop*Point;
Print(“MA=”,ema,” SellStop=”,SellStop);
if( (OrderOpenPrice() >= SellStop && OrderStopLoss() > SellStop) || OrderStopLoss()==0)
{
OrderModify(OrderTicket(), OrderOpenPrice(),
NormalizeDouble(SellStop, Digits),
OrderTakeProfit(),0,DarkOrange);
if( !result )
{
Print(“SELL: OrderModify failed with error #”,GetLastError());
}
return(0);

}
}
}
}
}

// —- Scan Trades
int ScanTrades()
{
int total = OrdersTotal();
int numords = 0;

for(int cnt=0; cnt<total; cnt++)
{
OrderSelect(cnt, SELECT_BY_POS);
if(OrderSymbol() == Symbol() && OrderType()<=OP_SELL)
numords++;
}
return(numords);
}

//+——————————————————————+
//| expert deinitialization function |
//+——————————————————————+
int deinit()
{
//—-

//—-
return(0);
}
//+——————————————————————+
//| expert start function |
//+——————————————————————+
int start()
{

if (ScanTrades()<1) return(0);
else
if (EMAPeriod >0) TrailStop();

return(0);
}//int start
//+——————————————————————+

 

如果你对文件有了解,请帮助投票!

If you are familiar with the file, please help vote!

平均评分 0 / 5. 投票数: 0

到目前为止还没有投票!成为第一位投票人。

相关资源

暂无评论

none
暂无评论...