← К каталогу
Исходный код · ID 691

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 и перейдите к оплате.

Стоимость полного кода
1 279,40₽ ≈ $15.64