triangulararbitrage.mq4
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «triangulararbitrage.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой торговый советник для платформы MetaTrader 4, реализующий стратегию треугольного арбитража между тремя валютными парами. Советник отслеживает соотношение цен между выбранными парами и размещает соответствующие рыночные и отложенные ордера при достижении заданных условий.
Советник рассчитывает опорные ценовые уровни на основе данных таймфрейма H4 для каждой из трёх пар. В зависимости от текущей цены и рассчитанных уровней, программа открывает позиции через стандартные торговые функции MetaTrader 4. Также на графике отображается информация о состоянии счёта, количестве ордеров и текущей прибыли.
Встроена система управления прибылью: советник отслеживает совокупный результат по открытым позициям и при достижении целевой прибыли или превышении допустимого убытка закрывает все ордера. Параметры работы и торговые пары настраиваются пользователем через входные параметры советника.
Настройки программы
| Настройка | Описание |
|---|---|
| MicroBroker | Переключатель режима микроброкера, определяющий точность округления размера лота. |
| DollarTargetAmount | Целевая величина прибыли в процентах от баланса счёта, используемая для определения порога закрытия позиций. |
| gi_92 | Переключатель, определяющий привязку целевой прибыли к дневному лимиту. |
| TradeTime | Час торговли, в который советник активно проверяет условия и размещает ордера. |
| LotSize | Размер лота для каждой торговой операции. |
| pair1 | Название первой торговой валютной пары. |
| pair2 | Название второй торговой валютной пары. |
| pair3 | Название третьей торговой валютной пары. |
| comment | Текстовый комментарий, присваиваемый каждому размещённому ордеру. |
| info | Информационный текстовый параметр для пользовательских заметок. |
| info2 | Информационный текстовый параметр для пользовательских заметок. |
| gi_136 | Скрытый числовой параметр, используемый для настройки шага ценовых уровней. |
| gi_140 | Скрытый числовой параметр, используемый для настройки точности расчёта ценовых уровней. |
Поиск по коду файла
#include <WinUser32.mqh>
extern bool MicroBroker = TRUE;
extern double DollarTargetAmount = 50.0; //Target TP $$
extern bool gi_92 = TRUE; //Berhubungan target $$ per hari
extern double TradeTime = 1.0;
extern double LotSize = 0.2;
extern string pair1 = "GBPUSD";
extern string pair2 = "EURGBP";
extern string pair3 = "EURUSD";
extern string comment = " ";
input string info = "============ mungkin ini berhubungan dengan rusnus di 3 pair itu mas =====";
input string info2 = "because each pair has its own settings, sir, 2 parameters below, sir, sorry";
extern int gi_136 = 20; //Hidden 1
extern int gi_140 = 40; //Hidden 2
double gd_144;
double pair1_ord_open_price;
double pair2_ord_open_price;
double pair3_ord_open_price;
double Profit_locked_level;
double Fontsize = 7.0;
string per_str = "";
string per_strL = "";
string per_strR = "";
int init() {
// код доступен только после оплаты
}
int deinit() {
Comment("Scanning for trade data......................... ");
ObjectsDeleteAll(0, OBJ_LABEL);
return (0);
}
int start() {
// код доступен только после оплаты
}
double DI;
double Re;
double l_ihigh_16;
double l_ilow_24;
double ld_32;
double l_ilow_40;
double l_ihigh_48;
int ord_total;
RefreshRates();
if (DayOfWeek() == 0) return (0);
ObjectCreate("ObjLabel1", OBJ_LABEL, 0, 0, 0);
ObjectSetText("ObjLabel1", " 4 ", 7, "Arial", Blue);
ObjectSet("ObjLabel1", OBJPROP_CORNER, 3);
ObjectSet("ObjLabel1", OBJPROP_XDISTANCE, 20);
ObjectSet("ObjLabel1", OBJPROP_YDISTANCE, 20);
ObjectCreate("ObjLabel2", OBJ_LABEL, 0, 0, 0);
ObjectSetText("ObjLabel2", " X ", 11, "Arial Bold", White);
ObjectSet("ObjLabel2", OBJPROP_CORNER, 3);
ObjectSet("ObjLabel2", OBJPROP_XDISTANCE, 10);
ObjectSet("ObjLabel2", OBJPROP_YDISTANCE, 20);
ObjectCreate("ObjLabel3", OBJ_LABEL, 0, 0, 0);
ObjectSetText("ObjLabel3", " F", 8, "Arial", Red);
ObjectSet("ObjLabel3", OBJPROP_CORNER, 3);
ObjectSet("ObjLabel3", OBJPROP_XDISTANCE, 8);
ObjectSet("ObjLabel3", OBJPROP_YDISTANCE, 20);
ObjectCreate("ObjLabel4", OBJ_LABEL, 0, 0, 0);
ObjectSetText("ObjLabel4", "?", 8, "Wingdings", LimeGreen);
ObjectSet("ObjLabel4", OBJPROP_CORNER, 3);
ObjectSet("ObjLabel4", OBJPROP_XDISTANCE, 14);
ObjectSet("ObjLabel4", OBJPROP_YDISTANCE, 13);
ObjectCreate("ObjLabel5", OBJ_LABEL, 0, 0, 0);
ObjectSetText("ObjLabel5", "?", 8, "Wingdings", Red);
ObjectSet("ObjLabel5", OBJPROP_CORNER, 3);
ObjectSet("ObjLabel5", OBJPROP_XDISTANCE, 14);
ObjectSet("ObjLabel5", OBJPROP_YDISTANCE, 30);
ObjectCreate("ObjLabel6", OBJ_LABEL, 0, 0, 0);
ObjectSetText("ObjLabel6", "WWW.4XFX.BIZ", 7, "Arial", Silver);
ObjectSet("ObjLabel6", OBJPROP_CORNER, 3);
ObjectSet("ObjLabel6", OBJPROP_XDISTANCE, 5);
ObjectSet("ObjLabel6", OBJPROP_YDISTANCE, 3);
double ld_72 = 100 - 100.0 * (AccountEquity() / AccountBalance());
Comment(" EA ACTIVE ", " Account name : ", AccountName(), " Account Number : ", AccountNumber(), " Account Balance $ ", MathRound(AccountBalance()),
"\n ", OrdersTotal(), " Number of Orders Placed ", " Current Profit $ ", MathRound(AccountProfit()), " Account Free Margin $ ", MathRound(AccountFreeMargin()), " Account Equity $ ", MathRound(AccountEquity()),
"\n ", "Date & Time : ", TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS), " ", AccountServer());
if (MicroBroker == TRUE) DI = 2;
else DI = 1;
double l_lots_80 = LotSize;
double l_lots_88 = LotSize;
if (MarketInfo(pair2, MODE_LOTSIZE) == 1000.0) Re = 0.1;
if (MarketInfo(pair2, MODE_LOTSIZE) == 10000.0) Re = 1;
if (MarketInfo(pair2, MODE_LOTSIZE) == 100000.0) Re = 10;
string l_symbol_96 = pair2;
string l_symbol_104 = pair3;
string l_symbol_112 = pair1;
string ls_120 = MarketInfo(pair2, MODE_BID);
string ls_128 = MarketInfo(pair3, MODE_BID);
string ls_136 = MarketInfo(pair1, MODE_BID);
double l_ihigh_144 = iHigh(pair1, PERIOD_H4, 1);
double l_ilow_152 = iLow(pair1, PERIOD_H4, 1);
double ld_160 = (l_ihigh_144 + l_ilow_152) / 2.0;
double l_ilow_168 = iLow(pair1, PERIOD_H4, 1);
double l_ihigh_176 = iHigh(pair1, PERIOD_H4, 1);
double ld_184 = (l_ilow_168 + l_ihigh_176) / 2.0;
double l_point_192 = MarketInfo(pair1, MODE_POINT);
double l_digits_200 = MarketInfo(pair1, MODE_DIGITS);
double ld_208 = (l_ihigh_144 - l_ilow_152) / (l_ilow_168 - l_ihigh_176);
double ld_216 = (l_ilow_168 - l_ihigh_176) / gi_136;
ld_216 = MathRound((l_ilow_168 - l_ihigh_176) / gi_136 / (l_point_192 * gi_140)) * (l_point_192 * gi_140);
double ld_224 = MathRound(ld_184 / (l_point_192 * gi_140)) * (l_point_192 * gi_140);
ld_224 = ld_224 + ld_216 / 2.0 + ld_216 * (gi_136 / 2 - 1) - 0.0 * ld_216;
double ld_232 = ld_160 + (ld_224 - ld_184) * ld_208;
if (DayOfWeek() != 0) {
l_ihigh_16 = iHigh(pair2, PERIOD_H4, 1);
l_ilow_24 = iLow(pair2, PERIOD_H4, 1);
ld_32 = (l_ihigh_16 + l_ilow_24) / 2.0;
l_ilow_40 = iLow(pair2, PERIOD_H4, 1);
l_ihigh_48 = iHigh(pair2, PERIOD_H4, 1);
}
if (DayOfWeek() == 0) {
l_ihigh_16 = iHigh(pair2, PERIOD_H4, 2);
l_ilow_24 = iLow(pair2, PERIOD_H4, 2);
ld_32 = (l_ihigh_16 + l_ilow_24) / 2.0;
l_ilow_40 = iLow(pair2, PERIOD_H4, 2);
l_ihigh_48 = iHigh(pair2, PERIOD_H4, 2);
}
double ld_240 = (l_ilow_40 + l_ihigh_48) / 2.0;
double l_point_248 = MarketInfo(pair2, MODE_POINT);
double l_digits_256 = MarketInfo(pair2, MODE_DIGITS);
double ld_264 = (l_ihigh_16 - l_ilow_24) / (l_ilow_40 - l_ihigh_48);
double ld_272 = (l_ilow_40 - l_ihigh_48) / gi_136;
ld_272 = MathRound((l_ilow_40 - l_ihigh_48) / gi_136 / (l_point_248 * gi_140)) * (l_point_248 * gi_140);
double ld_280 = MathRound(ld_240 / (l_point_248 * gi_140)) * (l_point_248 * gi_140);
ld_280 = ld_280 + ld_272 / 2.0 + ld_272 * (gi_136 / 2 - 1) - 0.0 * ld_272;
Profit_locked_level = ld_32 + (ld_280 - ld_240) * ld_264;
double ld_296 = Profit_locked_level * LotSize;
double l_ihigh_304 = iHigh(pair3, PERIOD_H4, 1);
double l_ilow_312 = iLow(pair3, PERIOD_H4, 1);
double ld_320 = (l_ihigh_304 + l_ilow_312) / 2.0;
double l_ilow_328 = iLow(pair3, PERIOD_H4, 1);
double l_ihigh_336 = iHigh(pair3, PERIOD_H4, 1);
double ld_344 = (l_ilow_328 + l_ihigh_336) / 2.0;
double l_point_352 = MarketInfo(pair3, MODE_POINT);
double l_digits_360 = MarketInfo(pair3, MODE_DIGITS);
double ld_368 = (l_ihigh_304 - l_ilow_312) / (l_ilow_328 - l_ihigh_336);
double ld_376 = (l_ilow_328 - l_ihigh_336) / gi_136;
ld_376 = MathRound((l_ilow_328 - l_ihigh_336) / gi_136 / (l_point_352 * gi_140)) * (l_point_352 * gi_140);
double ld_384 = MathRound(ld_344 / (l_point_352 * gi_140)) * (l_point_352 * gi_140);
ld_384 = ld_384 + ld_376 / 2.0 + ld_376 * (gi_136 / 2 - 1) - 0.0 * ld_376;
double ld_392 = ld_320 + (ld_384 - ld_344) * ld_368;
double Price_pair2 = MarketInfo(pair2, MODE_BID);
per_strL = "?";
per_strR = "?";
ObjectCreate("P1", OBJ_LABEL, 0, 0, 0);
ObjectSetText("P1", StringSubstr(l_symbol_96, 0, 8), Fontsize, "Arial Bold", Red);
ObjectSet("P1", OBJPROP_CORNER, 0);
ObjectSet("P1", OBJPROP_XDISTANCE, 30);
ObjectSet("P1", OBJPROP_YDISTANCE, 30);
ObjectCreate("P1a", OBJ_LABEL, 0, 0, 0);
ObjectSetText("P1a", StringSubstr(ls_120, 0, 6), Fontsize, "Arial Bold", Lime);
ObjectSet("P1a", OBJPROP_CORNER, 0);
ObjectSet("P1a", OBJPROP_XDISTANCE, 40);
ObjectSet("P1a", OBJPROP_YDISTANCE, 40);
ObjectCreate("t1", OBJ_LABEL, 0, 0, 0);
ObjectSetText("t1", per_strL, Fontsize, "Wingdings", White);
ObjectSet("t1", OBJPROP_CORNER, 0);
ObjectSet("t1", OBJPROP_XDISTANCE, 50);
ObjectSet("t1", OBJPROP_YDISTANCE, 50);
ObjectCreate("t2", OBJ_LABEL, 0, 0, 0);
ObjectSetText("t2", per_strL, Fontsize, "Wingdings", WhiПоказано первые 50% кода (символов: 12794)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.