#include <stdlib.mqh>
#define TS_MODE_DISABLE 0
#define TS_MODE_FIXED_SL 1
#define TS_MODE_ATR 2
#define TS_MODE_HALF_VOLATILITY 3
#define TS_MODE_BREAKOUT 4
#define TS_MODE_BREAKEVEN 5
extern string _______Position_______;
extern double Lots=1;
extern double Lots_PCT=10;
extern bool Use_Lots_PCT=false;
extern int TP=0;
extern int SL=30;
extern int SL_Mode=0;
extern int Breakeven_Pips=0;
extern string ______TrailingStop_____;
extern int TS_Mode=0; // 0 = disabled, 1 = Fixed SL, 2 = ATR, 3 = Half Volatility, 4 = Breakout Yesterday Hi/Lo
extern int TS_Trigger=30;
extern int TS_Sensitivity=3;
extern double TS_DynamicFactor=0.5; // applied only if TrailingStopMode = 2 or 3
extern int Evaluate_Interval=1; // -1 chart, 0 tick, > 0 specified min
extern string _______Indicators______;
extern int Extra_Pips=1;
extern int Keltner_Period = 10;
extern string _______Session_______;
extern bool Filter_Session=false;
extern int From_Hour=13;
extern int From_Min=0;
extern int To_Hour=18;
extern int To_Min=0;
string expert_name = "Keltner Breakout";
int main_magic;
int open_slippage=5;
int close_slippage=10;
int orderType;
double orderPrice;
datetime timeNextEval;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
return(0);
}
int start()
{
// код доступен только после оплаты
}
int BuyNow()
{
double trueSL, trueTP, lotSize;
lotSize = GetLots(Symbol(), Lots, Lots_PCT, Use_Lots_PCT);
trueSL = Get_SL(OP_BUY, Ask, Ask, SL, SL_Mode, TS_DynamicFactor);
if (TP > 0) trueTP = Bid+(TP*Point);
int ticket = OrderSendEx(Symbol(), OP_BUY, lotSize, Ask, open_slippage*Point, trueSL, trueTP, expert_name + " " + Symbol() + Period(), main_magic, 0, Yellow);
if (ticket > 0) orderType = OP_BUY; orderPrice = Bid;
return(ticket);
}
int SellNow()
{
double trueSL, trueTP, lotSize;
lotSize = GetLots(Symbol(), Lots, Lots_PCT, Use_Lots_PCT);
trueSL = Get_SL(OP_SELL, Bid, Bid, SL, SL_Mode, TS_DynamicFactor);
if (TP > 0) trueTP = Bid-(TP*Point);
int ticket = OrderSendEx(Symbol(), OP_SELL, lotSize, Bid, open_slippage*Point, trueSL, trueTP, expert_name + " " + Symbol() + Period(), main_magic, 0, Yellow);
if (ticket > 0) orderType = OP_SELL; orderPrice = Bid;
return(ticket);
}
void ControlTrailingStop(int ticket, double SL, int TS_Mode, int TS_Trigger, double TS_DynamicFactor, int TS_Sensitivity)
{
if (ticket == 0 || TS_Mode == 0) return;
double ts;
if (OrderSelectEx(ticket, SELECT_BY_TICKET, MODE_TRADES)==false) return;
if (OrderType() == OP_BUY){
ts = Get_SL(OP_BUY, OrderOpenPrice(), Bid, SL, TS_Mode, TS_DynamicFactor);
if ((ts >= OrderStopLoss() + TS_Sensitivity*Point) && (ts > 0) && (Bid >= OrderOpenPrice() + TS_Trigger*Point )) {
if (Bid - ts >= 5 * Point)
{
OrderModifyEx(ticket, OrderOpenPrice(), ts, OrderTakeProfit(), 0, Red);
}else if(Bid <= ts){
CloseNow(ticket);
}
}
}else if(OrderType() == OP_SELL){
ts = Get_SL(OP_SELL, OrderOpenPrice(), Ask, SL, TS_Mode, TS_DynamicFactor);
if ((ts <= OrderStopLoss() - TS_Sensitivity*Point) && (ts > 0) && (Ask <= OrderOpenPrice() - TS_Trigger*Point)){
if (ts - Ask >= 5 * Point)
{
OrderModifyEx(ticket, OrderOpenPrice(), ts, OrderTakeProfit(), 0, Red);
}else if(ts <= Ask){
CloseNow(ticket);
Показано первые 50% кода (символов: 9249)
Введите ваш email и нажмите кнопку, чтобы перейти к оплате.