source code of grid with 100 pips stop loss.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «source code of grid with 100 pips stop loss.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой советник для платформы MetaTrader 4, реализующий сеточную торговлю. Он автоматически размещает отложенные ордера на покупку и продажу на заданных ценовых уровнях с настраиваемыми параметрами объёма, тейк-профита и стоп-лосса.
Советник поддерживает фильтрацию ордеров по уровням скользящих средних EMA 50, 100 и 200, а также дополнительно может использовать индикатор MACD для подтверждения направления сделок. При определённых условиях MACD советник отменяет все отложенные ордера и при необходимости закрывает открытые позиции.
Доступны настройки направления торгов (длинные и/или короткие позиции), типов входа (пробой или контртренд), частоты обновления сетки и уникального магического номера для идентификации ордеров конкретной сетки.
Настройки программы
| Настройка | Описание |
|---|---|
| uniqueGridMagic | Уникальный магический номер для идентификации ордеров данной сетки. |
| Lots | Объём лота для каждого ордера. |
| GridSize | Расстояние в пунктах между ордерами сетки — размер сетки или ячейки. |
| GridSteps | Общее количество ордеров, которые размещаются в сетке. |
| TakeProfit | Значение тейк-профита в пунктах. По умолчанию равен размеру сетки, но может быть переопределено. |
| StopLoss | Значение стоп-лосса в пунктах. Если не задан (0), стоп-лосс не устанавливается. |
| UpdateInterval | Интервал обновления ордеров в минутах. Советник пересчитывает сетку с заданной периодичностью. |
| wantLongs | Разрешает размещение длинных (покупка) позиций. |
| wantShorts | Разрешает размещение коротких (продажа) позиций. |
| wantBreakout | Включает размещение длинных ордеров выше текущей цены и коротких ордеров ниже текущей цены (пробой). |
| wantCounter | Включает размещение длинных ордеров ниже текущей цены и коротких ордеров выше текущей цены (контртрендовый вход). |
| limitEMA50 | Ограничение размещения ордеров по уровню EMA 50: для длинных позиций — цена выше EMA 50, для коротких — ниже EMA 50. |
| limitEMA100 | Ограничение размещения ордеров по уровню EMA 100: для длинных позиций — цена выше EMA 100, для коротких — ниже EMA 100. |
| limitEMA200 | Ограничение размещения ордеров по уровню EMA 200: для длинных позиций — цена выше EMA 200, для коротких — ниже EMA 200. |
| GridMaxOpen | Максимальное количество одновременно открытых позиций. В текущей версии данная настройка не реализована. |
| UseMACD | Включает использование индикатора MACD для фильтрации направления сделок. При пересечении линий MACD отменяются все отложенные ордера. |
| 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 и перейдите к оплате.