Ilan-Combi_Dinamic
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «ilan-combi _dinamic.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой торгового советника (Expert Advisor) для платформы MetaTrader 4, написанный на языке MQL4. Советник анализирует ценовые данные и технические индикаторы, управляет отложенными и рыночными ордерами, а также реализует функции трейлинг-стопов, контроля рисков по средствам счёта и автоматического закрытия позиций по тайм-ауту. В основе работы лежит обработка событий в функции start() с использованием торговых API MetaTrader 4 (OrderSend, OrderClose, OrderModify). Советник содержит два независимых торговых модуля — «First» и «Second», каждый из которых управляет собственными позициями с уникальными магическими числами, параметрами риска и алгоритмами расчёта объёмов. Модули используют индикатор DeMarker для определения шага лота, а также RSI для фильтрации направления входа в сделку. Динамический режим позволяет адаптировать шаг в пипсах к текущему диапазону цены за заданное количество баров, ограничивая значения верхней и нижней границами.
Настройки программы
| Настройка | Описание |
|---|---|
| _ | Разделитель — Текстовый разделитель в окне настроек советника. |
| ?????? ????? ? ????????? 0.01 ??? ???? ???? ????? 0.1 ?? ????????? ??? ? ????? ????? 0.16 (MinLots) | Минимальный лот — Минимальный размер лота, используемый как базовое значение для расчёта объёма сделок. |
| ?? - ?????????????? (MM) | Управление капиталом — Включает или выключает режим автоматического расчёта лота на основе размера средств на счёте. |
| ????????? DeMarker ??? ??????? ???? (PeriodDeM) | Период DeMarker — Период индикатора DeMarker, применяемый для расчёта шага лота. |
| ?????? ???????? (DynamicPips) | Динамические пипсы — Включает адаптивный расчёт шага в пипсах на основе диапазона цены за указанное количество баров. |
| ????????? ??????? (DefaultPips) | Пипсы по умолчанию — Значение шага в пипсах по умолчанию, используемое как граница при динамическом режиме. |
| ?????????? ????? ??? ??????? ????????????? (Bar) | Количество баров — Число баров для анализа диапазона цены при динамическом расчёте шага. |
| __ | Разделитель — Текстовый разделитель в окне настроек советника. |
| ????????? ????? ? ????? ?? ?????????? ??? ?????? ? ?????????. ?????? ??? 0.1, ?????: 0.15, 0.26, 0.4 (LotExponent_H) | Экспонента лота First — Множитель экспоненциального увеличения лота для первой торговой системы. |
| ???? ?????? (TakeProfit_H) | Тейк-профит First — Уровень фиксации прибыли в пипсах для первой торговой системы. |
| ??????????????? (slip_H) | Проскальзывание First — Допустимое проскальзывание цены в пунктах для первой торговой системы. |
| ??????????? ?????????? ???????????? ???????? ??????? (MaxTrades_H) | Макс. сделок First — Максимальное количество одновременных сделок для первой торговой системы. |
| ___ | Разделитель — Текстовый разделитель в окне настроек советника. |
| MultiLotsFactor_G | Множитель лота Second — Множитель увеличения лота для второй торговой системы. |
| TakeProfit_G | Тейк-профит Second — Уровень фиксации прибыли в пипсах для второй торговой системы. |
| MaxCountOrders_G | Макс. сделок Second — Максимальное количество одновременных сделок для второй торговой системы. |
| slippage_G | Проскальзывание Second — Допустимое проскальзывание цены в пунктах для второй торговой системы. |
Поиск по коду файла
extern string _= "?????_?????????";
extern double MinLots = 0.01; // ?????? ????? ? ????????? 0.01 ??? ???? ???? ????? 0.1 ?? ????????? ??? ? ????? ????? 0.16
extern bool MM =false; // ?? - ??????????????
extern int PeriodDeM = 15; //????????? DeMarker ??? ??????? ????
extern bool DynamicPips = true; // ?????? ????????
extern int DefaultPips = 22; // ????????? ???????
extern int Bar = 36; //?????????? ????? ??? ??????? ?????????????
int PipStep_H;//=0;
extern string __= "????????? First";
bool UseTrailingStop_H = FALSE;// ???????????? ???????? ????
extern double LotExponent_H = 1.69; // ????????? ????? ? ????? ?? ?????????? ??? ?????? ? ?????????. ?????? ??? 0.1, ?????: 0.15, 0.26, 0.43 ...
double Lots_H; // ?????? ????? ? ????????? 0.01 ??? ???? ???? ????? 0.1 ?? ????????? ??? ? ????? ????? 0.16
int lotdecimal_H = 2; // 2 - ????????? 0.01, 1 - ???? ???? 0.1, 0 - ?????????? ???? 1.0
extern double TakeProfit_H = 10.0; // ???? ??????
extern double slip_H = 3.0; // ???????????????
extern int MaxTrades_H = 10; // ??????????? ?????????? ???????????? ???????? ???????
int MagicNumber_H = 111; // ?????
bool UseEquityStop_H = FALSE; // ???????????? ???? ? ?????????
double TotalEquityRisk_H = 20.0; // ???? ? ????????? ?? ????????
bool UseTimeOut_H = FALSE; // ???????????? ???????????? ??????? ?? ???????
double MaxTradeOpenHours_H = 48.0; // ????? ?????? ????? ??????????? ??????? ??????
double Stoploss_H = 500.0;
double TrailStart_H = 15.0;
double TrailStop_H = 5.0;
double PriceTarget_H, StartEquity_H, BuyTarget_H, SellTarget_H ;
double AveragePrice_H, SellLimit_H, BuyLimit_H ;
double LastBuyPrice_H, LastSellPrice_H, Spread_H;
bool flag_H;
string EAName_H = "First";
int timeprev_H = 0, expiration_H;
int NumOfTrades_H = 0;
double iLots_H;
int cnt_H = 0, total_H;
double Stopper_H = 0.0;
bool TradeNow_H = FALSE, LongTrade_H = FALSE, ShortTrade_H = FALSE;
int ticket_H;
bool NewOrdersPlaced_H = FALSE;
double AccountEquityHighAmt_H, PrevEquity_H;
extern string ___= "????????? Second";
bool UseTrailing_G = FALSE;
extern double MultiLotsFactor_G = 1.69;
extern double TakeProfit_G = 10.0;
int StepLots_G;
double TrailStart_G = 15.0;
double TrailStop_G = 5.0;
extern int MaxCountOrders_G = 10;
bool SafeEquity_G = FALSE;
double SafeEquityRisk_G = 20.0;
extern double slippage_G = 3.0;
int MagicNumber_G = 13579;
double Step_H;
double Step_G;
double Step_HLot;
double Step_GLot;
bool gi_220_G = FALSE;
double gd_224_G = 48.0;
double g_pips_232_G = 500.0;
double gd_240_G = 0.0;
bool gi_248_G = TRUE;
bool gi_252_G = FALSE;
int gi_256_G = 1;
double g_price_260_G;
double gd_268_G;
double gd_unused_276_G;
double gd_unused_284_G;
double g_price_292_G;
double g_bid_300_G;
double g_ask_308_G;
double gd_316_G;
double gd_324_G;
double gd_340_G;
bool gi_348_G;
string gs_352_G = "Second";
int g_time_360_G = 0;
int gi_364_G;
int gi_368_G = 0; // ? ??????
double gd_372_G;
int g_pos_380_G = 0; //cnt_H
int gi_384_G;
double gd_388_G = 0.0;
bool gi_396_G = FALSE;
bool gi_400_G = FALSE;
bool gi_404_G = FALSE;
int gi_408_G;
bool gi_412_G = FALSE;
int g_datetime_416_G = 0;
int g_datetime_420_G = 0;
double gd_424_G;
double gd_432_G;
string txt,txt1;
int init()
{
// код доступен только после оплаты
}
int deinit()
{
ObjectDelete("Lable");
ObjectDelete("Lable1");
return(0);
}
int start()
{
// код доступен только после оплаты
}
{
Comment("" //??????????
+ "\n"
+ "Ilan-Combi_Dinamic"
+ "\n"
+ "________________________________"
+ "\n"
+ "??????: " + AccountCompany()
+ "\n"
+ "????? ???????: " + TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS)
+ "\n"
+ "________________________________"
+ "\n"
+ "????: " + AccountName()
+ "\n"
+ "????? ???? " + AccountNumber()
+ "\n"
+ "?????? ?????: " + AccountCurrency()
+ "\n"
+ "?????: 1:" + DoubleToStr(AccountLeverage(), 0)
+ "\n"
+ "_______________________________"
+ "\n"
+ "????? ??????? :" + OrdersTotal()
+ "\n"
+ "_______________________________"
+ "\n"
+ "??????: " + DoubleToStr(AccountBalance(), 2)
+ "\n"
+ "????????? ????????: " + DoubleToStr(AccountEquity(), 2)
+ "\n"
+ "_______________________________");
}
{
if (DynamicPips) {
double hival=High[iHighest(NULL,0,MODE_HIGH,Bar,1)]; // ?????????? ?????????? ???? ?? ????????? 36 ????
double loval=Low[iLowest(NULL,0,MODE_LOW,Bar,1)]; // ?????????? ?????????? ???? ?? ????????? 36 ????//chart used for symbol and time period
PipStep_H=NormalizeDouble((hival-loval)/3/Point,2); // ?????? PipStep
if (PipStep_H<DefaultPips/2) PipStep_H = DefaultPips/2;
if (PipStep_H>DefaultPips*2) PipStep_H = DefaultPips*2; // if dynamic pips fail, assign pips extreme value
} else PipStep_H = DefaultPips;
}
{
if (DynamicPips) {
double hival_G=High[iHighest(NULL,0,MODE_HIGH,Bar,1)]; // ?????????? ?????????? ???? ?? ????????? 36 ????
double loval_G=Low[iLowest(NULL,0,MODE_LOW,Bar,1)]; // ?????????? ?????????? ???? ?? ????????? 36 ????//chart used for symbol and time period
StepLots_G=NormalizeDouble((hival_G-loval_G)/3/Point,2); // ?????? PipStep
if (StepLots_G<DefaultPips/2) StepLots_G = DefaultPips/2;
if (StepLots_G>DefaultPips*2) StepLots_G = DefaultPips*2; // if dynamic pips fail, assign pips extreme value
} else StepLots_G = DefaultPips;
}
double PrevCl_H;
double CurrCl_H;
double Step_HLot = NormalizeDouble((iDeMarker(NULL, 0, PeriodDeM, 1)),2)/3;
if(MM==true)
{if (MathCeil(AccountBalance ()) < 2000) // MM = ???? ???? ?????? 2000, ?? ??? = Lots (0.01), ?????- % ?? ????
{Lots_H = MinLots *100* Step_HLot;
}
else
{Lots_H = NormalizeDouble(0.00001 * MathCeil(AccountBalance ()) * Step_HLot,2);
}
}
else Lots_H = MinLots *100* Step_HLot;
double l_ord_lots_8_G;
double l_ord_lots_16_G;
double l_iclose_24_G;
double l_iclose_32_G;
if (UseTrailingStop_H) TrailingAlls_H(TrailStart_H, TrailStop_H, AveragePrice_H);
if (UseTimeOut_H) {
if (TimeCurrent() >= expiration_H) {
CloseThisSymbolAll_H();
Print("Closed All due to TimeOut");
}
}
if (timeprev_H == Time[0]) return (0);
timeprev_H = Time[0];
double CurrentPairProfit_H = CalculateProfit_H();
if (UseEquityStop_H) {
if (CurrentPairProfit_H < 0.0 && MathAbs(CurrentPairProfit_H) > TotalEquityRisk_H / 100.0 * AccountEquityHigh_H()) {
CloseThisSymbolAll_H();
Print("Closed All due to Stop Out");
NewOrdersPlaced_H = FALSE;
}
}
total_H = CountTrades_H();
if (total_H == 0) flag_H = FALSE;
for (cnt_H = OrdersTotal() - 1; cnt_H >= 0; cnt_H--) {
OrderSelect(cnt_H, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_H) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_H) {
if (OrderType() == OP_BUY) {
LongTrade_H = TRUE;
ShortTrade_H = FALSE;
break;
}
}
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_H) {
if (OrderType() == OP_SELL) {
LongTrade_H = FALSE;
ShortTrade_H = TRUE;
break;
}
}
}
if (total_H > 0 && total_H <= MaxTrades_H) {
RefreshRates();
LastBuyPrice_H = FindLastBuyPrice_H();
LastSellPrice_H = FindLastSellPrice_H();
if (LongTrade_H && LastBuyPrice_H - Ask >= PipStep_H * Point) TradeNow_H = TRUE;
if (ShortTrade_H && Bid - LastSellPrice_H >= PipStep_H * Point) TradeNow_H = TRUE;
}
if (total_H < 1) {
ShortTrade_H = FALSE;
LongTrade_H = FALSE;
TradeNow_H = TRUE;
StartEquity_H = AccountEquity();
}
if (TradeNow_H) {
LastBuyPrice_H = FindLastBuyPrice_H();
LastSellPrice_H = FindLastSellPrice_H();
if (ShortTrade_H) {
NumOfTrades_H = total_H;
iLots_H = NormalizeDouble(Lots_H * MathPow(LotExponent_H, NumOfTrades_H), lotdecimal_H);
RefreshRates();
ticket_H = OpenPendingOrder_H(1, iLots_H, Bid, slip_H, Ask, 0, 0, EAName_H + "-" + NumOfTrades_H, MagicNumber_H, 0, HotPink);
if (ticket_H < 0) {
Print("Error: ", GetLastError());
return (0);
}
LastSellPrice_H = FindLastSellPrice_H();
TradeNow_H = FALSE;
NewOrdersPlaced_H = TRUE;
} else {
if (LongTrade_H) {
NumOfTrades_H = total_H;
iLots_H = NormalizeDouble(Lots_H * MathPow(LotExponent_H, NumOfTrades_H), lotdecimal_H);
ticket_H = OpenPendingOrder_H(0, iLots_H, Ask, slip_H, Bid, 0, 0, EAName_H + "-" + NumOfTrades_H, MagicNumber_H, 0, Lime);
if (ticket_H < 0) {
Print("Error: ", GetLastError());
return (0);
}
LastBuyPrice_H = FindLastBuyPrice_H();
TradeNow_H = FALSE;
NewOrdersPlaced_H = TRUE;
}
}
}
if (TradeNow_H && total_H < 1) {
PrevCl_H = iHigh(Symbol(), 0, 1);
CurrCl_H = iLow(Symbol(), 0, 2);
SellLimit_H = Bid;
BuyLimit_H = Ask;
if (!ShortTrade_H && !LongTrade_H) {
NumOfTrades_H = total_H;
iLots_H = NormalizeDouble(Lots_H * MathPow(LotExponent_H, NumOfTrades_H), lotdecimal_H);
if (PrevCl_H > CurrCl_H) {
if (iRSI(NULL, PERIOD_H1, 14, PRICE_CLOSE, 1) > 30.0) {
ticket_H = OpenPendingOrder_H(1, iLots_H, SellLimit_H, slip_H, SellLimit_H, 0, 0, EAName_H + "-" + NumOfTrades_H, MagicNumber_H, 0, HotPink);
if (ticket_H < 0) {
Print("Error: ", GetLastError());
return (0);
}
LastBuyPrice_H = FindLastBuyPrice_H();
NewOrdersPlaced_H = TRUE;
}
} else {
if (iRSI(NULL, PERIOD_H1, 14, PRICE_CLOSE, 1) < 70.0) {
ticket_H = OpenPendingOrder_H(0, iLots_H, BuyLimit_H, slip_H, BuyLimit_H, 0, 0, EAName_H + "-" + NumOfTrades_H, MagicNumber_H, 0, Lime);
if (ticket_H < 0) {
Print("Error: ", GetLastError());
return (0);
}
LastSellPrice_H = FindLastSellPrice_H();
NewOrdersPlaced_H = TRUE;
}
}
if (ticket_H > 0) expiration_H = TimeCurrent() + 60.0 * (60.0 * MaxTradeOpenHours_H);
TradeNow_H = FALSE;
}
}
total_H = CountTrades_H();
AveragePrice_H = 0;
double Count_H = 0;
for (cnt_H = OrdersTotal() - 1; cnt_H >= 0; cnt_H--) {
OrderSelect(cnt_H, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_H) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_H) {
if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
AveragePrice_H += OrderOpenPrice() * OrderLots();
Count_H += OrderLots();
}
}
}
if (total_H > 0) AveragePrice_H = NormalizeDouble(AveragePrice_H / Count_H, Digits);
if (NewOrdersPlaced_H) {
for (cnt_H = OrdersTotal() - 1; cnt_H >= 0; cnt_H--) {
OrderSelect(cnt_H, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_H) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_H) {
if (OrderType() == OP_BUY) {
PriceTarget_H = AveragePrice_H + TakeProfit_H * Point;
BuyTarget_H = PriceTarget_H;
Stopper_H = AveragePrice_H - Stoploss_H * Point;
flag_H = TRUE;
}
}
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_H) {
if (OrderType() == OP_SELL) {
PriceTarget_H = AveragePrice_H - TakeProfit_H * Point;
SellTarget_H = PriceTarget_H;
Stopper_H = AveragePrice_H + Stoploss_H * Point;
flag_H = TRUE;
}
}
}
}
if (NewOrdersPlaced_H) {
if (flag_H == TRUE) {
for (cnt_H = OrdersTotal() - 1; cnt_H >= 0; cnt_H--) {
OrderSelect(cnt_H, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_H) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_H) OrderModify(OrderTicket(), AveragePrice_H, OrderStopLoss(), PriceTarget_H, 0, Yellow);
NewOrdersPlaced_H = FALSE;
}
}
}
if (UseTrailing_G) TrailingAlls_G(TrailStart_G, TrailStop_G, g_price_292_G);
if (gi_220_G) {
if (TimeCurrent() >= gi_364_G) {
CloseThisSymbolAll_G();
Print("Closed All due to TimeOut");
}
}
if (g_time_360_G == Time[0]) return (0);
g_time_360_G = Time[0];
double ld_0_G = CalculateProfit_G();
if (SafeEquity_G) {
if (ld_0_G < 0.0 && MathAbs(ld_0_G) > SafeEquityRisk_G / 100.0 * AccountEquityHigh_G()) {
CloseThisSymbolAll_G();
Print("Closed All due to Stop Out");
gi_412_G = FALSE;
}
}
gi_384_G = CountTrades_G();
if (gi_384_G == 0) gi_348_G = FALSE;
for (g_pos_380_G = OrdersTotal() - 1; g_pos_380_G >= 0; g_pos_380_G--) {
OrderSelect(g_pos_380_G, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_G) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_G) {
if (OrderType() == OP_BUY) {
gi_400_G = TRUE;
gi_404_G = FALSE;
l_ord_lots_8_G = OrderLots();
break;
}
}
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_G) {
if (OrderType() == OP_SELL) {
gi_400_G = FALSE;
gi_404_G = TRUE;
l_ord_lots_16_G = OrderLots();
break;
}
}
}
if (gi_384_G > 0 && gi_384_G <= MaxCountOrders_G) {
RefreshRates();
gd_316_G = FindLastBuyPrice_G();
gd_324_G = FindLastSellPrice_G();
if (gi_400_G && gd_316_G - Ask >= StepLots_G * Point) gi_396_G = TRUE;
if (gi_404_G && Bid - gd_324_G >= StepLots_G * Point) gi_396_G = TRUE;
}
if (gi_384_G < 1) {
gi_404_G = FALSE;
gi_400_G = FALSE;
gi_396_G = TRUE;
gd_268_G = AccountEquity();
}
if (gi_396_G) {
gd_316_G = FindLastBuyPrice_G();
gd_324_G = FindLastSellPrice_G();
if (gi_404_G) {
if (gi_252_G) {
fOrderCloseMarket_G(0, 1);
gd_372_G = NormalizeDouble(MultiLotsFactor_G * l_ord_lots_16_G, gd_240_G);
} else gd_372_G = fGetLots_G(OP_SELL);
if (gi_248_G) {
gi_368_G = gi_384_G;
if (gd_372_G > 0.0) {
RefreshRates();
gi_408_G = OpenPendingOrder_G(1, gd_372_G, Bid, slippage_G, Ask, 0, 0, gs_352_G + "-" + gi_368_G, MagicNumber_G, 0, HotPink);
if (gi_408_G < 0) {
Print("Error: ", GetLastError());
return (0);
}
gd_324_G = FindLastSellPrice_G();
gi_396_G = FALSE;
gi_412_G = TRUE;
}
}
} else {
if (gi_400_G) {
if (gi_252_G) {
fOrderCloseMarket_G(1, 0);
gd_372_G = NormalizeDouble(MultiLotsFactor_G * l_ord_lots_8_G, gd_240_G);
} else gd_372_G = fGetLots_G(OP_BUY);
if (gi_248_G) {
gi_368_G = gi_384_G;
if (gd_372_G > 0.0) {
gi_408_G = OpenPendingOrder_G(0, gd_372_G, Ask, slippage_G, Bid, 0, 0, gs_352_G + "-" + gi_368_G, MagicNumber_G, 0, Lime);
if (gi_408_G < 0) {
Print("Error: ", GetLastError());
return (0);
}
gd_316_G = FindLastBuyPrice_G();
gi_396_G = FALSE;
gi_412_G = TRUE;
}
}
}
}
}
if (gi_396_G && gi_384_G < 1) {
l_iclose_24_G = iClose(Symbol(), 0, 2);
l_iclose_32_G = iClose(Symbol(), 0, 1);
g_bid_300_G = Bid;
g_ask_308_G = Ask;
if (!gi_404_G && !gi_400_G) {
gi_368_G = gi_384_G;
if (l_iclose_24_G > l_iclose_32_G) {
gd_372_G = fGetLots_G(OP_SELL);
if (gd_372_G > 0.0) {
gi_408_G = OpenPendingOrder_G(1, gd_372_G, g_bid_300_G, slippage_G, g_bid_300_G, 0, 0, gs_352_G + " " + MagicNumber_G + "-" + gi_368_G, MagicNumber_G, 0, HotPink);
if (gi_408_G < 0) {
Print(gd_372_G, "Error: ", GetLastError());
return (0);
}
gd_316_G = FindLastBuyPrice_G();
gi_412_G = TRUE;
}
} else {
gd_372_G = fGetLots_G(OP_BUY);
if (gd_372_G > 0.0) {
gi_408_G = OpenPendingOrder_G(0, gd_372_G, g_ask_308_G, slippage_G, g_ask_308_G, 0, 0, gs_352_G + " " + MagicNumber_G + "-" + gi_368_G, MagicNumber_G, 0, Lime);
if (gi_408_G < 0) {
Print(gd_372_G, "Error: ", GetLastError());
return (0);
}
gd_324_G = FindLastSellPrice_G();
gi_412_G = TRUE;
}
}
}
if (gi_408_G > 0) gi_364_G = TimeCurrent() + 60.0 * (60.0 * gd_224_G);
gi_396_G = FALSE;
}
gi_384_G = CountTrades_G();
g_price_292_G = 0;
double ld_40_G = 0;
for (g_pos_380_G = OrdersTotal() - 1; g_pos_380_G >= 0; g_pos_380_G--) {
OrderSelect(g_pos_380_G, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_G) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_G) {
if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
g_price_292_G += OrderOpenPrice() * OrderLots();
ld_40_G += OrderLots();
}
}
}
if (gi_384_G > 0) g_price_292_G = NormalizeDouble(g_price_292_G / ld_40_G, Digits);
if (gi_412_G) {
for (g_pos_380_G = OrdersTotal() - 1; g_pos_380_G >= 0; g_pos_380_G--) {
OrderSelect(g_pos_380_G, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_G) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_G) {
if (OrderType() == OP_BUY) {
g_price_260_G = g_price_292_G + TakeProfit_G * Point;
gd_unused_276_G = g_price_260_G;
gd_388_G = g_price_292_G - g_pips_232_G * Point;
gi_348_G = TRUE;
}
}
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_G) {
if (OrderType() == OP_SELL) {
g_price_260_G = g_price_292_G - TakeProfit_G * Point;
gd_unused_284_G = g_price_260_G;
gd_388_G = g_price_292_G + g_pips_232_G * Point;
gi_348_G = TRUE;
}
}
}
}
if (gi_412_G) {
if (gi_348_G == TRUE) {
for (g_pos_380_G = OrdersTotal() - 1; g_pos_380_G >= 0; g_pos_380_G--) {
OrderSelect(g_pos_380_G, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_G) continue;
if (OrderSymbol() == Symbol(Показано первые 50% кода (символов: 30552)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.