EA_9_bar
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ea_9_bar_v1.01_multipaira.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой торгового советника для платформы MetaTrader 4, работающего с 26 валютными парами. Советник использует таймер с задаваемой частотой обновления и анализирует три последовательных часовых бара на таймфрейме H1 в заданный час (по умолчанию 9:00, время открытия Франкфурта). Если большинство баров направлены вверх, открывается позиция BUY; если вниз — позиция SELL.
После открытия основной позиции советник выставляет отложенный контравый ордер с увеличенным объёмом (контрамультипликатор). Внутренняя функция мониторинга проверяет отложенные ордера и удаляет их, если родительская сделка уже закрыта. Также присутствует функция корректировки уровней Stop Loss и Take Profit на контравых позициях.
Советник использует собственную обёртку для отправки ордеров с повторными попытками при временных ошибках. Обработка событий реализована через OnTimer, OnTick и OnChartEvent, а торговые операции выполняются через стандартные API MetaTrader 4.
Настройки программы
| Настройка | Описание |
|---|---|
| Update frequency of ea in seconds (updateFrequency) | Частота обновления — Частота обновления советника в секундах |
| Lot size (lotSize) | Размер лота — Размер лота для открытия позиций |
| Lot multiply for contra trade (contraMultiplier) | Множитель контравы — Множитель объёма для контравого отложенного ордера |
| Magic number for trades of this ea (magicNumber) | Магический номер — Магический номер для идентификации сделок данного советника |
| Allowed slippage (_slippage) | Допустимое проскальзывание — Допустимое проскальзывание в пунктах |
| Take profit value in pips (takeProfit) | Тейк-профит — Значение тейк-профита в пунктах |
| Stop Loss value in pips (slopLoss) | Стоп-лосс — Значение стоп-лосса в пунктах |
| Fill in Frankfurt open time for your broker (compareHour) | Час сравнения — Час открытия (например, время открытия Франкфурта) для проверки условий открытия позиций |
| Pair prefix string (preFix) | Префикс пары — Префикс строки названия валютной пары |
| Pair postfix string (postFix) | Суффикс пары — Суффикс строки названия валютной пары |
Поиск по коду файла
#property version "1.01"
#property strict
sinput int updateFrequency = 2; // Update frequency of ea in seconds
sinput double lotSize = 0.1; // Lot size
sinput int contraMultiplier = 2; // Lot multiply for contra trade
sinput int magicNumber = 12346; // Magic number for trades of this ea
sinput int _slippage = 5; // Allowed slippage
sinput int takeProfit = 10; // Take profit value in pips
sinput int slopLoss = 10; // Stop Loss value in pips
sinput int compareHour = 9; // Fill in Frankfurt open time for your broker
sinput string preFix = ""; // Pair prefix string
sinput string postFix = ""; // Pair postfix string
string DefaultPairss[] = { "AUDCAD","AUDCHF","AUDJPY","AUDNZD","AUDUSD","CADCHF",
"CADJPY","CHFJPY","EURAUD","EURCAD","EURJPY","EURNZD","EURUSD",
"GBPAUD","GBPCAD","GBPCHF","GBPJPY","GBPNZD","GBPUSD","NZDCAD","NZDCHF",
"NZDJPY","NZDUSD","USDCAD","USDCHF","USDJPY"
};
string DefaultPairs[];
static datetime newBar;
datetime check_9;
struct pair_Data
{
string pairName;
double MyPoint;
double MyDigits;
double MyMultiplier;
double pBid;
double pAsk;
};
pair_Data pairData[];
int OnInit()
{
// код доступен только после оплаты
}
void OnDeinit(const int reason)
{
EventKillTimer();
}
void OnTick()
{
// код доступен только после оплаты
}
void OnTimer()
{
if (newBar != iTime(Symbol(), PERIOD_H1,0))
{
newBar = iTime(Symbol(), PERIOD_H1,0);
Alert("hier");
int hour = Hour();
if (hour == compareHour)
{
for (int u = 0; u < ArraySize(DefaultPairs); u++)
{
int upCounter = 0;
int downCounter = 0;
if (iClose(DefaultPairs[u], PERIOD_H1,3) > iOpen(DefaultPairs[u], PERIOD_H1,3))
{
upCounter++;
}
if (iClose(DefaultPairs[u], PERIOD_H1,3) < iOpen(DefaultPairs[u], PERIOD_H1,3))
{
downCounter++;
}
if (iClose(DefaultPairs[u], PERIOD_H1,2) > iOpen(DefaultPairs[u], PERIOD_H1,2))
{
upCounter++;
}
if (iClose(DefaultPairs[u], PERIOD_H1,2) < iOpen(DefaultPairs[u], PERIOD_H1,2))
{
downCounter++;
}
if (iClose(DefaultPairs[u], PERIOD_H1,1) > iOpen(DefaultPairs[u], PERIOD_H1,1))
{
upCounter++;
}
if (iClose(DefaultPairs[u], PERIOD_H1,1) < iOpen(DefaultPairs[u], PERIOD_H1,1))
{
downCounter++;
}
if ((upCounter + downCounter) == 3)
{
if (upCounter > 1)
{
int ticket_Buy = OrderSendReliable(DefaultPairs[u], OP_BUY, lotSize,
MarketInfo(DefaultPairs[u], MODE_BID),_slippage, 0.0, 0.0, magicNumber, "BUY: " , 0, clrNONE);
if (ticket_Buy > 0)
{
Sleep(200);
OrderSelect(ticket_Buy, SELECT_BY_TICKET);
double TP = OrderOpenPrice() + takeProfit / pairData[u].MyMultiplier;
double SL = OrderOpenPrice() - takeProfit / pairData[u].MyMultiplier;
bool _ok = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(SL, (int)MarketInfo(DefaultPairs[u],
MODE_DIGITS)), NormalizeDouble(TP, (int)MarketInfo(DefaultPairs[u],
MODE_DIGITS)), 0, clrNONE);
if (_ok)
{
int ticket_SellStop = OrderSendReliable(DefaultPairs[u], OP_SELLSTOP, lotSize * contraMultiplier ,
NormalizeDouble(SL, (int)MarketInfo(DefaultPairs[u],MODE_DIGITS)),_slippage,
0.0, 0.0, magicNumber+1, IntegerToString(ticket_Buy), 0, clrNONE);
}
}
}
else
{
int ticket_Sell = OrderSendReliable(DefaultPairs[u], OP_SELL, lotSize,
MarketInfo(DefaultPairs[u], MODE_BID),_slippage, 0.0, 0.0, magicNumber, "SELL: " , 0, clrNONE);
if (ticket_Sell > 0)
{
Sleep(200);
OrderSelect(ticket_Sell, SELECT_BY_TICKET);
double TP = OrderOpenPrice() - takeProfit / pairData[u].MyMultiplier;
double SL = OrderOpenPrice() + takeProfit / pairData[u].MyMultiplier;
bool _ok = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(SL, (int)MarketInfo(DefaultPairs[u],
MODE_DIGITS)), NormalizeDouble(TP, (int)MarketInfo(DefaultPairs[u],
MODE_DIGITS)), 0, clrNONE);
if (_ok)
Показано первые 50% кода (символов: 7498)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.