amingrid.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «amingrid.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный советник работает на платформе MetaTrader 4 и реализует сеточную торговую стратегию с открытием позиций BUY и SELL. На каждом тике он проверяет рыночные условия, управляет открытыми ордерами и отслеживает маржинальный баланс.
Советник открывает новые ордера, когда цена отдаляется от последней точки входа на заданное расстояние в пунктах. Объём лота для каждого последующего ордера того же типа увеличивается по множителю. При достижении максимального уровня количество ордеров ограничивается параметром maxlevel.
Закрытие позиций происходит при достижении заданного уровня прибыли по совокупности или по отдельным типам ордеров. Доступно автоматическое закрытие ордеров по истечении заданного числа дней. Перед открытием новых позиций проверяется достаточность свободного маржинального баланса.
Настройки программы
| Настройка | Описание |
|---|---|
| Magic | Магический номер — Магический номер ордера, используемый для идентификации ордеров, открытых данным советником. |
| Lot | Размер лота — Начальный размер лота для открытия ордера. Если LotFor1000 не равен нулю, лот рассчитывается на основе свободного маржинального баланса. |
| LotFor1000 | Лот на 1000 маржи — Коэффициент для расчёта лота на основе свободного маржинального баланса (баланс / 1000 * LotFor1000). При значении 0 используется фиксированный лот. |
| bdiff | Шаг открытия BUY — Расстояние в пунктах от последней цены открытия BUY-ордера, при превышении которого открывается следующая BUY-позиция. |
| sdiff | Шаг открытия SELL — Расстояние в пунктах от последней цены открытия SELL-ордера, при превышении которого открывается следующая SELL-позиция. |
| maxopenorders | Максимальное количество открытых ордеров — Максимальное общее количество одновременно открытых ордеров одного типа (BUY или SELL), при превышении которого новые ордера не открываются. |
| maxlevel | Максимальный уровень ордеров — Максимальное количество ордеров одного типа. При достижении этого уровня размер лота ограничивается произведением начального лота на maxlevel. |
| dollar | Прибыль для закрытия — Пороговая величина прибыли в долларах. При достижении совокупной прибыли BUY и SELL ордеров, превышающей это значение, все позиции закрываются. |
| lossdollar | Убыток для закрытия — Пороговая величина убытка в долларах для потенциального закрытия позиций. В текущей версии кода параметр объявлен, но не используется. |
| Cmt | Комментарий ордера — Текстовый комментарий, присваиваемый каждому открываемому ордеру. |
| CloseOnExpiration | Закрытие по истечении срока — Переключатель автоматического закрытия ордеров по истечении заданного срока. При значении true ордера, открытые более expirationDays дней, закрываются или удаляются. |
| expirationDays | Срок жизни ордера (дни) — Количество дней после открытия ордера, по истечении которых он автоматически закрывается (при включённом CloseOnExpiration). |
| openbuy | Открытие BUY — Переключатель, определяющий возможность открытия BUY-ордеров. При значении false открытие покупок запрещено. |
| opensell | Открытие SELL — Переключатель, определяющий возможность открытия SELL-ордеров. При значении false открытие продаж запрещено. |
| multiplier | Множитель лота — Множитель, на который умножается лот при каждом последующем открытии ордера того же типа. |
Поиск по коду файла
#property version "1.00"
#property strict
extern int Magic=123456;
extern double Lot =0.01;
extern double LotFor1000 = 0;
extern int bdiff = 30;
extern int sdiff = 30;
extern int maxopenorders = 1000;
extern int maxlevel = 1000;
extern int dollar = 10;
extern int lossdollar = 30;
extern string Cmt = "grid";
extern bool CloseOnExpiration = true;
extern int expirationDays = 7;
extern bool openbuy=true;
extern bool opensell = true;
extern double multiplier = 2.0;
double MinLot, MaxLot, LotDigits, cA = 0; ;
int total;
double prec= 0.0;
double Lot()
{
if (LotFor1000 != 0) Lot = AccountFreeMargin() / 1000.0 * LotFor1000;
return(NormalizeDouble(MathMin(MathMax(MinLot, Lot), MaxLot), LotDigits));
}
int init(){
// код доступен только после оплаты
}
double lastsellprice =0.0;
double lastbuyprice =0.0;
int countbuy=0;
int countsell=0;
int Count(int type){
int counter =0;
for(int order = 0; order < OrdersTotal(); order++)
{
if(!OrderSelect(order,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType()==type)
counter++;
}
return counter;
}
double ordersprofit(int type){
double counter =0;
for(int order = 0; order < OrdersTotal(); order++)
{
if(!OrderSelect(order,SELECT_BY_POS,MODE_TRADES))
continue;
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType()==type){
counter+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
return counter;
}
void Closeorders(int type){
int counter =0;
for (int i = OrdersTotal(); i >= 0; i--) {
if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES))continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == type)
OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 5, CLR_NONE);
}
}
void OnTick(void)
{
// код доступен только после оплаты
}
int cnt,ticket,total;
double sl=0.0;
if(Bars<100)
{
Print("bars Показано первые 50% кода (символов: 3373)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.