Average
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «average_5363996961055735987.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Average — торговый советник для платформы MetaTrader 4, обрабатывающий рыночные и торговые события. Он анализирует открытые ордера по текущему торговому инструменту, группируя их по направлению и магическому номеру, и на основе собранных данных рассчитывает усреднённый уровень цены.
Советник поддерживает три режима работы: обработка всех ордеров одновременно, только покупок или только продаж. Дополнительный параметр позволяет задать смещение расчётного уровня в пунктах. С помощью магического номера можно фильтровать ордера, которыми советник управляет.
Эксперт пересчитывает усреднённый уровень и корректирует уровни take profit и stop loss открытых позиций при каждом тике. Текущее расчётное значение отображается в комментарии на графике.
Настройки программы
| Настройка | Описание |
|---|---|
| iTypeAverage | Тип усреднения — Определяет режим обработки ордеров: All — все ордера, OnlyBuy — только покупка, OnlySell — только продажа. |
| iProfiPlus | Смещение в пунктах — Задаёт смещение расчётного уровня в пунктах от средневзвешенного значения открытых ордеров. |
| iMagicNumber | Магический номер — Фильтр для выбора ордеров, которыми управляет советник. Если значение равно -1, советник обрабатывает все ордера на символе. |
Поиск по коду файла
#property version "1.00"
#property strict
enum ENUM_AVERAGE_TYPE
{
All = 0,
OnlyBuy = 1,
OnlySell = 2
};
input ENUM_AVERAGE_TYPE iTypeAverage = All;
input int iProfiPlus = 600;
input int iMagicNumber = -1;
int OnInit()
{
// код доступен только после оплаты
}
void OnTick()
{
// код доступен только после оплаты
}
int total = OrdersTotal();
double BuySummPrice = 0, BuySummLots = 0;
double SelSummPrice = 0, SelSummLots = 0;
double Average = 0;
for(int i = 0; i < total; i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderSymbol() == _Symbol)
if(OrderMagicNumber() == iMagicNumber || iMagicNumber == -1)
{
if(OrderType() == OP_BUY)
{
BuySummPrice += OrderOpenPrice() * OrderLots();
BuySummLots += OrderLots();
}
if(OrderType() == OP_SELL)
{
SelSummPrice += OrderOpenPrice() * OrderLots();
SelSummLots += OrderLots();
}
}
if((BuySummLots - SelSummLots) != 0)
{
if(iTypeAverage == All)
{
if(BuySummLots > SelSummLots)
Average = (BuySummPrice - SelSummPrice) / (BuySummLots - SelSummLots) + iProfiPlus * _Point;
if(BuySummLots < SelSummLots)
Average = (BuySummPrice - SelSummPrice) / (BuySummLots - SelSummLots) - iProfiPlus * _Point;
}
if(iTypeAverage == OnlyBuy)
Average = BuySummPrice / BuySummLots + iProfiPlus * _Point;
if(iTypeAverage == OnlySell)
Average = SelSummPrice / SelSummLots - iProfiPlus * _Point;
}
for(int i = 0; i < total; i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderSymbol() == _Symbol)
if(OrderMagicNumber() == iMagicNumber || iMagicNumber == -1)
{
if(OrderType() == OP_BUY)
{
if(iTypeAverage == OnlyBuy)
if(Bid < Average)
if(OrderTakeProfit() != Average)
Показано первые 50% кода (символов: 2392)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.