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

triodancer_4.4.6.mq4

Похожие материалы по тегам

ea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 2 общих теговindicator marketmind for tradingview.pineTradingView · 2 общих теговea_price_action_v6_grid.mq4MQL4 / MetaTrader 4 · 2 общих теговindo run 1.5.mq4MQL4 / MetaTrader 4 · 2 общих теговclevrfx v3.0@lifeindreamsworld.mq4MQL4 / MetaTrader 4 · 2 общих теговtriodancer_4.4.5.mq4MQL4 / MetaTrader 4 · 2 общих тегов
Вы автор или правообладатель?

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

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

О программе

Данный исходный код представляет собой торгового советника для платформы 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 и перейдите к оплате.

Стоимость полного кода
5 951,10₽ ≈ $72.74