makegrid_50_100_200_30pips_stop70.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «makegrid_50_100_200_30pips_stop70.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой торговый советник для платформы MetaTrader 4, реализующий стратегию сеточной торговли. Советник размещает отложенные ордера (BUYLIMIT, BUYSTOP, SELLLIMIT, SELLSTOP) на заданных уровнях цены, образуя сетку с фиксированным расстоянием между позициями.
Основной логикой обработки событий является функция start(), вызываемая при каждом тике. Советник периодически пересчитывает уровни сетки и управляет отложенными ордерами в зависимости от настроенных параметров. Доступны фильтры на основе скользящих средних EMA50, EMA100 и EMA200, а также индикатора MACD, который может переопределять настройки направления сделок.
Советник использует магический номер для идентификации своих ордеров и позиций, что позволяет нескольким экземплярам работать одновременно. Встроенные функции позволяют управлять открытыми позициями и отложенными ордерами, включая их закрытие и удаление.
Настройки программы
| Настройка | Описание |
|---|---|
| Magic number of the trades. must be unique to identify (uniqueGridMagic) | Магический номер сетки — Магический номер для идентификации ордеров и позиций данной сетки. Должен быть уникальным. |
| Lots | Объём лота — Объём лота для каждого ордера. |
| pips between orders - grid or mesh size (GridSize) | Размер сетки — Расстояние в пунктах между ордерами сетки. |
| total number of orders to place (GridSteps) | Количество уровней сетки — Общее количество ордеров для размещения в сетке. |
| number of ticks to take profit. normally is = grid size but u can override (TakeProfit) | Тейк-профит — Тейк-профит в пунктах. Если задан нулевым или отрицательным, автоматически устанавливается равным GridSize. |
| if u want to add a stop loss. normal grids dont use stop losses (StopLoss) | Стоп-лосс — Стоп-лосс в пунктах. Если задан нулевым или отрицательным, стоп-лосс не устанавливается. |
| update orders every x minutes (UpdateInterval) | Интервал обновления — Интервал обновления ордеров в минутах. |
| do we want long positions (wantLongs) | Длинные позиции — Разрешает открытие длинных позиций. |
| do we want short positions (wantShorts) | Короткие позиции — Разрешает открытие коротких позиций. |
| do we want longs above price, shorts below price (wantBreakout) | Пробитие уровня — Разрешает размещение длинных ордеров выше текущей цены и коротких — ниже. |
| do we want longs below price, shorts above price (wantCounter) | Контр-трендовые ордера — Разрешает размещение длинных ордеров ниже текущей цены и коротких — выше. |
| do we want longs above ema only, shorts below ema only (limitEMA50) | Ограничение EMA50 — Фильтр открытия коротких позиций курсом выше EMA50 и длинных — ниже EMA50. |
| do we want longs above ema only, shorts below ema only (limitEMA100) | Ограничение EMA100 — Фильтр открытия коротких позиций курсом выше EMA100 и длинных — ниже EMA100. |
| do we want longs above ema only, shorts below ema only (limitEMA200) | Ограничение EMA200 — Фильтр открытия коротких позиций курсом выше EMA200 и длинных — ниже EMA200. |
| maximum number of open positions : not yet implemented.. (GridMaxOpen) | Максимум открытых позиций — Максимальное количество открытых позиций. В текущей реализации не используется. |
| if true, will use macd >0 for longs only, macd >0 for shorts only (UseMACD) | Использовать MACD — При активации советник использует индикатор MACD для определения направления сделок, переопределяя настройки wantLongs и wantShorts. |
| if UseMACD, do we also close open positions with a loss? (CloseOpenPositions) | Закрытие открытых позиций — При активном фильтре UseMACD определяет, нужно ли также закрывать открытые позиции с убытком при пересечении MACD. |
Поиск по коду файла
extern int uniqueGridMagic = 11111; // Magic number of the trades. must be unique to identify
extern double Lots = 0.05; //
extern double GridSize = 20; // pips between orders - grid or mesh size
extern double GridSteps = 10; // total number of orders to place
extern double TakeProfit = 30; // number of ticks to take profit. normally is = grid size but u can override
extern double StopLoss = 70; // if u want to add a stop loss. normal grids dont use stop losses
extern double UpdateInterval = 1; // update orders every x minutes
extern bool wantLongs = true; // do we want long positions
extern bool wantShorts = true; // do we want short positions
extern bool wantBreakout = true; // do we want longs above price, shorts below price
extern bool wantCounter = true; // do we want longs below price, shorts above price
extern bool limitEMA50 = true; // do we want longs above ema only, shorts below ema only
extern bool limitEMA100 = true; // do we want longs above ema only, shorts below ema only
extern bool limitEMA200 = true; // do we want longs above ema only, shorts below ema only
extern double GridMaxOpen = 0; // maximum number of open positions : not yet implemented..
extern bool UseMACD = true; // if true, will use macd >0 for longs only, macd >0 for shorts only
extern bool CloseOpenPositions = false;// if UseMACD, do we also close open positions with a loss?
string GridName = "MakeGrid_50_100_200_30pips_stop100"; // identifies the grid. allows for several co-existing grids
double LastUpdate = 0; // counter used to note time of last update
int init()
{
// код доступен только после оплаты
}
bool IsPosition(double atRate, double inRange, bool checkLongs )
{
int totalorders = OrdersTotal();
for(int j=0;j<totalorders;j++) // scan all orders and positions...
{
OrderSelect(j, SELECT_BY_POS);
if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == uniqueGridMagic) || (OrderComment() == GridName)) ) // only look if mygrid and symbol...
{ int type = OrderType();
if (MathAbs( OrderOpenPrice() - atRate ) < (inRange*0.9)) // dont look for exact price but price proximity (less than gridsize)
{ if ( ( checkLongs && ( type == OP_BUY || type == OP_BUYLIMIT || type == OP_BUYSTOP ) ) || (!checkLongs && ( type == OP_SELL || type == OP_SELLLIMIT || type == OP_SELLSTOP ) ) )
{
return(true);
}
}
}
}
return(false);
}
void CloseAllPendingOrders( )
{
int totalorders = OrdersTotal();
for(int j=totalorders-1;j>=0;j--) // scan all orders and positions...
{
OrderSelect(j, SELECT_BY_POS);
if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == uniqueGridMagic) || (OrderComment() == GridName)) ) // only look if mygrid and symbol...
{
int type = OrderType();
bool result = false;
switch(type)
{
case OP_BUY : result = true ;
case OP_SELL : result = true ;
case OP_BUYLIMIT : result = OrderDelete( OrderTicket() );
case OP_BUYSTOP : result = OrderDelete( OrderTicket() );
case OP_SELLLIMIT : result = OrderDelete( OrderTicket() );
case OP_SELLSTOP : result = OrderDelete( OrderTicket() );
}
}
}
return;
}
void CloseOpenOrders()
{
int total = OrdersTotal();
for(int i=total-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS);
int type = OrderType();
bool result = false;
if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == uniqueGridMagic) || (OrderComment() == GridName)) ) // only look if mygrid and symbol...
{
switch(type)
Показано первые 50% кода (символов: 5577)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.