pure_martingale.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «pure_martingale.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Торговый советник для платформы MetaTrader 4, написанный на языке MQL4. Советник открывает рыночные позиции в случайном направлении и управляет размером лотов по принципу увеличения при убыточных сделках. Устанавливает и модифицирует стоп-лосс и тейк-профит для открытых позиций, проверяет допустимость торгового времени и торговых дней, а также отображает информационный меню на графике с данными по открытым сделкам.
Настройки программы
| Настройка | Описание |
|---|---|
| separator1 | separator1 — Текстовый разделитель группы настроек мартингейла |
| stop loss and take profit (sl_tp) | sl_tp — Размер стоп-лосса и тейк-профита в пунктах |
| lotsMultiplier | lotsMultiplier — Множитель размера лота при увеличении позиции |
| distanceMultiplier | distanceMultiplier — Множитель расстояния для установки стоп-лосса и тейк-профита |
| fixed lot size (Lots) | Lots — Фиксированный начальный размер лота |
| MaxSlippage | MaxSlippage — Максимально допустимый проскальзывание в пунктах |
| magicNumber | magicNumber — Магический номер для идентификации ордеров советника |
| separator2 | separator2 — Текстовый разделитель группы настроек торгового времени |
| useTradingHours | useTradingHours — Включение или отключение фильтра по торговому времени |
| StartTime | StartTime — Время начала торгового окна |
| StopTime | StopTime — Время окончания торгового окна |
| GMT_Offset | GMT_Offset — Смещение времени относительно GMT в часах |
| separator3 | separator3 — Текстовый разделитель группы настроек торговых дней |
| Monday | Monday — Включение торговли в понедельник |
| Tuesday | Tuesday — Включение торговли во вторник |
| Wednesday | Wednesday — Включение торговли в среду |
| Thursday | Thursday — Включение торговли в четверг |
| Friday | Friday — Включение торговли в пятницу |
| Saturday | Saturday — Включение торговли в субботу |
| Sunday | Sunday — Включение торговли в воскресенье |
| separator4 | separator4 — Текстовый разделитель группы настроек отображения |
| showMenu | showMenu — Включение или отключение отображения меню на графике |
| menuColor | menuColor — Цвет текста меню |
| variablesColor | variablesColor — Цвет значений переменных в меню |
| font | font — Размер шрифта для отображения меню |
Поиск по коду файла
extern string separator1 = "------ Martingale settings ------";
extern double sl_tp = 20; // stop loss and take profit
extern double lotsMultiplier = 1.5;
extern double distanceMultiplier = 1.5;
extern double Lots = 0.03; // fixed lot size
extern double MaxSlippage = 3;
extern double magicNumber = 1212123;
extern string separator2 = "------ Trading Hours ------";
extern bool useTradingHours = false;
extern string StartTime = "06:00";
extern string StopTime = "18:00";
extern int GMT_Offset = 0;
extern string separator3 = "------ Trading Days ------";
extern bool Monday = true;
extern bool Tuesday = true;
extern bool Wednesday = true;
extern bool Thursday = true;
extern bool Friday = true;
extern bool Saturday = true;
extern bool Sunday = true;
extern string separator4 = "------ Wiew settings ------";
extern bool showMenu = true;
extern color menuColor = Yellow;
extern color variablesColor = Red;
extern int font = 10;
double stopLoss, takeProfit,
minAllowedLot, lotStep, maxAllowedLot,
pips2dbl, pips2point, pipValue, minGapStop, maxSlippage,
menulots,
profit,
lots,
ma1;
datetime barTime=0;
bool noHistory=false,
stopsChecked;
int medzera = 8,
trades;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
if(showMenu)
{
ObjectDelete("name");
ObjectDelete("Openl");
ObjectDelete("Open");
ObjectDelete("Lotsl");
ObjectDelete("Lots");
ObjectDelete("Profitl");
ObjectDelete("Profit");
}
return(0);
}
int start()
{
// код доступен только после оплаты
}
int Random()
{
MathSrand(TimeLocal()+Bid);
return(MathRand());
}
bool EnterBuyCondition()
{
if(MathMod(Random(),2)==0)
return(true);
return (false);
}
bool EnterSellCondition()
{
if(MathMod(Random(),2)==1)
return(true);
return (false);
}
bool CheckStops()
{
double sl=0, tp=0, loss;
double total=OrdersTotal();
int ticket=-1;
for(int cnt=total-1;cnt>=0;cnt--)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if( OrderType()<=OP_SELL // check for opened position
&& OrderSymbol()==Symbol() // check for symbol
&& OrderMagicNumber() == magicNumber) // my magic number
{
if(OrderType()==OP_BUY)
{
if(OrderStopLoss()==0 || OrderTakeProfit()==0)
{
ticket=OrderTicket();
while (!IsTradeAllowed()) Sleep(500);
RefreshRates();
SelectLastHistoryOrder(Symbol(), magicNumber);
if(!noHistory)
{
if(OrderProfit()<0)
{
loss=MathAbs(OrderClosePrice()-OrderOpenPrice());
sl=Ask-(loss)*distanceMultiplier;
tp=Ask+(loss)*distanceMultiplier;
}
else
{
sl = Ask-stopLoss;
tp = Ask+takeProfit;
}
}
else
{
sl = Ask-stopLoss;
tp = Ask+takeProfit;
}
if(Bid-sl<=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
sl = Bid-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;
if(tp-Bid<=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
tp = Bid+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;
if(!OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
return(false);
if(OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,Green)) // modify position
{
}
else
return (false);
}
}
if(OrderType()==OP_SELL)
{
if(OrderStopLoss()==0 && OrderTakeProfit()==0)
{
ticket=OrderTicket();
while (!IsTradeAllowed()) Sleep(500);
RefreshRates();
SelectLastHistoryOrder(Symbol(), magicNumber);
if(!noHistory)
{
if(OrderProfit()<0)
{
loss=MathAbs(OrderClosePrice()-OrderOpenPrice());
sl=Bid+(loss)*distanceMultiplier;
tp=Bid-(loss)*distanceMultiplier;
}
else
{
sl = Bid+stopLoss;
tp = Bid-takeProfit;
}
}
else
{
sl = Bid+stopLoss;
tp = Bid-takeProfit;
}
if(sl-Ask<=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
sl = Ask+MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;
if(Ask-tp<=MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
tp = Ask-MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;
if(!OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
return(false);
if(OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,0,Green)) // modify position
{
}
else
return (false);
Показано первые 50% кода (символов: 9681)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.