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

forex-risk-calculator.mq4

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Индикатор для MetaTrader 4, отображающий текущий риск открытых позиций на графике в виде текстовых комментариев. Рассчитывает суммарный риск по счёту и по текущему символу, сравнивая с заданными пользователем лимитами. При превышении допустимого риска меняет цвет отображения на предупреждающий. Поддерживает расчёт для стандартных пар, а также для металлов (золото и серебро) с учётом их особенностей расчёта прибыли.

Настройки программы

НастройкаОписание
max_risk_per_symbol Максимальный риск на символ — Текстовый параметр, задающий допустимый риск на текущем символе в долларах или процентах от баланса.
add_profitable_positions Учитывать прибыльные позиции — Определяет, включать ли прибыльные открытые позиции без стоп-лосса в расчёт суммарного риска.
calc_details Подробный расчёт — Включает отображение дополнительной информации о параметрах расчёта риска для каждой позиции.
alert_color Цвет предупреждения — Цвет текста на графике, используемый при превышении допустимого уровня риска.
comment_color Цвет комментариев — Цвет текста на графике, используемый при нормальном уровне риска.
Получить полный код

Поиск по коду файла

/*
   Generated by EX4-TO-MQ4 decompiler V4.0.224.1 []
   Website: 
   E-mail : p******m*@gmail.com
*/

#property indicator_chart_window

extern string max_risk_per_symbol = "200";
extern string max_risk_per_account = "5%";
extern bool add_profitable_positions = TRUE;
extern bool calc_details = FALSE;
extern color alert_color = Red;
extern color comment_color = Yellow;
double gda_unused_108[];
double gd_112;
double gd_120;
double gd_128 = 0.0;
double gd_unused_136 = 0.0;
double gd_144 = 0.0;
double g_tickvalue_152;
double g_ticksize_160;
double g_lotsize_168;
double g_point_176;
int g_ord_total_184;
int g_pos_188;
bool g_profitcalcmode_192;
double gd_204;
color g_color_212;
string gsa_216[100];
int gi_220 = 0;
int g_count_224 = 0;
string gs_228 = "Risk Calculator v4, 2010 © ForexEgyetem\n";
string gs_236 = "";
string gs_unused_244 = "Money Manager";

void clearComments() {
   for (int l_index_0 = 0; l_index_0 < gi_220; l_index_0++) {
      gsa_216[l_index_0] = "";
      ObjectDelete("myComment" + l_index_0);
   }
   gi_220 = 1;
}

void Comments(string as_0 = "") {
   gsa_216[gi_220] = as_0;
   gi_220++;
}

void printComments() {
   string ls_0 = "";
   gsa_216[0] = gs_228;
   Comments(gs_236);
   for (int l_index_8 = 0; l_index_8 < gi_220; l_index_8++) {
      ls_0 = ls_0 + gsa_216[l_index_8];
      if (ObjectType("myComment" + l_index_8) != 23) ObjectDelete("myComment" + l_index_8);
      if (ObjectFind("myComment" + l_index_8) == -1) ObjectCreate("myComment" + l_index_8, OBJ_LABEL, 0, Time[5], Close[5]);
      ObjectSetText("myComment" + l_index_8, gsa_216[l_index_8]);
      ObjectSet("myComment" + l_index_8, OBJPROP_CORNER, 0);
      ObjectSet("myComment" + l_index_8, OBJPROP_XDISTANCE, 20);
      ObjectSet("myComment" + l_index_8, OBJPROP_YDISTANCE, 20 * (l_index_8 + 1));
      ObjectSet("myComment" + l_index_8, OBJPROP_COLOR, g_color_212);
   }
   ObjectsRedraw();
   RefreshRates();
}

void getRisk() {
   int l_digits_32;
   double ld_0 = 0;
   double ld_8 = 0;
   double ld_unused_16 = 0;
   double ld_24 = 0;
   gd_204 = 0;
   g_count_224 = 0;
   g_ord_total_184 = OrdersTotal();
   if (g_ord_total_184 > 0) {
      for (g_pos_188 = 0; g_pos_188 < g_ord_total_184; g_pos_188++) {
         OrderSelect(g_pos_188, SELECT_BY_POS, MODE_TRADES);
         g_tickvalue_152 = MarketInfo(OrderSymbol(), MODE_TICKVALUE);
         g_ticksize_160 = MarketInfo(OrderSymbol(), MODE_TICKSIZE);
         g_point_176 = MarketInfo(OrderSymbol(), MODE_POINT);
         g_lotsize_168 = MarketInfo(OrderSymbol(), MODE_LOTSIZE);
         l_digits_32 = MarketInfo(OrderSymbol(), MODE_DIGITS);
         g_profitcalcmode_192 = MarketInfo(OrderSymbol(), MODE_PROFITCALCMODE);
         if (StringFind(Symbol(), "XAUUSD") != -1) {
            g_profitcalcmode_192 = TRUE;
            g_lotsize_168 = 100;
         }
         if (StringFind(Symbol(), "XAGUSD") != -1) {
            g_profitcalcmode_192 = TRUE;
            g_lotsize_168 = 5000;
         }
         if (g_profitcalcmode_192 == 0) {
            ld_24 = (OrderOpenPrice() - OrderStopLoss()) * OrderLots() / g

Показано первые 50% кода (символов: 4729)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
472,90₽ ≈ $5.78