SMC MaxMin at 1200
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «smc hilo v11.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Товар представляет собой торговый советник для платформы MetaTrader 4 на языке MQL4. Эксперт размещает отложенные ордера BUYSTOP и SELLSTOP на текущем символе в заданный час, рассчитывая уровни цен на основе данных High/Low текущего бара. Также реализована корректировка стоп-лосса по механизму трейлинг-стоп для открытых позиций.
Советник выполняет проверку количества баров на графике, уровня тейк-профита и свободного маржа перед открытием позиций. Включена логика удаления отложенных BUYSTOP-ордеров при достижении определённого часа. Часть внутренних блоков обработки ордеров отключена условной логикой.
Все торговые параметры настраиваются через внешние переменные: тейк-профит, объём лота, начальный стоп-лосс, параметр трейлинга и час торговли. Эксперт работает с текущим символом графика и поддерживает как длинные, так и короткие позиции.
Настройки программы
| Настройка | Описание |
|---|---|
| TakeProfit | Тейк-профит — Внешний числовой параметр, задающий уровень тейк-профита и используемый для проверки минимального значения. |
| Lots | Объём лота — Внешний числовой параметр, определяющий объём лота для открытия позиций и проверки свободного маржа. |
| InitialStop | Начальный стоп-лосс — Внешний числовой параметр, задающий начальное значение стоп-лосса. |
| TrailingStop | Трейлинг-стоп — Внешний числовой параметр, задающий расстояние трейлинг-стопа для управления стоп-лоссом открытых позиций. |
| SetHour | Час торговли — Внешний целочисленный параметр, задающий час для размещения ордеров и удаления отложенных позиций. |
Поиск по коду файла
extern double TakeProfit = 50;
extern double Lots = 0.1;
extern double InitialStop = 10;
extern double TrailingStop = 10;
extern int SetHour = 13;
int cnt,total,ticket,MinDist;
int SigPos;
int init()
{
// код доступен только после оплаты
}
int start()
{
// код доступен только после оплаты
}
int Flag;
double Spread;
double ATR;
double StopMA;
int cnt, tmp;
double SetupHigh, SetupLow;
Spread=(Ask-Bid);
if(Bars<100){
Print("bars less than 100");
return(0);
}
if(TakeProfit<10){
Print("TakeProfit less than 10");
return(0); // check TakeProfit
}
TrailingStop=iATR(NULL,0,10,0)*2; // BE CAREFUL OF EFFECTING THE AUTO TRAIL STOPS
StopMA=iMA(NULL,0,24,0,MODE_SMA,PRICE_CLOSE,0);
if (TimeHour(CurTime()) == SetHour+1)
{
if (total>0)
{
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol())
{OrderDelete ( OrderTicket() );
}}}}
if(0==1)
{
total=OrdersTotal();
if (total>0)
{
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
{
if(OrderStopLoss() < OrderOpenPrice())
{
if (OrderStopLoss() < Bid -(Point*(MinDist*2)))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid -(Point*(2*MinDist)),OrderTakeProfit(),0,Lime);
}}}
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
{
if(OrderStopLoss() > OrderOpenPrice())
{
if (OrderStopLoss() > Ask + (Point*(MinDist*2)))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(Point*(MinDist*2)),OrderTakeProfit(),0,Lime);
}}}
}}}
total=OrdersTotal();
if(total>0)
{
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
{
if(0==1)
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close LONG position
return(0);
}}
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_SELL && OrderSymbol()==Symbol()) // check for symbol
{
if(0==1)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close SHORT position
return(0);
}}
} // for loop return
} // close 1st if
total=OrdersTotal();
if(total>0)
{
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY && OrderSymbol()==Symbol())
{
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-(Point*TrailingStop))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(Point*TrailingStop),OrderTakeProfit(),0,Yellow);
return(0);
}}}}}}
total=OrdersTotal();
if(total>0)
{
for(cnt=0;cnt<Показано первые 50% кода (символов: 4606)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.