PipsMiner SE
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «pips_miner_se.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
PipsMiner SE — торговый советник для MetaTrader 4, предназначенный для автоматической торговли на валютном рынке. Программа анализирует ценовые данные с использованием набора технических индикаторов и принимает решения об открытии и закрытии позиций.
Советник отслеживает рыночную ситуацию в рамках заданного временного окна и управляет ордерами, включая установку стоп-лосса и тейк-профита. При достижении заданных уровней позиция закрывается автоматически. Внешняя библиотека PipsMinerLib_SE.dll используется для дополнительной обработки сигналов.
На графике отображаются информационные метки с данными о состоянии соединения, спреде, статусе торговли и номере магического идентификатора ордеров. Советник работает в рамках одного торгового счёта и использует магическое число для идентификации своих позиций.
Настройки программы
| Настройка | Описание |
|---|---|
| VersionDesc | Описание версии — Описание версии и настроек торгового инструмента |
| Lots | Размер лота — Размер лота для открытия позиции |
| Magic_Number | Магический номер — Магический номер для идентификации ордеров советника |
| London_Time_Shift | Смещение лондонского времени — Смещение часового пояса Лондона для определения торгового окна |
Поиск по коду файла
#import "PipsMinerLib_SE.dll"
int TLV(double a0, double a1, double a2, double a3, double a4, double a5, string a6, int a7, int a8);
int TSV(double a0, double a1, double a2, double a3, double a4, double a5, string a6, int a7, int a8);
int PLV(double a0, double a1, double a2, double a3, double a4, double a5, double a6, string a7, int a8, int a9);
int PSV(double a0, double a1, double a2, double a3, double a4, double a5, double a6, string a7, int a8, int a9);
double LND_Stock(double a0, double a1, double a2, double a3, double a4, string a5, int a6, int a7);
#import
extern string VersionDesc = "PipsMiner SEv1.3 M5 EURUSD";
extern double Lots = 0.1;
extern int Magic_Number = 73337;
extern int London_Time_Shift = 0;
int gi_176 = 4;
int gi_188 = 3;
int gi_196 = 30;
int gi_200 = 210;
int gi_204 = 7;
int g_count_208 = 0;
double g_y_212 = 20.0;
bool gba_224[20];
int g_ticket_228 = 0;
int g_bars_232 = 0;
int g_ticket_236 = 0;
int gia_248[200][2];
int g_index_252 = 0;
int gi_256 = 0;
int gi_260 = 0;
double gd_268 = 0.0;
int g_shift_284 = 0;
int gi_288 = 1;
double gd_296 = 0.0;
string GetCurrentDate() {
int l_year_0 = 0;
int l_month_4 = 0;
int l_day_8 = 0;
int l_hour_12 = 0;
int l_minute_16 = 0;
int l_second_20 = 0;
string ls_24 = "";
string ls_32 = "";
string ls_40 = "";
string ls_48 = "";
string ls_56 = "";
string ls_ret_64 = "";
l_year_0 = TimeYear(TimeCurrent());
l_month_4 = TimeMonth(TimeCurrent());
l_day_8 = TimeDay(TimeCurrent());
l_hour_12 = TimeHour(TimeCurrent());
l_minute_16 = TimeMinute(TimeCurrent());
l_second_20 = TimeSeconds(TimeCurrent());
if (l_month_4 < 10) ls_24 = "0" + l_month_4;
else ls_24 = "" + l_month_4;
if (l_day_8 < 10) ls_32 = "0" + l_day_8;
else ls_32 = "" + l_day_8;
if (l_hour_12 < 10) ls_40 = "0" + l_hour_12;
else ls_40 = "" + l_hour_12;
if (l_minute_16 < 10) ls_48 = "0" + l_minute_16;
else ls_48 = "" + l_minute_16;
if (l_second_20 < 10) ls_56 = "0" + l_minute_16;
else ls_56 = "" + l_second_20;
ls_ret_64 = l_year_0 + "-" + ls_24 + "-" + ls_32 + " " + ls_40 + ":" + ls_48 + ":" + ls_56;
return (ls_ret_64);
}
int RmLabel(string a_name_0) {
int li_8 = 0;
li_8 = ObjectFind(a_name_0);
if (li_8 == -1) return (0);
li_8 = ObjectDelete(a_name_0);
if (li_8 == 0) return (-1);
g_count_208--;
g_y_212 -= 14.0;
if (g_count_208 < 0) g_count_208 = 0;
if (g_y_212 < 0.0) g_y_212 = 20;
return (1);
}
int AddLabel(string a_name_0, string as_8) {
if (ObjectCreate(a_name_0, OBJ_LABEL, 0, 0, 0) == FALSE) {
Print("[AddLabel]Object create ERROR");
return (0);
}
if (ObjectSet(a_name_0, OBJPROP_XDISTANCE, 20) == FALSE) {
Print("[AddLabel]Object set XDISTANCE ERROR");
return (0);
}
if (ObjectSet(a_name_0, OBJPROP_YDISTANCE, g_y_212) == FALSE) {
Print("[AddLabel]Object set YDISTANCE ERROR");
return (0);
}
if (ObjectSet(a_name_0, OBJPROP_FONTSIZE, 10) == FALSE) {
Print("[AddLabel] ObjectSet OBJPROP_FONTSIZE ERROR");
return (0);
}
if (SetLabelText(a_name_0, as_8) == 0) {
Print("[AddLabel]Object set text ERROR");
return (0);
}
g_count_208++;
g_y_212 += 14.0;
return (1);
}
int SetLabelText(string a_name_0, string a_text_8) {
if (ObjectSetText(a_name_0, a_text_8, 10, "Times New Roman", Yellow) == FALSE) return (0);
return (1);
}
void IPO() {
for (int l_index_0 = 0; l_index_0 < 200; l_index_0++) {
gia_248[l_index_0][0] = 0;
gia_248[l_index_0][1] = 0;
}
}
void SORD(int ai_0) {
if (g_index_252 < 200) {
gia_248[g_index_252][0] = ai_0;
gia_248[g_index_252][1] = 0;
} else {
g_index_252 = 0;
gia_248[g_index_252][0] = ai_0;
gia_248[g_index_252][1] = 0;
}
g_index_252++;
}
int UPO(int ai_0) {
int l_index_4 = 0;
bool li_8 = FALSE;
while (l_index_4 < 200) {
li_8 = gia_248[l_index_4][0];
if (li_8 == gi_256) {
gia_248[l_index_4][1] = ai_0;
return (0);
}
l_index_4++;
}
return (-1);
}
double R_PRCE(int ai_0) {
double l_price_4 = 0;
switch (ai_0) {
case 1:
l_price_4 = Ask;
break;
case 2:
l_price_4 = Bid;
}
l_price_4 = NormalizeDouble(l_price_4, Digits);
return (l_price_4);
}
double R_PRF(int ai_0) {
double ld_4 = 0;
switch (ai_0) {
case 1:
ld_4 = Bid + gi_196 * Point;
break;
case 2:
ld_4 = Ask - gi_196 * Point;
}
ld_4 = NormalizeDouble(ld_4, Digits);
return (ld_4);
}
double R_LSS(int ai_0) {
double ld_4 = 0;
switch (ai_0) {
case 1:
ld_4 = Bid - gi_200 * Point;
break;
case 2:
ld_4 = Ask + gi_200 * Point;
}
ld_4 = NormalizeDouble(ld_4, Digits);
return (0.0);
}
int OpenOrder(int ai_0, int ai_4, int ai_8, double a_lots_12) {
color l_color_64;
int li_unused_68;
string ls_20 = "";
bool li_28 = FALSE;
int l_cmd_32 = 0;
int l_error_36 = 0;
double l_price_40 = 0;
double l_price_48 = 0;
double l_price_56 = 0;
string ls_72 = "";
string l_symbol_80 = Symbol();
string l_comment_88 = "";
double l_stoplevel_96 = 0;
int li_unused_104 = MarketInfo(Symbol(), MODE_STOPLEVEL);
l_comment_88 = "PipsMiner SEv1.3 M5 EURUSD" + " MAGIC: " + Magic_Number;
li_28 = ai_0;
RefreshRates();
switch (li_28) {
case 1:
ls_20 = "BUY";
l_cmd_32 = 0;
l_price_40 = Ask;
l_price_48 = Ask + ai_4 * Point;
l_price_48 = NormalizeDouble(l_price_48, Digits);
l_price_56 = Ask - ai_8 * Point;
l_price_56 = NormalizeDouble(l_price_56, Digits);
l_color_64 = Green;
li_unused_68 = 16711680;
break;
case 2:
ls_20 = "SELL";
l_cmd_32 = 1;
l_price_40 = Bid;
l_price_48 = Bid - ai_4 * Point;
l_price_48 = NormalizeDouble(l_price_48, Digits);
l_price_56 = Bid + ai_8 * Point;
l_price_56 = NormalizeDouble(l_price_56, Digits);
l_color_64 = Red;
li_unused_68 = 65535;
break;
default:
Print("[OpenOrder][MakeTransaction] Unknow Transaction Type: " + ai_0);
return (-1);
}
if (ai_4 == 0) l_price_48 = 0;
if (ai_8 == 0) l_price_56 = 0;
l_price_40 = NormalizeDouble(l_price_40, Digits);
l_stoplevel_96 = MarketInfo(l_symbol_80, MODE_STOPLEVEL);
g_ticket_228 = OrderSend(l_symbol_80, l_cmd_32, a_lots_12, l_price_40, 3, l_price_56, l_price_48, l_comment_88, Magic_Number, 0, l_color_64);
if (g_ticket_228 == -1) {
l_error_36 = GetLastError();
switch (l_error_36) {
case 129/* INVALID_PRICE */:
RefreshRates();
Sleep(10000);
l_price_40 = R_PRCE(ai_0);
l_price_56 = R_LSS(ai_0);
l_price_48 = R_PRF(ai_0);
g_ticket_228 = OrderSend(l_symbol_80, l_cmd_32, a_lots_12, l_price_40, 3, l_price_56, l_price_48, l_comment_88, Magic_Number, 0, l_color_64);
l_error_36 = GetLastError();
break;
case 130/* INVALID_STOPS */:
g_ticket_228 = OrderSend(l_symbol_80, l_cmd_32, a_lots_12, l_price_40, 3, 0, 0, l_comment_88, Magic_Number, 0, l_color_64);
if (g_ticket_228 == -1) {
l_error_36 = GetLastError();
if (l_error_36 == 129/* INVALID_PRICE */) {
RefreshRates();
Sleep(10000);
l_price_40 = R_PRCE(ai_0);
l_price_48 = R_PRF(ai_0);
l_price_56 = R_LSS(ai_0);
g_ticket_228 = OrderSend(l_symbol_80, l_cmd_32, a_lots_12, l_price_40, 3, 0, 0, l_comment_88, Magic_Number, 0, l_color_64);
l_error_36 = GetLastError();
}
}
if (g_ticket_228 > 0)
if (OrderModify(g_ticket_228, l_price_40, l_price_56, l_price_48, 0, l_color_64) == FALSE) l_error_36 = GetLastError();
}
}
ls_72 = GetCurrentDate();
if (g_ticket_228 == -1) {
Print("Order " + ls_20 + " Error: " + l_error_36);
return (-1);
}
return (0);
}
int CloseOrder(int a_ticket_0) {
int li_unused_4 = 0;
int l_error_8 = 0;
int l_cmd_12 = 0;
bool l_ord_close_16 = FALSE;
if (a_ticket_0 > 0) {
if (OrderSelect(a_ticket_0, SELECT_BY_TICKET) == TRUE) {
l_cmd_12 = OrderType();
switch (l_cmd_12) {
case OP_BUY:
l_ord_close_16 = OrderClose(a_ticket_0, OrderLots(), Bid, 3, Yellow);
if (l_ord_close_16 == 0) {
l_error_8 = GetLastError();
if (l_error_8 == 129/* INVALID_PRICE */) {
RefreshRates();
Sleep(10000);
l_ord_close_16 = OrderClose(a_ticket_0, OrderLots(), Bid, 3, Yellow);
if (l_ord_close_16 == 0) return (-1);
}
}
case OP_SELL:
l_ord_close_16 = OrderClose(a_ticket_0, OrderLots(), Ask, 3, Blue);
if (l_ord_close_16 == 0) {
l_error_8 = GetLastError();
if (l_error_8 == 129/* INVALID_PRICE */) {
RefreshRates();
Sleep(10000);
l_ord_close_16 = OrderClose(a_ticket_0, OrderLots(), Ask, 3, Blue);
if (l_ord_close_16 == 0) return (-1);
}
}
}
}
}
return (0);
}
double CO_PL() {
int l_ord_total_0 = 0;
int l_cmd_4 = 0;
int l_magic_8 = 0;
int l_ticket_12 = 0;
double l_ord_takeprofit_16 = 0;
double l_ord_stoploss_24 = 0;
string l_symbol_32 = 0;
int l_pos_40 = 0;
double ld_44 = 0;
double ld_52 = 0;
double l_ord_open_price_60 = 0;
double ld_68 = 0;
l_ord_total_0 = OrdersTotal();
if (l_ord_total_0 == 0) return (0);
while (l_pos_40 < l_ord_total_0) {
if (OrderSelect(l_pos_40, SELECT_BY_POS) == TRUE) {
l_magic_8 = OrderMagicNumber();
if (l_magic_8 == Magic_Number) {
l_symbol_32 = OrderSymbol();
if (l_symbol_32 == Symbol()) {
l_ord_takeprofit_16 = OrderTakeProfit();
l_ord_stoploss_24 = OrderStopLoss();
if (l_ord_takeprofit_16 == 0.0 && l_ord_stoploss_24 == 0.0) {
l_ord_open_price_60 = OrderOpenPrice();
l_cmd_4 = OrderType();
l_ticket_12 = OrderTicket();
ld_68 = gd_268 * Point;
switch (l_cmd_4) {
case OP_SELL:
ld_44 = l_ord_open_price_60 - (Bid + ld_68);
break;
case OP_BUY:
ld_44 = Bid - l_ord_open_price_60;
}
ld_44 = NormalizeDouble(ld_44, Digits);
ld_44 *= gd_296;
if (ld_44 < 0.0) ld_52 = MathAbs(ld_44);
if (ld_44 >= gi_196) CloseOrder(l_ticket_12);
if (ld_52 >= gi_200) CloseOrder(l_ticket_12);
}
}
}
}
l_pos_40++;
}
return (0);
}
int OT() {
int l_ord_total_0 = 0;
int li_unused_4 = 0;
int l_magic_8 = 0Показано первые 50% кода (символов: 15392)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.