Overdraft Gold Profit
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «overdraftgoldprofit.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Overdraft Gold Profit — торговый советник для платформы MetaTrader 4, работающий на валютном рынке Forex. Советник анализирует исторические данные ценовых баров на заданных таймфреймах, формирует каналы цен и управляет позициями с использованием торговых операций MetaTrader. Продукт размещает рыночные и отложенные ордера, модифицирует стоп-лоссы и тейк-профиты, а также предоставляет информацию о текущем состоянии счёта и сделок прямо на графике.
Настройки программы
| Настройка | Описание |
|---|---|
| The risk per trade % (MaxRisk) | Максимальный риск — Процент риска на одну сделку от свободного маржи счёта |
| Lot trading if risk = 0 (Lots) | Фиксированный лот — Объём лота для торговли, используемый при нулевом значении риска |
| Number of bars for the analysis (BarHistory) | Количество баров анализа — Количество баров, используемых для расчёта аналитических параметров |
| The timeframe for analysis of trade names (PeriodBH) | Таймфрейм анализа — Таймфрейм графика, на котором выполняется анализ ценовых данных |
| The timeframe for the analysis of the second tralia (TimeFrame) | Таймфрейм второго трейлинга — Таймфрейм для анализа при работе второго трейлинга |
| The number of bars for the analysis of the second trailing (BarCount) | Количество баров второго трейлинга — Число баров, используемых для расчёта второго трейлинга |
| The offset from the min/max bars for the second trailing (RBHID) | Смещение от мин/макс баров — Смещение в пунктах от найденных минимумов и максимумов для второго трейлинга |
| Calculate take profit (RBHTP) | Расчёт тейк-профита — Множитель для расчёта уровня тейк-профита |
| The calculation of stop loss (RBHSL) | Расчёт стоп-лосса — Множитель для расчёта уровня стоп-лосса |
| Calculate take profit of the second trailing (RBHT) | Тейк-профит второго трейлинга — Множитель для расчёта тейк-профита второго трейлинга |
| The distance calculation for the price movement of the trailing (RBHTS) | Расстояние трейлинга — Множитель для определения дистанции движения цены при трейлинге |
| The calculation of guaranteed profits by trailing (RBHTSP) | Гарантированная прибыль трейлинга — Множитель для расчёта гарантированной прибыли при трейлинге |
| The modification time of the price channel (RBHTM) | Время модификации канала — Множитель для определения времени модификации канала цен |
| The offset from the Ask/Bid for price channel (RBHSM) | Смещение канала цен — Смещение в пунктах от текущей цены для построения канала |
| The offset from the Ask/Bid for pending orders (RBHPS) | Смещение отложенных ордеров — Смещение в пунктах от текущей цены для размещения отложенных ордеров |
| Show/Hide information (ShowInfo) | Показ информации — Включает или отключает отображение информационного комментария на графике |
| Enable/disable trailing (TrailingInBar) | Трейлинг внутри бара — Включает или отключает трейлинг стоп-лосса внутри текущего бара |
| Enable/disable trailing on bars (TrailingBar) | Трейлинг по барам — Включает или отключает трейлинг стоп-лосса по завершённым барам |
| Enable/disable breakeven (BreakEvenDeals) | Безубыточность — Включает или отключает перевод стоп-лосса в безубыточную точку |
| Close all market/pending orders on Friday (CloseOrders) | Закрытие ордеров в пятницу — Автоматически закрывает все рыночные и отложенные ордера в пятницу |
| Time on Friday to close market orders (TimeFriday) | Время закрытия в пятницу — Час, начиная с которого советник прекращает торговлю в пятницу |
| To delete pending orders at active positions (ClosePendingOrders) | Удаление отложенных ордеров — Удаляет отложенные ордера при наличии активных рыночных позиций |
| The magic number (Magic) | Магический номер — Уникальный номер для идентификации ордеров советника на счёте |
| Color the higer line of the price channel (UpCol) | Цвет верхней линии канала — Цвет верхней границы ценового канала на графике |
| Color the lower line of the price channel (DnCol) | Цвет нижней линии канала — Цвет нижней границы ценового канала на графике |
| Comment for market orders (Com) | Комментарий ордеров — Текст комментария, присваиваемый рыночным ордерам советника |
Поиск по коду файла
#property version "4.2"
#property strict
#include <stderror.mqh>
#include <stdlib.mqh>
#define miz 0.00000001
extern double MaxRisk = 2; //The risk per trade %
extern double Lots = 0.01; //Lot trading if risk = 0
extern int BarHistory = 72; //Number of bars for the analysis
extern int PeriodBH = PERIOD_H1; //The timeframe for analysis of trade names
extern int TimeFrame = PERIOD_M30; //The timeframe for the analysis of the second tralia
extern int BarCount = 2; //The number of bars for the analysis of the second trailing
extern int RBHID = 8; //The offset from the min/max bars for the second trailing
extern int RBHTP = 2; //Calculate take profit
extern int RBHSL = 4; //The calculation of stop loss
extern int RBHT = 4; //Calculate take profit of the second trailing
extern int RBHTS = 6; //The distance calculation for the price movement of the trailing
extern int RBHTSP = 4; //The calculation of guaranteed profits by trailing
extern int RBHTM = 9; //The modification time of the price channel
extern int RBHSM = 7; //The offset from the Ask/Bid for price channel
extern int RBHPS = 2; //The offset from the Ask/Bid for pending orders
extern bool ShowInfo = true; //Show/Hide information
extern bool TrailingInBar = true; //Enable/disable trailing
extern bool TrailingBar = true; //Enable/disable trailing on bars
extern bool BreakEvenDeals = true; //Enable/disable breakeven
extern bool CloseOrders = true; //Close all market/pending orders on Friday
extern int TimeFriday = 23; //Time on Friday to close market orders
extern bool ClosePendingOrders = true; // To delete pending orders at active positions
extern int Magic = 12345; //The magic number
extern color UpCol = clrLawnGreen; //Color the higer line of the price channel
extern color DnCol = clrOrangeRed; //Color the lower line of the price channel
extern string Com = " Kurochka Ryaba"; //Comment for market orders
bool Testing = (!IsDemo() && !IsTesting());
int Number = 123435;
int AccNumber;
int Indent;
int PriceSteep;
int SteepModify;
int TimeModify;
int TrailingStart;
int TrailingStep;
double TakeProfitBar;
double TakeProfit;
double StopLoss;
string Symboll = Symbol();
datetime time;
bool opnovis,testing=false,Signal[2];
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
if(IsTesting() || IsOptimization())return;
EventKillTimer();
Comment("");
int ur=UninitializeReason();
if(ur==1 || ur==6)DelBP(Com);
}
void OnTick()
{
// код доступен только после оплаты
}
int CountBuy()
{
int count = 0;
for (int i = OrdersTotal() - 1; i >= 0; i --)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_BUY)
count ++;
}
}
return (count);
}
int CountSell()
{
int count = 0;
for (int i = OrdersTotal() - 1; i >= 0; i --)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
count ++;
}
}
return (count);
}
int MinStopLoss1()
{
double ask = SymbolInfoDouble(Symbol(),SYMBOL_ASK);
double bid = SymbolInfoDouble(Symbol(),SYMBOL_BID);
double spread = ask - bid;
int spread_points = (int)MathRound(spread/SymbolInfoDouble(Symbol(),SYMBOL_POINT));
return (spread_points);
}
int comis()
{
double prpoint = LotByRisk() * MarketInfo(Symbol(),MODE_TICKVALUE) / ( MarketInfo(Symbol(),MODE_TICKSIZE) / MarketInfo(Symbol(),MODE_POINT) );
double Commissions = OrderCommission();
int res = (int)MathRound(Commissions/prpoint);
return(res);
}
int swap()
{
double prpoint = LotByRisk() * MarketInfo(Symbol(),MODE_TICKVALUE) / ( MarketInfo(Symbol(),MODE_TICKSIZE) / MarketInfo(Symbol(),MODE_POINT) );
double swaps = OrderSwap();
int res = (int)MathRound(swaps/prpoint);
return(res);
}
double OrdersBuyMinSL1()
{
double stoploss = 0;
double minstoplevel = MinStopLoss1();
stoploss = NormalizeDouble(Bid - minstoplevel*Point,Digits);
return (stoploss);
}
double OrdersSellMinSL1()
{
double stoploss = 0;
double minstoplevel = MinStopLoss1();
stoploss = NormalizeDouble(Ask + minstoplevel*Point,Digits);
return (stoploss);
}
void Trailing()
{
double ST_Buy, ST_Sell, NoLoss;
for(int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
{
if (OrderType() == OP_BUY)
{
ST_Buy = NormalizeDouble(GetLowestPrice() - Indent*Point, Digits);
NoLoss = OrderOpenPrice();
if(NormalizeDouble(OrderStopLoss(),Digits) > NormalizeDouble(NoLoss,Digits) || NormalizeDouble(OrderStopLoss(),Digits) == NormalizeDouble(NoLoss,Digits))
{
if(NormalizeDouble(ST_Buy, Digits) != NormalizeDouble(OrderStopLoss(),Digits) && NormalizeDouble(ST_Buy, Digits) > NormalizeDouble(OrderStopLoss(),Digits) && NormalizeDouble(ST_Buy, Digits) <= NormalizeDouble(OrdersBuyMinSL1(), Digits))
{
bool Ans = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(ST_Buy,Digits), NormalizeDouble(Ask + PriceSteep*Point + TakeProfitBar*Point, Digits), 0, clrNONE);
}
}
}
if (OrderType() == OP_SELL)
{
ST_Sell = NormalizeDouble(GetHighestPrice() + Indent * Point, Digits);
NoLoss = OrderOpenPrice();
if (NormalizeDouble(OrderStopLoss(),Digits) < NormalizeDouble(NoLoss,Digits) || NormalizeDouble(OrderStopLoss(),Digits) == NormalizeDouble(NoLoss,Digits))
{
if (NormalizeDouble(ST_Sell, Digits) != NormalizeDouble(OrderStopLoss(),Digits) && NormalizeDouble(ST_Sell, Digits) < NormalizeDouble(OrderStopLoss(),Digits) && NormalizeDouble(ST_Sell, Digits) >= NormalizeDouble(OrdersSellMinSL1(), Digits))
{
bool Ans = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(ST_Sell, Digits), NormalizeDouble(Bid - PriceSteep*Point - TakeProfitBar*Point, Digits), 0, clrNONE);
}
}
}
}
}
}
}
double GetLowestPrice()
{
double price, lowest = 1000000;
for (int i = 1; i <= BarCount; i++)
{
price = iLow(Symbol(), TimeFrame, i);
if (price < lowest)
lowest = price;
}
return (lowest);
}
double GetHighestPrice()
{
double price, highest = 0;
for (int i = 1; i <= BarCount; i++)
{
price = iHigh(Symbol(), TimeFrame, i);
if (price > highest)
highest = price;
}
return (highest);
}
void MoveTrailingStop()
{
int cnt,total=OrdersTotal();
double NoLoss;
for(cnt=0;cnt<total;cnt++)
{
if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
{
NoLoss = OrderOpenPrice();
if(OrderMagicNumber() == Magic && OrderSymbol()== Symbol() && TrailingStart > 0)
{
if(TrailingBar == true)
{
if(OrderOpenTime() >= iTime(Symbol(), PERIOD_CURRENT, 0))
{
if(OrderType() == OP_BUY && OrderSymbol()== Symbol())
{
if(NormalizeDouble(OrderStopLoss(),Digits) < NormalizeDouble(Bid-Point*(TrailingStart+TrailingStep),Digits) && NormalizeDouble(Bid-Point*(TrailingStart+TrailingStep),Digits) <= NormalizeDouble(OrdersBuyMinSL1(), Digits) && NormalizeDouble(Bid-Point*TrailingStep,Digits) > OrderStopLoss())
{
if (NormalizeDouble(OrderStopLoss(),Digits) >= NormalizeDouble(NoLoss,Digits))
{
bool res = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*TrailingStep,Digits),NormalizeDouble(OrderTakeProfit(),Digits),0,clrNONE);
}
}
}
if(OrderType() == OP_SELL && OrderSymbol()== Symbol())
{
if(NormalizeDouble(OrderStopLoss(),Digits)>NormalizeDouble(Ask+Point*(TrailingStart+TrailingStep),Digits) && NormalizeDouble(Ask+Point*(TrailingStart+TrailingStep),Digits) >= NormalizeDouble(OrdersSellMinSL1(),Digits) && NormalizeDouble(Ask+Point*TrailingStep,Digits) < OrderStopLoss())
{
if (NormalizeDouble(OrderStopLoss(),Digits) <= NormalizeDouble(NoLoss,Digits))
{
bool res = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Point*TrailingStep,Digits),NormalizeDouble(OrderTakeProfit(),Digits),0,clrNONE);
}
}
}
}
if(OrderOpenTime() < iTime(Symbol(), PERIOD_CURRENT, 0))
{
if(OrderType() == OP_BUY && OrderSymbol()== Symbol())
{
if (NormalizeDouble(OrderStopLoss(),Digits) >= NormalizeDouble(NoLoss,Digits))
{
bool res = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderStopLoss(),Digits),NormalizeDouble(Ask + PriceSteep*Point + TakeProfitBar*Point, Digits),0,clrNONE);
}
}
if(OrderType() == OP_SELL && OrderSymbol()== Symbol())
{
if (NormalizeDouble(OrderStopLoss(),Digits) <= NormalizeDouble(NoLoss,Digits))
{
bool res = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(OrderStopLoss(),Digits),NormalizeDouble(Bid - PriceSteep*Point - TakeProfitBar*Point, Digits),0,clrNONE);
}
}
}
}
if(TrailingBar == false)
{
if(OrderType() == OP_BUY && OrderSymbol()== Symbol())
{
if(NormalizeDouble(OrderStopLoss(),Digits) < NormalizeDouble(Bid-Point*(TrailingStart+TrailingStep),Digits) && NormalizeDouble(Bid-Point*(TrailingStart+TrailingStep),Digits) <= NormalizeDouble(OrdersBuyMinSL1(), Digits) && NormalizeDouble(Bid-Point*TrailingStep,Digits) > OrderStopLoss())
{
if (NormalizeDouble(OrderStopLoss(),Digits) >= NormalizeDouble(NoLoss,Digits))
{
bool res = OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*TrailingStep,Digits),OrderTakeProfit(),0,clrNONE);
}
}
}
if(OrderType() == OP_SELL && OrderSymbol()== Symbol())
{
if(NormalizeDouble(OrderStopLoss(),Digits)>NormalizeDouble(Ask+Point*(TrailingStart+TrailingStep),Digits) && NormaПоказано первые 50% кода (символов: 23296)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.