triodancer_4.4.6.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «triodancer_4.4.6.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный исходный код представляет собой торгового советника для платформы MetaTrader 4 на языке MQL4. Советник реализует три параллельные торговые стратегии, названные в честь индонезийских традиционных танцев: Jaipong, Keroncong и Tortor. Каждая стратегия работает независимо, управляя собственными позициями с использованием уникальных магических номеров и настроек лотировки. Советник применяет сеточную логику открытия сделок, рассчитывает уровни фиксации прибыли с визуальным отображением линий тейкпрофита на графике, а также включает функции управления рисками: контроль по средствам счёта, фильтрацию по новостям и временным окнам торговли. Дополнительно реализована функция автоматического расчёта шага сетки и уровня фиксации прибыли на основе дневных диапазонов цен.
Настройки программы
| Настройка | Описание |
|---|---|
| Jaipong | Включение Jaipong — Переключатель активации стратегии Jaipong |
| Keroncong | Включение Keroncong — Переключатель активации стратегии Keroncong |
| Tortor | Включение Tortor — Переключатель активации стратегии Tortor |
| OrdersSideOptimize | Оптимизация сторон ордеров — Включает проверку направления открытия ордера относительно существующих позиций других стратегий |
| MA_Keroncong | MA-фильтр Keroncong — Включает фильтрацию сигналов Keroncong по скользящей средней |
| Period_MA | Период MA — Таймфрейм для расчёта скользящей средней, используемой в фильтре Keroncong |
| Delay_Jaipong | Задержка Jaipong — Задержка в минутах между попытками открытия новых сделок стратегии Jaipong |
| Delay_Keroncong | Задержка Keroncong — Задержка в минутах между попытками открытия новых сделок стратегии Keroncong |
| Delay_Tortor | Задержка Tortor — Задержка в минутах между попытками открытия новых сделок стратегии Tortor |
| StopTradeAfterTP_Jaipong | Остановка Jaipong после ТП — Отключает стратегию Jaipong после достижения тейкпрофита по всем позициям |
| StopTradeAfterTP_Keroncong | Остановка Keroncong после ТП — Отключает стратегию Keroncong после достижения тейкпрофита по всем позициям |
| StopTradeAfterTP_Tortor | Остановка Tortor после ТП — Отключает стратегию Tortor после достижения тейкпрофита по всем позициям |
| LossLimit_Jaipong | Лимит убытков Jaipong — Максимальный допустимый убыток для стратегии Jaipong, при превышении которого все позиции закрываются |
| LossLimit_Keroncong | Лимит убытков Keroncong — Максимальный допустимый убыток для стратегии Keroncong |
| LossLimit_Tortor | Лимит убытков Tortor — Максимальный допустимый убыток для стратегии Tortor |
| MaxTrades_Jaipong | Макс. сделок Jaipong — Максимальное количество одновременных сделок стратегии Jaipong |
| MaxTrades_Keroncong | Макс. сделок Keroncong — Максимальное количество одновременных сделок стратегии Keroncong |
| MaxTrades_Tortor | Макс. сделок Tortor — Максимальное количество одновременных сделок стратегии Tortor |
| MagicNumber_Jaipong | Magic Number Jaipong — Уникальный идентификатор ордеров для стратегии Jaipong |
| MagicNumber_Keroncong | Magic Number Keroncong — Уникальный идентификатор ордеров для стратегии Keroncong |
| MagicNumber_Tortor | Magic Number Tortor — Уникальный идентификатор ордеров для стратегии Tortor |
| MaxLots | Макс. лот — Максимально допустимый размер лота для открытия позиции |
| DepositAutoMM | Депозит для авто MM — Порог баланса для автоматического расчёта размера лота; если баланс меньше значения, используется базовый лот |
| UseEquityStop | Использовать стоп по средствам — Включает автоматическое закрытие всех позиций при достижении порога убытка по средствам счёта |
| TotalEquityRisk | Риск по средствам — Процент от средств счёта, при достижении которого срабатывает стоп-лосс по совокупным позициям |
| t2 | Настройка времени — Текстовая метка группы параметров времени |
| CloseFriday | Закрывать в пятницу — Включает автоматическое закрытие позиций в пятницу |
| CloseFridayHour | Час закрытия пятница — Час в пятницу, после которого позиции закрываются |
| OpenMondey | Открывать в понедельник — Включает блокировку открытия новых позиций в понедельник до указанного часа |
| OpenMondeyHour | Час открытия понедельник — Час, до которого запрещён вход в понедельник |
| UseTimer | Использовать таймер — Включает ограничение торговли по времени в рамках указанного диапазона часов |
| StartHour | Стартовый час — Начальный час разрешённой торговли при активном таймере |
| StopHour | Конечный час — Конечный час разрешённой торговли при активном таймере |
| ____Urdala_News_Investing_____ | Разделитель новостей — Текстовая метка группы параметров фильтрации новостей |
| AvoidNews | Избегать новостей — Включает запрет на открытие сделок во время новостных событий |
| UTimeDo | Время до новости — Временной интервал до новостного события, в течение которого действует фильтр |
| UTimePosle | Время после новости — Временной интервал после новостного события, в течение которого действует фильтр |
| Uoffset | Смещение новости — Смещение времени для фильтрации новостных событий |
| Vhigh | Высокая волатильность — Фильтр новостей с высоким уровнем волатильности |
| Vmedium | Средняя волатильность — Фильтр новостей со средним уровнем волатильности |
| Vlow | Низкая волатильность — Фильтр новостей с низким уровнем волатильности |
| T6 | Настройка лотов — Текстовая метка группы параметров размера лота |
| Lots | Базовый лот — Базовый размер лота для открытия позиции |
| BaseLotLevel | Базовый уровень лота — Начальный уровень сетки, с которого применяется экспоненциальное увеличение лота |
| LotExponent | Экспонента лота — Множитель экспоненциального увеличения размера лота на каждом уровне сетки |
| T7 | Настройка ТП — Текстовая метка группы параметров фиксации прибыли |
| AutoGridStepAndProfit | Авто шаг и ТП — Автоматический расчёт шага сетки и уровня тейкпрофита на основе дневных ценовых диапазонов |
| TakeProfit | Тейкпрофит — Размер фиксации прибыли в пунктах для одиночной сделки |
| Slippage | Слиппаж — Допустимое проскальзывание цены при открытии и закрытии ордеров |
| T10 | Настройка шага — Текстовая метка группы параметров шага сетки |
| Step_Jaipong | Шаг Jaipong — Базовый шаг сетки в пунктах для стратегии Jaipong |
| Step_Keroncong | Шаг Keroncong — Базовый шаг сетки в пунктах для стратегии Keroncong |
| Step_Tortor | Шаг Tortor — Базовый шаг сетки в пунктах для стратегии Tortor |
| DistanceExponent | Экспонента расстояния — Степень увеличения расстояния между уровнями сетки |
| BaseDistanceLevel | Базовый уровень расстояния — Уровень сетки, начиная с которого применяется экспоненциальное увеличение шага |
| Time_Flag_1 | Флаг времени 1 — Включает первое временное окно для торговли |
| Time_Start_1 | Начало окна 1 — Время начала первого торгового окна в формате ЧЧ:ММ |
| Time_Stop_1 | Конец окна 1 — Время окончания первого торгового окна в формате ЧЧ:ММ |
| Time_Flag_2 | Флаг времени 2 — Включает второе временное окно для торговли |
| Time_Start_2 | Начало окна 2 — Время начала второго торгового окна в формате ЧЧ:ММ |
| Time_Stop_2 | Конец окна 2 — Время окончания второго торгового окна в формате ЧЧ:ММ |
| TP_Color_BUY | Цвет ТП BUY — Цвет линии тейкпрофита для покупательских позиций |
| TP_Color_SELL | Цвет ТП SELL — Цвет линии тейкпрофита для продавческих позиций |
Поиск по коду файла
extern bool Jaipong = TRUE;
extern bool Keroncong = TRUE;
extern bool Tortor = TRUE;
extern bool OrdersSideOptimize = TRUE;
extern bool MA_Keroncong = FALSE;
input ENUM_TIMEFRAMES Period_MA = PERIOD_H1;
input int Delay_Jaipong = 0;
input int Delay_Keroncong = 0;
input int Delay_Tortor = 0;
extern bool StopTradeAfterTP_Jaipong = FALSE;
extern bool StopTradeAfterTP_Keroncong = FALSE;
extern bool StopTradeAfterTP_Tortor = FALSE;
int Period = 60;
extern double LossLimit_Jaipong = -1000000.0;
extern double LossLimit_Keroncong = -1000000.0;
extern double LossLimit_Tortor = -1000000.0;
extern int MaxTrades_Jaipong = 12;
extern int MaxTrades_Keroncong = 12;
extern int MaxTrades_Tortor = 12;
extern int MagicNumber_Jaipong = 11111;
extern int MagicNumber_Keroncong = 22222;
extern int MagicNumber_Tortor = 33333;
double Jai_lot, Jai;
double Ker_lot, Ker;
double Tor_lot, Tor;
double max_loss_J=0;
double max_loss_K=0;
double max_loss_T=0;
int J, K, T;
string a, b, c;
string posJ, posK, posT;
int J_r = 0;
int K_r = 0;
int T_r = 0;
double Jai_r=0;
double Ker_r=0;
double Tor_r=0;
int Gi_108 = 2;
extern double MaxLots = 5.0;
extern double DepositAutoMM = 0;
extern bool UseEquityStop = FALSE;
extern double TotalEquityRisk = 20.0;
extern string t2 = "Time Setting";
extern bool CloseFriday = FALSE;
extern int CloseFridayHour = 17;
extern bool OpenMondey = FALSE;
extern int OpenMondeyHour = 3;
extern bool UseTimer = FALSE;
extern int StartHour = 1;
extern int StopHour = 6;
extern string ____Urdala_News_Investing_____ = "----------Urdala_News_Investing----------";
extern bool AvoidNews = FALSE;
extern int UTimeDo =61;
extern int UTimePosle = 61;
extern int Uoffset = 3;
extern bool Vhigh = true;
extern bool Vmedium = false;
extern bool Vlow = false;
bool Gi_220 = FALSE;
double Gd_224 = 48.0;
double G_pips_236 = 500.0;
double G_price_280;
double Gd_288;
double Gd_unused_296;
double Gd_unused_304;
double G_price_312;
double G_bid_320;
double G_ask_328;
double Gd_336;
double Gd_344;
bool Gi_360;
string Gs_364 = "Dancing Jaipong";
int Gi_372 = 0;
int Gi_376;
int Gi_380 = 0;
double Lot_Jaipong;
int G_pos_392 = 0;
int OrdersCount1;
double Gd_400 = 0.0;
bool Gi_408 = FALSE;
bool Gi_412 = FALSE;
bool Gi_416 = FALSE;
int Gi_420;
bool Gi_424 = FALSE;
double Gd_428;
double Gd_436;
double G_pips_508 = 500.0;
bool Gi_532 = FALSE;
double Gd_536 = 48.0;
double G_price_564;
double Gd_572;
double G_price_596;
double G_bid_604;
double G_ask_612;
double Gd_620;
double Gd_628;
double Gd_636;
bool Gi_644;
string Gs_648 = "Dancing Keroncong";
int Gi_656 = 0;
int Gi_660;
int Gi_664 = 0;
double Lot_Keroncong;
int G_pos_676 = 0;
int OrdersCount2;
double Gd_684 = 0.0;
bool Gi_692 = FALSE;
bool Gi_696 = FALSE;
bool Gi_700 = FALSE;
int Gi_704;
bool Gi_708 = FALSE;
double Gd_712;
double Gd_720;
int G_datetime_728 = 1;
double G_pips_792 = 500.0;
bool Gi_816 = FALSE;
double Gd_820 = 48.0;
double G_price_848;
double Gd_856;
double Gd_unused_864;
double Gd_unused_872;
double G_price_880;
double G_bid_888;
double G_ask_896;
double Gd_904;
double Gd_912;
double Gd_920;
bool Gi_928;
string Gs_932 = "Dancing Tortor";
int Gi_940 = 0;
int Gi_944;
int Gi_948 = 0;
double Lot_Tortor;
int G_pos_960 = 0;
int OrdersCount3;
double Gd_968 = 0.0;
bool Gi_976 = FALSE;
bool Gi_980 = FALSE;
bool Gi_984 = FALSE;
int Gi_988;
bool Gi_992 = FALSE;
double Gd_996;
double Gd_1004;
int G_datetime_1012 = 1;
int Jaipong_Datetime = 1;
bool G_corner_1052 = TRUE;
int Gi_1056 = 0;
int Gi_1060 = 10;
int G_window_1064 = 0;
bool Gi_1068 = TRUE;
bool Gi_unused_1072 = TRUE;
bool Gi_1076 = FALSE;
int G_color_1080 = Gray;
int G_color_1084 = Gray;
int G_color_1088 = Gray;
int G_color_1092 = DarkOrange;
int Gi_unused_1096 = 36095;
int G_color_1100 = Lime;
int G_color_1104 = OrangeRed;
int Gi_1108 = 65280;
int Gi_1112 = 17919;
int G_color_1116 = Lime;
int G_color_1120 = Red;
int G_color_1124 = Orange;
int G_period_1128 = 8;
int G_period_1132 = 17;
int G_period_1136 = 9;
int G_applied_price_1140 = PRICE_CLOSE;
int G_color_1144 = Lime;
int G_color_1148 = Tomato;
int G_color_1152 = Green;
int G_color_1156 = Red;
int G_period_1176 = 9;
int G_applied_price_1180 = PRICE_CLOSE;
int G_period_1192 = 13;
int G_applied_price_1196 = PRICE_CLOSE;
int G_period_1208 = 5;
int G_period_1212 = 3;
int G_slowing_1216 = 3;
int G_ma_method_1220 = MODE_EMA;
int G_color_1232 = Lime;
int G_color_1236 = Red;
int G_color_1240 = Orange;
int G_period_1252 = 5;
int G_period_1256 = 9;
int G_ma_method_1260 = MODE_EMA;
int G_applied_price_1264 = PRICE_CLOSE;
int G_color_1276 = Lime;
int G_color_1280 = Red;
string Gs_dummy_1292;
string G_text_1464;
string G_text_1472;
bool Gi_1480 = FALSE;//TRUE;
int Gi_1492;
int G_str2int_1496;
int G_str2int_1500;
int G_str2int_1504;
extern string T6 = "Lots settings";
extern double Lots = 0.01;
extern int BaseLotLevel = 1;
extern double LotExponent = 1.5;
extern string T7 = "Take profit settings";
extern bool AutoGridStepAndProfit = true;
extern double TakeProfit = 50.0;
extern double Slippage = 3.0;
extern string T10 = "Step settings";
extern double Step_Jaipong = 250.0;
extern double Step_Keroncong = 250.0;
extern double Step_Tortor = 250.0;
extern double DistanceExponent = 1;
extern int BaseDistanceLevel = 1;
extern bool Time_Flag_1 = true;
extern string Time_Start_1 = "08:00";
extern string Time_Stop_1 = "10:00";
extern bool Time_Flag_2 = true;
extern string Time_Start_2 = "20:00";
extern string Time_Stop_2 = "23:00";
extern color TP_Color_BUY = clrLime;
extern color TP_Color_SELL = clrOrangeRed;
bool time_flag( bool flg, string time_start, string time_stop )
{
if( !flg ) return(false);
if( TimeCurrent() >= StrToTime( TimeToStr( TimeCurrent(), TIME_DATE)+" "+time_start)
&& TimeCurrent() < StrToTime( TimeToStr( TimeCurrent(), TIME_DATE)+" "+time_stop) )
return(true);
return(false);
}
int PreviousHour = -1;
int init()
{
// код доступен только после оплаты
}
void Create_TP_Line( string name, double price, datetime start_time, color clr)
{
ObjectCreate( name, OBJ_TREND, 0, start_time, price, Time[0]-Period()*60, price);
ObjectSet( name, OBJPROP_COLOR, clr);
ObjectSet( name, OBJPROP_RAY, 0);
}
void Modify_TP_Line( string name, double price, datetime start_time, color clr)
{
ObjectSet( name, OBJPROP_PRICE1, price);
ObjectSet( name, OBJPROP_PRICE2, price);
ObjectSet( name, OBJPROP_TIME1, start_time);
ObjectSet( name, OBJPROP_TIME2, Time[0]-Period()*60);
ObjectSet( name, OBJPROP_COLOR, clr);
ObjectSet( name, OBJPROP_RAY, 0);
}
int FirstOrderTicket(int type, int mn, string sym, datetime &tmp_time)
{
datetime time=TimeCurrent();
int i;
int ticket = 0;
for(i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if( OrderType() == type && OrderSymbol()==sym && OrderMagicNumber()==mn)
{
if(OrderOpenTime()<time)
{
time=OrderOpenTime();
tmp_time = time;
ticket=OrderTicket();
}
}
}
}
return(ticket);
}
int start() {
// код доступен только после оплаты
}
if(PreviousHour != Hour())
{
PreviousHour = Hour();
if(!AutoGridStep())
{
ExpertRemove();
}
}
bool TIME_FLAG = false;
if( time_flag( Time_Flag_1, Time_Start_1, Time_Stop_1 )
|| time_flag( Time_Flag_2, Time_Start_2, Time_Stop_2 ) )
{
TIME_FLAG = true;
}
if( !Time_Flag_1 && !Time_Flag_2)
TIME_FLAG = true;
string Ls_unused_100;
double ihigh_1128;
double ilow_1136;
double iclose_1144;
double iclose_1152;
double Lot1;
double Lot2;
double Ld_1256;
int Li_1264;
int count_1268;
double Lot3;
double Ld_1324;
int Li_1332;
int count_1336;
color ColorJ=Lime;
color ColorK=Lime;
color ColorT=Lime;
Jai_lot=0; Jai=0; J=0;
Ker_lot=0; Ker=0; K=0;
Tor_lot=0; Tor=0; T=0;
double tmp_tp;
int tmp_ticket;
datetime tmp_open_time;
if ((StopTradeAfterTP_Jaipong == TRUE) && f0_4()==0 ) Jaipong = FALSE;
if (StopTradeAfterTP_Keroncong == TRUE && f0_5()==0) Keroncong = FALSE;
if (StopTradeAfterTP_Tortor == TRUE && f0_12()==0) Tortor = FALSE;
double ww=iMA(NULL,Period_MA,29,0,MODE_LWMA,PRICE_CLOSE,1);
/*if(!IsTesting())
{
if(f0_4() > 0 && Jaipong) SetTakeProfit(MagicNumber_Jaipong,GetTakeProfit(f0_4()));
if(f0_5() > 0 && Keroncong) SetTakeProfit(MagicNumber_Keroncong,GetTakeProfit(f0_5()));
if(f0_12() > 0 && Tortor) SetTakeProfit(MagicNumber_Tortor,GetTakeProfit(f0_12()));
}*/
if(Orders_Total( MagicNumber_Jaipong, Symbol()) > 0 && Jaipong)
{
if( Orders_Total_by_type( OP_BUY, MagicNumber_Jaipong, Symbol()) == 1 )
{
for( int i = OrdersTotal()-1 ; i >=0;i-- )
{
OrderSelect( i, SELECT_BY_POS, MODE_TRADES);
if( OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber_Jaipong && OrderSymbol() == Symbol() )
{
if( ObjectFind( "TP_Line_"+IntegerToString( OrderTicket())) < 0 )
{
Create_TP_Line("TP_Line_"+IntegerToString( OrderTicket()), OrderOpenPrice()+TakeProfit*Point + MarketInfo( Symbol(), MODE_SPREAD)*Point, OrderOpenTime(), TP_Color_BUY);
}
else
{
Modify_TP_Line("TP_Line_"+IntegerToString( OrderTicket()), OrderOpenPrice()+TakeProfit*Point + MarketInfo( Symbol(), MODE_SPREAD)*Point, OrderOpenTime(), TP_Color_BUY);
}
if( OrderClosePrice() - OrderOpenPrice() >= TakeProfit*Point )
OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), 1, clrLime);
}
}
}
else
if( Orders_Total_by_type( OP_BUY, MagicNumber_Jaipong, Symbol()) > 1 )
{
tmp_tp = startZERO( OP_BUY, MagicNumber_Jaipong) + TakeProfit*Point;
tmp_ticket = FirstOrderTicket(OP_BUY, MagicNumber_Jaipong, Symbol(), tmp_open_time);
if( ObjectFind( "TP_Line_"+IntegerToString( tmp_ticket)) < 0 )
{
Create_TP_Line("TP_Line_"+IntegerToString( tmp_ticket), tmp_tp, tmp_open_time, TP_Color_BUY);
}
else
{
Modify_TP_Line("TP_Line_"+IntegerToString( tmp_ticket), tmp_tp, tmp_open_time, TP_Color_BUY);
}
if( Bid >= tmp_tp )
{
CloseOrder_by_type( OP_BUY, MagicNumber_Jaipong, Symbol());
RefreshRates();
CloseOrder_by_type( OP_BUY, MagicNumber_Jaipong, Symbol());
RefreshRates();
CloseOrder_by_type( OP_BUY, MagicNumber_Jaipong, Symbol());
}
}
if( Orders_Total_by_type( OP_SELL, MagicNumber_Jaipong, Symbol()) == 1 )
{
for( i = OrdersTotal()-1 ; i >=0;i-- )
{
OrderSelect( i, SELECT_BY_POS, MODE_TRADES);
if( OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber_Jaipong && OrderSymbol() == Symbol() )
{
if( ObjectFind( "TP_Line_"+IntegerToString( OrderTicket())) < 0 )
{
Create_TP_Line("TP_Line_"+IntegerToString( OrderTicket()), OrderOpenPrice()-TakeProfit*Point - MarketInfo( Symbol(), MODE_SPREAD)*Point, OrderOpenTime(), TP_Color_SELL);
}
else
{
Modify_TP_Line("TP_Line_"+IntegerToString( OrderTicket()), OrderOpenPrice()-TakeProfit*Point - MarketInfo( Symbol(), MODE_SPREAD)*Point, OrderOpenTime(), TP_Color_SELL);
}
if( OrderOpenPrice() - OrderClosePrice() >= TakeProfit*Point )
OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), 1, clrLime);
}
}
}
else
if( Orders_Total_by_type( OP_SELL, MagicNumber_Jaipong, Symbol()) > 1 )
{
tmp_tp = startZERO( OP_SELL, MagicNumber_Jaipong) - TakeProfit*Point;
tmp_ticket = FirstOrderTicket(OP_SELL, MagicNumber_Jaipong, Symbol(), tmp_open_time);
if( ObjectFind( "TP_Line_"+IntegerToString( tmp_ticket)) < 0 )
{
Create_TP_Line("TP_Line_"+IntegerToString( tmp_ticket), tmp_tp, tmp_open_time, TP_Color_SELL);
}
else
{
Modify_TP_Line("TP_Line_"+IntegerToString( tmp_ticket), tmp_tp, tmp_open_time, TP_Color_SELL);
}
if( Ask <= tmp_tp )
{
CloseOrder_by_type( OP_SELL, MagicNumber_Jaipong, Symbol());
RefreshRates();
CloseOrder_by_type( OP_SELL, MagicNumber_Jaipong, Symbol());
RefreshRates();
CloseOrder_by_type( OP_SELL, MagicNumber_Jaipong, Symbol());
}
}
}
if(Orders_Total( MagicNumber_Keroncong, Symbol()) > 0 && Keroncong)
{
if( Orders_Total_by_type( OP_BUY, MagicNumber_Keroncong, Symbol()) == 1 )
{
for( i = OrdersTotal()-1 ; i >=0;i-- )
{
OrderSelect( i, SELECT_BY_POS, MODE_TRADES);
if( OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber_Keroncong && OrderSymbol() == Symbol() )
{
if( ObjectFind( "TP_Line_"+IntegerToString( OrderTicket())) < 0 )
{
Create_TP_Line("TP_Line_"+IntegerToString( OrderTicket()), OrderOpenPrice()+TakeProfit*Point + MarketInfo( Symbol(), MODE_SPREAD)*Point, OrderOpenTime(), TP_Color_BUY);
}
else
{
Modify_TP_Line("TP_Line_"+IntegerToString( OrderTicket()), OrderOpenPrice()+TakeProfit*Point + MarketInfo( Symbol(), MODE_SPREAD)*Point, OrderOpenTime(), TP_Color_BUY);
}
if( OrderClosePrice() - OrderOpenPrice() >= TakeProfit*Point )
OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), 1, clrLime);
}
}
}
else
if( Orders_Total_by_type( OP_BUY, MagicNumber_Keroncong, Symbol()) > 1 )
{
tmp_tp = startZERO( OP_BUY, MagicNumber_Keroncong) + TakeProfit*Point;
tmp_ticket = FirstOrderTicket(OP_BUY, MagicNumber_Keroncong, Symbol(), tmp_open_time);
if( ObjectFind( "TP_Line_"+IntegerToString( tmp_ticket)) < 0 )
{
Create_TP_Line("TP_Line_"+IntegerToString( tmp_ticket), tmp_tp, tmp_open_time, TP_Color_BUY);
}
else
{
Modify_TP_Line("TP_Line_"+IntegerToString( tmp_ticket), tmp_tp, tmp_open_time, TP_Color_BUY);
}
if( Bid >= tmp_tp )
{
CloseOrder_by_type( OP_BUY, MagicNumber_Keroncong, Symbol());
RefreshRates();
CloseOrder_by_type( OP_BUY, MagicNumber_Keroncong, Symbol());
RefreshRates();
CloseOrder_by_type( OP_BUY, MagicNumber_Keroncong, Symbol());
}
}
if( Orders_Total_by_type( OP_SELL, MagicNumber_Keroncong, Symbol()) == 1 )
{
for( i = OrdersTotal()-1 ; i >=0;i-- )
{
OrderSelect( i, SELECT_BY_POS, MODE_TRADES);
if( OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber_Keroncong && OrderSymbol() == Symbol() )
{
if( ObjectFind( "TP_Line_"+IntegerToString( OrderTicket())) < 0 )
{
Create_TP_Line("TP_Line_"+IntegerToString( OrderTicket()), OrderOpenPrice()-TakeProfit*Point - MarketInfo( Symbol(), MODE_SPREAD)*Point, OrderOpenTime(), TP_Color_SELL);
}
else
{
Modify_TP_Line("TP_Line_"+IntegerToString( OrderTicket()), OrderOpenPrice()-TakeProfit*Point - MarketInfo( Symbol(), MODE_SPREAD)*Point, OrderOpenTime(), TP_Color_SELL);
}
if( OrderOpenPrice() - OrderClosePrice() >= TakeProfit*Point )
OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), 1, clrLime);
}
}
}
else
if( Orders_Total_by_type( OP_SELL, MagicNumber_Keroncong, Symbol()) > 1 )
{
tmp_tp = startZERO( OP_SELL, MagicNumber_Keroncong) - TakeProfit*Point;
tmp_ticket = FirstOrderTicket(OP_SELL, MagicNumber_Keroncong, Symbol(), tmp_open_time);
if( ObjectFind( "TP_Line_"+IntegerToString( tmp_ticket)) < 0 )
{
Create_TP_Line("TP_Line_"+IntegerToString( tmp_ticket), tmp_tp, tmp_open_time, TP_Color_SELL);
}
else
{
Modify_TP_Line("TP_Line_"+IntegerToString( tmp_ticket), tmp_tp, tmp_open_time, TP_Color_SELL);
}
if( Ask <= tmp_tp )
{
CloseOrder_by_type( OP_SELL, MagicNumber_Keroncong, Symbol());
RefreshRates();
CloseOrder_by_type( OP_SELL, MagicNumber_Keroncong, Symbol());
RefreshRates();
CloseOrder_by_type( OP_SELL, MagicNumber_Keroncong, Symbol());
}
}
}
if(Orders_Total( MagicNumber_Tortor, Symbol()) > 0 && Tortor)
{
if( Orders_Total_by_type( OP_BUY, MagicNumber_Tortor, Symbol()) == 1 )
{
for( i = OrdersTotal()-1 ; i >=0;i-- )
{
OrderSelect( i, SELECT_BY_POS, MODE_TRADES);
if( OrderType() == OP_BUY && OrderMagicNumber() == MagicNumber_Tortor && OrderSymbol() == Symbol() )
{
if( ObjectFind( "TP_Line_"+IntegerToString( OrderTicket())) < 0 )
{
Create_TP_Line("TP_Line_"+IntegerToString( OrderTicket()), OrderOpenPrice()+TakeProfit*Point + MarketInfo( Symbol(), MODE_SPREAD)*Point, OrderOpenTime(), TP_Color_BUY);
}
else
{
Modify_TP_Line("TP_Line_"+IntegerToString( OrderTicket()), OrderOpenPrice()+TakeProfit*Point + MarketInfo( Symbol(), MODE_SPREAD)*Point, OrderOpenTime(), TP_Color_BUY);
}
if( OrderClosePrice() - OrderOpenPrice() >= TakeProfit*Point )
OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), 1, clrLime);
}
}
}
else
if( Orders_Total_by_type( OP_BUY, MagicNumber_Tortor, Symbol()) > 1 )
{
tmp_tp = startZERO( OP_BUY, MagicNumber_Tortor) + TakeProfit*Point;
tmp_ticket = FirstOrderTicket(OP_BUY, MagicNumber_Tortor, Symbol(), tmp_open_time);
if( ObjectFind( "TP_Line_"+IntegerToString( tmp_ticket)) < 0 )
{
Create_TP_Line("TP_Line_"+IntegerToString( tmp_ticket), tmp_tp, tmp_open_time, TP_Color_BUY);
}
else
{
Modify_TP_Line("TP_Line_"+IntegerToString( tmp_ticket), tmp_tp, tmp_open_time, TP_Color_BUY);
}
if( Bid >= tmp_tp )
{
CloseOrder_by_type( OP_BUY, MagicNumber_Tortor, Symbol());
RefreshRates();
CloseOrder_by_type( OP_BUY, MagicNumber_Tortor, Symbol());
RefreshRates();
CloseOrder_by_type( OP_BUY, MagicNumber_Tortor, Symbol());
}
}
if( Orders_Total_by_type( OP_SELL, MagicNumber_Tortor, Symbol()) == 1 )
{
for( i = OrdersTotal()-1 ; i >=0;i-- )
{
OrderSelect( i, SELECT_BY_POS, MODE_TRADES);
if( OrderType() == OP_SELL && OrderMagicNumber() == MagicNumber_Tortor && OrderSymbol() == Symbol() )
{
if( ObjectFind( "TP_Line_"+IntegerToString( OrderTicket())) < 0 )
{
Create_TP_Line("TP_Line_"+IntegerToString( OrderTicket()), OrderOpenPrice()-TakeProfit*Point - MarketInfo( Symbol(), MODE_SPREAD)*Point, OrderOpenTime(), TP_Color_SELL);
}
else
{
Modify_TP_Line("TP_Line_"+IntegerToString( OrderTicket()), OrderOpenPrice()-TakeProfit*Point - MarketInfo( Symbol(), MODE_SPREAD)*Point, OrderOpenTime(), TP_Color_SELL);
}
if( OrderOpenPrice() - OrderClosePrice() >= TakeProfit*Point )
OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), 1, clrLime);
}
}
}
else
if( Orders_Total_by_type( OP_SELL, MagicNumber_Tortor, Symbol()) > 1 )
{
tmp_tp = startZERO( OP_SELL, MagicNumber_Tortor) - TakeProfit*Point;
tmp_ticket = FirstOrderTicket(OP_SELL, MagicNumber_Tortor, Symbol(), tmp_open_time);
if( ObjectFind( "TP_Line_"+IntegerToString( tmp_ticket)) < 0 )
{
Create_TP_Line("TP_Line_"+IntegerToString( tmp_ticket), tmp_tp, tmp_open_time, TP_Color_SELL);
}
else
{
Modify_TP_Line("TP_Line_"+IntegerToString( tmp_ticket), tmp_tp, tmp_open_time, TP_Color_SELL);
}
if( Ask <= tmp_tp )
{
CloseOrder_by_type( OP_SELL, MagicNumber_Tortor, Symbol());
RefreshRates();
CloseOrder_by_type( OP_SELL, MagicNumber_Tortor, Symbol());
RefreshRates();
CloseOrder_by_type( OP_SELL, MagicNumber_Tortor, Symbol());
}
}
}
if (Jaipong == TRUE)
{
double LotExponent1 = LotExponent;
int Li_1168 = Gi_108;
bool bool_1180 = UseEquityStop;
double Ld_1184 = TotalEquityRisk;
if (DepositAutoMM > 0)
{
if (MathCeil(AccountBalance()) < DepositAutoMM) Lot1 = Lots;
else
{
Lot1 = NormalizeDouble(int(AccountBalance() / DepositAutoMM) * 0.01,2);
}
}
else
{
Lot1 = Lots;
}
if (Gi_220)
{
if (TimeCurrent() >= Gi_376) {
f0_24();
Print("Closed All due_Hilo to TimeOut"); }
}
double Ld_1200 = f0_31();
if (bool_1180) {
if (Ld_1200 < 0.0 && MathAbs(Ld_1200) > Ld_1184 / 100.0 * f0_7()) {
f0_24();
Print("Closed All due_Hilo to Stop Out");
Gi_424 = FALSE;
}
}
OrdersCount1 = f0_4();
double TakeProfit1 = GetTakeProfit(OrdersCount1);
if(Gi_372 != Time[0])
{
if (OrdersCount1 == 0) Gi_360 = FALSE;
for (G_pos_392 = OrdersTotal() - 1; G_pos_392 >= 0; G_pos_392--)
{
OrderSelect(G_pos_392, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_Jaipong) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_Jaipong) {
if (OrderType() == OP_BUY) {
Gi_412 = TRUE;
Gi_416 = FALSE;
break;
}
}
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_Jaipong) {
if (OrderType() == OP_SELL) {
Gi_412 = FALSE;
Gi_416 = TRUE;
break;
}
}
}
if (OrdersCount1 > 0 && OrdersCount1 < MaxTrades_Jaipong) {
LotExponent1 = GetLotExponent(OrdersCount1);
double Step_Jaipong_ = 0.0;
Step_Jaipong_ = GetDistance(OrdersCount1, 1);
RefreshRates();
Gd_336 = f0_32();
Gd_344 = f0_20();
if (Gi_412 && Gd_336 - Ask >= Step_Jaipong_ * Point) Gi_408 = TRUE;
if (Gi_416 && Bid - Gd_344 >= Step_Jaipong_ * Point) Gi_408 = TRUE;
}
if (OrdersCount1 < 1) {
Gi_416 = FALSE;
Gi_412 = FALSE;
Gi_408 = TRUE;
Gd_288 = AccountEquity();
}
if (Gi_408) {
Gd_336 = f0_32();
Gd_344 = f0_20();
if (Gi_416) {
Gi_380 = OrdersCount1;
Lot_Jaipong = NormalizeDouble(Lot1 * MathPow(LotExponent1, Gi_380-BaseLotLevel+1), Li_1168); // определение последущего лота (x 1.5)
Lot_Jaipong = CheckLotSize(Lot_Jaipong);
RefreshRates();
Gi_420 = f0_3(1, Lot_Jaipong, Bid, Slippage, Ask, 0, 0, Gs_364 + "-" + Gi_380, MagicNumber_Jaipong, 0, HotPink);
if (Gi_420 < 0) {
Gi_408 = FALSE;
Print("Error JAIPONG 1: ", GetLastError());
return (0);
}
Gd_344 = f0_20();
Gi_408 = FALSE;
Gi_424 = TRUE;
} else {
if (Gi_412) {
Gi_380 = OrdersCount1;
Lot_Jaipong = NormalizeDouble(Lot1 * MathPow(LotExponent1, Gi_380-BaseLotLevel+1), Li_1168); // определение последущего лота (x 1.5)
Lot_Jaipong = CheckLotSize(Lot_Jaipong);
Gi_420 = f0_3(0, Lot_Jaipong, Ask, Slippage, Bid, 0, 0, Gs_364 + "-" + Gi_380, MagicNumber_Jaipong, 0, HotPink );
if (Gi_420 < 0) {
Gi_408 = FALSE;
Print("Error JAIPONG 2:", GetLastError());
return (0);
}
Gd_336 = f0_32();
Gi_408 = FALSE;
Gi_424 = TRUE;
}
}
}
Gi_372 = Time[0];
}
if (OrdersCount1 < 1 && (Jaipong_Datetime != iTime(NULL, Delay_Jaipong, 0) || Delay_Jaipong == 0) && !Weekend() && !News() && AllowTradeTime() && TIME_FLAG) // ------- / начало стратегии Jaipong !Спасибо за коммент!
{
ihigh_1128 = iHigh(Symbol(), 0, 1);
ilow_1136 = iLow(Symbol(), 0, 2);
G_bid_320 = Bid;
G_ask_328 = Ask;
Gi_380 = OrdersCount1;
Lot_Jaipong = NormalizeDouble(Lot1 * MathPow(LotExponent1, Gi_380), Li_1168);
if (ihigh_1128 > ilow_1136) {
if (iRSI(NULL, Period, 14, PRICE_CLOSE, 1) > 30.0 && OrdersSideOptimization(OP_SELL, MagicNumber_Jaipong))
{
Gi_420 = f0_3(1, Lot_Jaipong, G_bid_320, Slippage, G_bid_320, 0, 0, Gs_364 + "-" + Gi_380, MagicNumber_Jaipong, 0, HotPink );
if (Gi_420 < 0) {
Print("Error JAIPONG 3: ", GetLastError());
return (0);
}
Gd_336 = f0_32();
Gi_424 = TRUE;
}
} else {
if (iRSI(NULL, Period, 14, PRICE_CLOSE, 1) < 70.0 && OrdersSideOptimization(OP_BUY, MagicNumber_Jaipong)) {
Gi_420 = f0_3(0, Lot_Jaipong, G_ask_328, Slippage, G_ask_328, 0, 0, Gs_364 + "-" + Gi_380, MagicNumber_Jaipong, 0, HotPink );
if (Gi_420 < 0) {
Print("Error JAIPONG 4:", GetLastError());
return (0);
}
Gd_344 = f0_20();
Gi_424 = TRUE;
}
}
if (Gi_420 > 0) Gi_376 = TimeCurrent() + 60.0 * (60.0 * Gd_224);
Gi_408 = FALSE;
Jaipong_Datetime = iTime(NULL, Delay_Jaipong, 0);
}
OrdersCount1 = f0_4();
G_price_312 = 0;
double Ld_1208 = 0;
for (G_pos_392 = OrdersTotal() - 1; G_pos_392 >= 0; G_pos_392--) {
OrderSelect(G_pos_392, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_Jaipong) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_Jaipong) {
if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
G_price_312 += OrderOpenPrice() * OrderLots();
Ld_1208 += OrderLots();
}
}
}
if (OrdersCount1 > 0) G_price_312 = NormalizeDouble(G_price_312 / Ld_1208, Digits);
if (Gi_424) {
for (G_pos_392 = OrdersTotal() - 1; G_pos_392 >= 0; G_pos_392--) {
OrderSelect(G_pos_392, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_Jaipong) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_Jaipong) {
if (OrderType() == OP_BUY) {
G_price_280 = G_price_312 + TakeProfit1 * Point;
Gd_unused_296 = G_price_280;
Gd_400 = G_price_312 - G_pips_236 * Point;
Gi_360 = TRUE;
}
}
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_Jaipong) {
if (OrderType() == OP_SELL) {
G_price_280 = G_price_312 - TakeProfit1 * Point;
Gd_unused_304 = G_price_280;
Gd_400 = G_price_312 + G_pips_236 * Point;
Gi_360 = TRUE;
}
}
}
}
/*if (Gi_424) {
if (Gi_360 == TRUE) {
for (G_pos_392 = OrdersTotal() - 1; G_pos_392 >= 0; G_pos_392--) {
OrderSelect(G_pos_392, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_Jaipong) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_Jaipong)
OrderModify(OrderTicket(), G_price_312, OrderStopLoss(), G_price_280, 0, Yellow);
Gi_424 = FALSE;
}
}
}*/
}
if (Keroncong == TRUE) {
double LotExponent2 = LotExponent;
int Li_1224 = Gi_108;
bool bool_1236 = UseEquityStop;
double Ld_1240 = TotalEquityRisk;
if (DepositAutoMM > 0)
{
if (MathCeil(AccountBalance()) < DepositAutoMM) Lot2 = Lots;
else
{
Lot2 = NormalizeDouble(int(AccountBalance() / DepositAutoMM) * 0.01,2);
}
}
else
{
Lot2 = Lots;
}
OrdersCount2 = f0_5(); /// кол-во открытых поз.
double TakeProfit2 = GetTakeProfit(OrdersCount2);
if (Gi_656 != Time[0]) { /// Gi_656 = 0;
Ld_1256 = f0_29(); /// f0_29() суммарный профит всех позиций
if (bool_1236) {
if (Ld_1256 < 0.0 && MathAbs(Ld_1256) > Ld_1240 / 100.0 * f0_16()) {
f0_18();
Print("Closed All due to Stop Out");
Gi_708 = FALSE;
}
}
if (OrdersCount2 == 0) Gi_644 = FALSE;
for (G_pos_676 = OrdersTotal() - 1; G_pos_676 >= 0; G_pos_676--) {
OrderSelect(G_pos_676, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_Keroncong) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_Keroncong) {
if (OrderType() == OP_BUY) {
Gi_696 = TRUE; /////// BUY
Gi_700 = FALSE;
break;
}
}
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_Keroncong) {
if (OrderType() == OP_SELL) {
Gi_696 = FALSE;
Gi_700 = TRUE; ////////// SELL
break;
}
}
}
if (OrdersCount2 > 0 && OrdersCount2 < MaxTrades_Keroncong) {
LotExponent2 = GetLotExponent(OrdersCount2);
double Step_Keroncong_ = 0.0;
Step_Keroncong_ = GetDistance(OrdersCount2, 2);
RefreshRates();
Gd_620 = f0_36();
Gd_628 = f0_28();
if (Gi_696 && Gd_620 - Ask >= Step_Keroncong_ * Point) Gi_692 = TRUE;
if (Gi_700 && Bid - Gd_628 >= Step_Keroncong_ * Point) Gi_692 = TRUE;
}
if (OrdersCount2 < 1) { // кол-во открытых поз.
Gi_700 = FALSE;
Gi_696 = FALSE;
Gi_692 = TRUE;
Gd_572 = AccountEquity();
}
if (Gi_692) { ///если да, то продолжаем расти сетку
Gd_620 = f0_36();
Gd_628 = f0_28();
if (Gi_700) { /// если есть SELL
Gi_664 = OrdersCount2;/// кол-во открытых поз.
Lot_Keroncong = NormalizeDouble(Lot2 * MathPow(LotExponent2, Gi_664-BaseLotLevel+1), Li_1224);
Lot_Keroncong = CheckLotSize(Lot_Keroncong);
RefreshRates();
Gi_704 = f0_2(1, Lot_Keroncong, Bid, Slippage, Ask, 0, 0, Gs_648 + "-" + Gi_664, MagicNumber_Keroncong, 0, Lime);
if (Gi_704 < 0) {
Gi_692 = FALSE;
Print("Error Keroncong 1: ", GetLastError());
return (0);
}
Gd_628 = f0_28();
Gi_692 = FALSE;
Gi_708 = TRUE;
} else {
if (Gi_696) { /// если есть BUY
Gi_664 = OrdersCount2; /// кол-во открытых поз.
Lot_Keroncong = NormalizeDouble(Lot2 * MathPow(LotExponent2, Gi_664-BaseLotLevel+1), Li_1224);
Lot_Keroncong = CheckLotSize(Lot_Keroncong);
Gi_704 = f0_2(0, Lot_Keroncong, Ask, Slippage, Bid, 0, 0, Gs_648 + "-" + Gi_664, MagicNumber_Keroncong, 0, Lime);
if (Gi_704 < 0) {
Gi_692 = FALSE;
Print("Error Keroncong 2: ", GetLastError());
return (0);
}
Gd_620 = f0_36();
Gi_692 = FALSE;
Gi_708 = TRUE;
}
}
}
Gi_656 = Time[0];
}
if ((G_datetime_728 != iTime(NULL, Delay_Keroncong, 0) || Delay_Keroncong == 0) && !Weekend() && !News() && AllowTradeTime() && TIME_FLAG ) {
Li_1264 = OrdersTotal();
count_1268 = 0;
for (int Li_1272 = Li_1264; Li_1272 >= 1; Li_1272--) {
OrderSelect(Li_1272 - 1, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_Keroncong) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_Keroncong) count_1268++;
}
if (Li_1264 == 0 || count_1268 < 1)
{
iclose_1144 = iClose(Symbol(), 0, 2);
iclose_1152 = iClose(Symbol(), 0, 1);
G_bid_604 = Bid;
G_ask_612 = Ask;
Gi_664 = OrdersCount2;
Lot_Keroncong = Lot2;
if (iclose_1144 > iclose_1152 ) { //sell
if((MA_Keroncong == FALSE || iclose_1152 < ww) && OrdersSideOptimization(OP_SELL, MagicNumber_Keroncong)){
Gi_704 = f0_2(1, Lot_Keroncong, G_bid_604, Slippage, G_bid_604, 0, 0, Gs_648 + "-" + Gi_664, MagicNumber_Keroncong, 0, Lime);
if (Gi_704 < 0) {
Print("Error Keroncong 3:", GetLastError());
return (0);
}
Gd_620 = f0_36();
Gi_708 = TRUE;}}
else { //buy
if((MA_Keroncong == FALSE || iclose_1152 > ww) && OrdersSideOptimization(OP_BUY, MagicNumber_Keroncong)){
Gi_704 = f0_2(0, Lot_Keroncong, G_ask_612, Slippage, G_ask_612, 0, 0, Gs_648 + "-" + Gi_664, MagicNumber_Keroncong, 0, Lime);
if (Gi_704 < 0) {
Print("Error Keroncong 4:", GetLastError());
return (0);
}
Gd_628 = f0_28();
Gi_708 = TRUE;
}}
if (Gi_704 > 0) Gi_660 = TimeCurrent() + 60.0 * (60.0 * Gd_536);
Gi_692 = FALSE;
}
G_datetime_728 = iTime(NULL, Delay_Keroncong, 0);
}
OrdersCount2 = f0_5();
G_price_596 = 0;
double Ld_1276 = 0;
for (G_pos_676 = OrdersTotal() - 1; G_pos_676 >= 0; G_pos_676--) {
OrderSelect(G_pos_676, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_Keroncong) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_Keroncong) {
if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
G_price_596 += OrderOpenPrice() * OrderLots();
Ld_1276 += OrderLots();
}
}
}
if (OrdersCount2 > 0) G_price_596 = NormalizeDouble(G_price_596 / Ld_1276, Digits);
if (Gi_708) {
for (G_pos_676 = OrdersTotal() - 1; G_pos_676 >= 0; G_pos_676--) {
OrderSelect(G_pos_676, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_Keroncong) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_Keroncong) {
if (OrderType() == OP_BUY) {
G_price_564 = G_price_596 + TakeProfit2 * Point;
Gd_684 = G_price_596 - G_pips_508 * Point;
Gi_644 = TRUE;
}
}
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_Keroncong) {
if (OrderType() == OP_SELL) {
G_price_564 = G_price_596 - TakeProfit2 * Point;
Gd_684 = G_price_596 + G_pips_508 * Point;
Gi_644 = TRUE;
}
}
}
}
/*if (Gi_708) {
if (Gi_644 == TRUE) {
for (G_pos_676 = OrdersTotal() - 1; G_pos_676 >= 0; G_pos_676--) {
OrderSelect(G_pos_676, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_Keroncong) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_Keroncong) OrderModify(OrderTicket(), G_price_596, OrderStopLoss(), G_price_564, 0, Yellow);
Gi_708 = FALSE;
}
}
}*/
}
if (Tortor == TRUE) {
double LotExponent3 = LotExponent;
int Li_1292 = Gi_108;
bool bool_1304 = UseEquityStop;
double Ld_1308 = TotalEquityRisk;
if (DepositAutoMM > 0)
{
if (MathCeil(AccountBalance()) < DepositAutoMM) Lot3 = Lots;
else
{
Lot3 = NormalizeDouble(int(AccountBalance() / DepositAutoMM) * 0.01,2);
}
}
else
{
Lot3 = Lots;
}
if (Gi_816) {
if (TimeCurrent() >= Gi_944) {
f0_0();
Print("Closed All due to TimeOut");
}
}
OrdersCount3 = f0_12();
double TakeProfit3 = GetTakeProfit(OrdersCount3);
if (Gi_940 != Time[0]) {
Ld_1324 = f0_8();
if (bool_1304)
{
if (Ld_1324 < 0.0 && MathAbs(Ld_1324) > Ld_1308 / 100.0 * f0_30())
{
f0_0();
Print("Closed All due to Stop Out");
Gi_992 = FALSE;
}
}
if (OrdersCount3 == 0) Gi_928 = FALSE;
for (G_pos_960 = OrdersTotal() - 1; G_pos_960 >= 0; G_pos_960--) {
OrderSelect(G_pos_960, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_Tortor) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_Tortor) {
if (OrderType() == OP_BUY) {
Gi_980 = TRUE;
Gi_984 = FALSE;
break;
}
}
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_Tortor) {
if (OrderType() == OP_SELL) {
Gi_980 = FALSE;
Gi_984 = TRUE;
break;
}
}
}
if (OrdersCount3 > 0 && OrdersCount3 < MaxTrades_Tortor) {
LotExponent3 = GetLotExponent(OrdersCount3);
double Step_Tortor_ = 0.0;
Step_Tortor_ = GetDistance(OrdersCount3, 3);
RefreshRates();
Gd_904 = f0_17();
Gd_912 = f0_27();
if (Gi_980 && Gd_904 - Ask >= Step_Tortor_ * Point) Gi_976 = TRUE;
if (Gi_984 && Bid - Gd_912 >= Step_Tortor_ * Point) Gi_976 = TRUE;
}
if (OrdersCount3 < 1) {
Gi_984 = FALSE;
Gi_980 = FALSE;
Gd_856 = AccountEquity();
}
if (Gi_976) {
Gd_904 = f0_17();
Gd_912 = f0_27();
if (Gi_984) {
Gi_948 = OrdersCount3;
Lot_Tortor = NormalizeDouble(Lot3 * MathPow(LotExponent3, Gi_948-BaseLotLevel+1), Li_1292);
Lot_Tortor = CheckLotSize(Lot_Tortor);
RefreshRates();
Gi_988 = f0_6(1, Lot_Tortor, Bid, Slippage, Ask, 0, 0, Gs_932 + "-" + Gi_948, MagicNumber_Tortor, 0, Black);
if (Gi_988 < 0) {
Gi_976 = FALSE;
Print("Error Tortor 1: ", GetLastError());
return (0);
}
Gd_912 = f0_27();
Gi_976 = FALSE;
Gi_992 = TRUE;
} else {
if (Gi_980) {
Gi_948 = OrdersCount3;
Lot_Tortor = NormalizeDouble(Lot3 * MathPow(LotExponent3, Gi_948-BaseLotLevel+1), Li_1292);
Lot_Tortor = CheckLotSize(Lot_Tortor);
Gi_988 = f0_6(0, Lot_Tortor, Ask, Slippage, Bid, 0, 0, Gs_932 + "-" + Gi_948, MagicNumber_Tortor, 0, Black);
if (Gi_988 < 0) {
Gi_976 = FALSE;
Print("Error Tortor 2: ", GetLastError());
return (0);
}
Gd_904 = f0_17();
Gi_976 = FALSE;
Gi_992 = TRUE;
}
}
}
Gi_940 = Time[0];
}
if ((G_datetime_1012 != iTime(NULL, Delay_Tortor, 0) || Delay_Tortor == 0) && !Weekend() && !News() && AllowTradeTime() && TIME_FLAG ) {
Li_1332 = OrdersTotal();
count_1336 = 0;
for (int Li_1340 = Li_1332; Li_1340 >= 1; Li_1340--) {
OrderSelect(Li_1340 - 1, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber_Tortor) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber_Tortor) count_1336++;
}
if (Li_1332 == 0 || count_1336 < 1)
{
iclose_1144 = iClose(Symbol(), 0, 2);
iclose_1152 = iClose(Symbol(), 0, 1);
G_bid_888 = Bid;
G_ask_896 = Ask;
Gi_948 = OrdersCount3;
Lot_Tortor = Lot3;
if (iclose_1144 > iclose_1152) {
if (iRSI(NULL, Period, 14, PRICE_CLOSE, 1) > 30.0 && OrdersSideOptimization(OP_SELL, MagicNumber_Tortor)) {
Gi_988 = f0_6(1, LotПоказано первые 50% кода (символов: 59511)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.