VR Smart Grid Lite
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «vr smart grid lite.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
VR Smart Grid Lite — это торговый советник для MetaTrader 5, предназначенный для автоматического управления сеткой позиций на одном инструменте. Советник анализирует текущие открытые позиции, отслеживает их цены и объёмы, а также использует данные ценовых свечей и текущих котировок для принятия решений об открытии новых сделок.
В ходе работы советник модифицирует существующие позиции: устанавливает или корректирует уровни Take Profit и убирает ненужные ордера. Лот новых позиций рассчитывается на основе уже открытых сделок с ограничением по максимальному объёму. Перед исполнением каждой торговой операции проверяется допустимость объёма в соответствии с ограничениями брокера.
Советник работает в рамках одного символа и использует магический номер для идентификации управляемых позиций. Торговые операции выполняются через стандартный торговый класс MetaTrader 5 с заданным допуском по проскальзыванию.
Настройки программы
| Настройка | Описание |
|---|---|
| Take Profit (in pips) (iTakeProfit) | Take Profit — Расстояние в пунктах для установки уровня Take Profit на управляемых позициях. |
| Start lot (iStartLots) | Начальный лот — Начальный объём лота для первой позиции. |
| Maximal Lots (iMaximalLots) | Максимальный лот — Максимально допустимый объём лота для открытия и управления позициями. |
| Point order step (in pips) (iPointOrderStep) | Шаг ордера — Шаг в пунктах, определяющий минимальное расстояние для открытия новых позиций. |
| Minimal profit for close grid (in pips) (iMinimalProfit) | Минимальная прибыль — Минимальный уровень прибыли, используемый при расчёте условий модификации позиций. |
| Magic Number (in number) (iMagicNumber) | Magic Number — Уникальный идентификатор (Magic Number) для отбора управляемых позиций на символе. |
| Slippage (in pips) (iSlippage) | Проскальзывание — Допустимое проскальзывание (в пунктах) при исполнении торговых операций. |
Поиск по коду файла
#property version "19.050"
#property description " "
#include <Trade\PositionInfo.mqh> CPositionInfo m_position;
#include <Trade\Trade.mqh> CTrade trade;
input int iTakeProfit = 300; // Take Profit (in pips)
input double iStartLots = 0.01; // Start lot
input double iMaximalLots = 2.56; // Maximal Lots
input int iPointOrderStep = 390; // Point order step (in pips)
input int iMinimalProfit = 70; // Minimal profit for close grid (in pips)
input int iMagicNumber = 227; // Magic Number (in number)
input int iSlippage = 30; // Slippage (in pips)
int OnInit()
{
// код доступен только после оплаты
}
void OnTick()
{
// код доступен только после оплаты
}
double
BuyPriceMax=0,BuyPriceMin=0,BuyPriceMaxLot=0,BuyPriceMinLot=0,
SelPriceMin=0,SelPriceMax=0,SelPriceMinLot=0,SelPriceMaxLot=0;
ulong
BuyPriceMaxTic=0,BuyPriceMinTic=0,SelPriceMaxTic=0,SelPriceMinTic=0;
double
op=0,lt=0,tp=0;
ulong tk=0;
int b=0,s=0;
int total=PositionsTotal();
for(int k=total-1;k>=0;k--)
if(m_position.SelectByIndex(k))
if(m_position.Symbol()==Symbol())
if(m_position.Magic()==iMagicNumber)
if(m_position.PositionType()==POSITION_TYPE_BUY || m_position.PositionType()==POSITION_TYPE_SELL)
{
op=NormalizeDouble(m_position.PriceOpen(),Digits());
lt=NormalizeDouble(m_position.Volume(),2);
tk=m_position.Ticket();
if(m_position.PositionType()==POSITION_TYPE_BUY)
{
b++;
if(op>BuyPriceMax || BuyPriceMax==0)
{
BuyPriceMax = op;
BuyPriceMaxLot = lt;
BuyPriceMaxTic = tk;
}
if(op<BuyPriceMin || BuyPriceMin==0)
{
BuyPriceMin = op;
BuyPriceMinLot = lt;
BuyPriceMinTic = tk;
}
}
if(m_position.PositionType()==POSITION_TYPE_SELL)
{
s++;
if(op>SelPriceMax || SelPriceMax==0)
{
SelPriceMax = op;
SelPriceMaxLot = lt;
SelPriceMaxTic = tk;
}
if(op<SelPriceMin || SelPriceMin==0)
{
SelPriceMin = op;
SelPriceMinLot = lt;
SelPriceMinTic = tk;
}
}
}
double AwerageBuyPrice=0,AwerageSelPrice=0;
if(b>=2) AwerageBuyPrice=NormalizeDouble((BuyPriceMax*BuyPriceMaxLot+BuyPriceMin*BuyPriceMinLot)/(BuyPriceMaxLot+BuyPriceMinLot)+iMinimalProfit*Point(),Digits());
if(s>=2) AwerageSelPrice=NormalizeDouble((SelPriceMax*SelPriceMaxLot+SelPriceMin*SelPriceMinLot)/(SelPriceMaxLot+SelPriceMinLot)-iMinimalProfit*Point(),Digits());
double BuyLot=0,SelLot=0;
if(BuyPriceMinLot==0) BuyLot=iStartLots; else BuyLot=BuyPriceMinLot*2;
if(SelPriceMaxLot==0) SelLot=iStartLots; else SelLot=SelPriceMaxLot*2;
if(BuyLot>iMaximalLots) BuyLot=iMaximalLots;
if(SelLot>iMaximaПоказано первые 50% кода (символов: 4973)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.