Waka Waka EA
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «waka_waka_ea_mt5_v2_121_compile_fix.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Waka Waka EA — торговый советник для MetaTrader 5, портированный с MT4-стратегии с сохранением исходной логики и пользовательских настроек. Советник реализует сеточную торговлю (grid), открывая несколько сделок по одному инструменту с различными магическими числами. Работает на платформе MetaTrader 5 и обрабатывает стандартные события советника: тики, таймер, события графика и деинициализацию.
Настройки программы
| Настройка | Описание |
|---|---|
| > MM & Risk settings <------ (MM_Setting) | Настройки риска — Текстовый параметр для выбора группы настроек риска и управления позицией. |
| Allow Opening a new Grid? (AllowOpeningNewGrid) | Разрешить новую сетку — Переключатель, разрешающий или запрещающий открытие новых сеточных уровней. |
| Lot-sizing Method (LotSizingMethod) | Метод расчёта лота — Вариант настройки метода расчёта размера лота (фиксированный, на балансе, на эквити, на загрузке депозита). |
| Fixed Lot (LotSizingValueFixed) | Фиксированный лот — Числовое значение фиксированного размера лота при соответствующем методе расчёта. |
| Dynamic Lot (Balance/Equity based) (LotSizingValueDynamic) | Динамический лот — Числовое значение для динамического расчёта лота на основе баланса или эквити. |
| Deposit Load % (LotSizingDepositLoadPercent) | Процент загрузки депозита — Процент загрузки депозита, используемый при расчёте лота по загрузке. |
| Fixed Initial Deposit? (Tester only) (FixedInitialDeposit) | Фиксированный начальный депозит — Переключатель фиксированного начального депозита (используется в тестере). |
| Maximum Lot (MaximumLot) | Максимальный лот — Максимально допустимый размер лота для открытой позиции. |
| Auto Split? (AutoSplit) | Автоматическое разделение — Переключатель автоматического разделения лота при превышении максимального размера. |
| Maximum Spread, in pips (MaximumSpread) | Максимальный спред — Максимально допустимый спред в пунктах для открытия сделок. |
| Maximum Slippage for a non-ECN acc, in pips (MaximumSlippage) | Максимальный проскальзывание — Максимально допустимое проскальзывание в пунктах для не-ECN счетов. |
| Maximum Symbols at a time (MaximumSymbols) | Максимум символов — Максимальное количество одновременно торгуемых инструментов. |
| Allow Hedging? (AllowHedging) | Разрешить хеджирование — Переключатель разрешения хеджирования (открытие противоположных позиций). |
| Allow Trading on Holidays? (AllowTradingOnHolidays) | Торговля в праздники — Переключатель, разрешающий торговлю в праздничные дни. |
| Allow to Buy/Sell (AllowToBuySell) | Разрешённое направление — Вариант настройки разрешённого направления торговли: только покупка, только продажа или оба. |
| Minimum Free Margin % [0-disabled] (MinimumFreeMargin) | Минимальный свободный маржин — Минимальный процент свободного маржина для продолжения торговли. |
| Max Floating Drawdown % (MaximumDrawdown) | Максимальная просадка — Максимально допустимая плавающая просадка в процентах от баланса. |
| Max Floating Drawdown in Money [0-disabled] (MaximumDrawdownMoney) | Максимальная просадка в деньгах — Максимально допустимая плавающая просадка в денежном выражении. |
| Max Drawdown Action (MaximumDrawdownAction) | Действие при просадке — Вариант настройки действия при достижении максимальной просадки. |
| Max Drawdown Calculation (DrawdownCalculation) | Расчёт просадки — Вариант расчёта просадки: по текущей стратегии или по всему счёту. |
| > Strategy settings <------ (Strategy_Setting) | Настройки стратегии — Текстовый параметр для выбора настроек стратегии и используемых символов. |
| Symbols separated by comma (custom if empty) (Symbols) | Символы — Список торговых инструментов через запятую для работы советника. |
| Hour to Start Trading (broker\'s time) (HourToStartTrading) | Час начала торговли — Целое число, задающее час начала торговли по времени брокера. |
| Hour to Stop Trading (broker\'s time) (HourToStopTrading) | Час окончания торговли — Целое число, задающее час окончания торговли по времени брокера. |
| Bollinger Bands Period (BollingerBandsPeriod) | Период Боллинджера — Период индикатора Bollinger Bands, используемого для генерации сигналов. |
| RSI Period (RSI_Period) | Период RSI — Период индикатора RSI, используемого для генерации сигналов. |
| Maximum RSI Value (RSI_Value) | Значение RSI — Максимальное/минимальное значение RSI для фильтрации сигналов. |
| > TakeProfit settings <------ (Strategy_Setting_TP) | Настройки тейк-профита — Текстовый параметр для выбора настроек тейк-профита. |
| TakeProfit for Initial Trade, in pips (InitialTP) | Начальный тейк-профит — Числовое значение тейк-профита для начальной сделки в пунктах. |
| Weighted TakeProfit? (WeightedTP) | Взвешенный тейк-профит — Переключатель взвешенного расчёта тейк-профита для сеточных позиций. |
Поиск по коду файла
#include <Canvas\Canvas.mqh>
#property version "2.120"
#property strict
#property description "Waka Waka EA - native MT5 source port"
#property description "Original MT4 strategy logic and user inputs preserved; MT5 execution compatibility added."
enum LotSizingEnum {LowRiskPreset = 5,//Low Risk Set 20% annual (0.25% load)
MidRiskPreset = 4,//Mid Risk Set 40% annual (0.5% load)
HighRiskPreset = 3,//Significant Risk Set 80% annual (1.0% load)
ExtremeRiskPreset = 7,//High Risk Set 120% annual (1.5% load)
LotsEquity = 2,//Dynamic Lot based on Equity
LotsBalance = 1,//Dynamic Lot based on Balance
LotsDepositLoad = 6,//Lots based on Deposit load
FixedLots = 0//Fixed Lot
};
enum AllowBuySellEnum {AllowSell2 = 2,//Sell only
AllowBuy1 = 1,//Buy only
AllowBuySell0 = 0//Buy and Sell
};
enum eMaxDrawdownAction {IgnoreNewUntilRestart = 3,//Prohibit opening new grids until restart
IgnoreNewSignals = 2,//Prohibit opening new grids
CloseStopTradingUntilRestart = 1,//Close trades & stop trading until restart
CloseStopTradingFor24h = 0//Close trades & stop trading for 24h
};
enum eDrawdownCalculation {ThisStrategy = 1,//This strategy
TheAccount = 0//The account
};
class CCanvasX : public CCanvas { public:
bool CCanvasX_12( string Para_0_st);
};
class SymbolInformation { public:string st_1; datetime da_2; datetime da_3; int in_4; bool bo_5; bool bo_6; datetime da_7; datetime da_8; double do_9; bool bo_10; bool bo_11; double do_12; double do_13; int in_14; int in_15; long lo_16; double do_17; bool bo_18; bool bo_19; bool bo_20; int in_21; double do_22; double do_23; double do_24; double do_25; double do_26; datetime da_27; datetime da_28;
void SymbolInformation_13();
void SymbolInformation_14();
void SymbolInformation_15();
~SymbolInformation();
};
class CutTrade { public:long lo_1; double do_2; bool bo_3;
void CutTrade_17();
void CutTrade_18();
void CutTrade_19();
~CutTrade();
};
input string MM_Setting="Select the risk settings" ; //------> MM & Risk settings <------
input bool AllowOpeningNewGrid=true ; //Allow Opening a new Grid?
input LotSizingEnum LotSizingMethod=5 ; //Lot-sizing Method
input double LotSizingValueFixed=0.01 ; //Fixed Lot
input double LotSizingValueDynamic=10000 ; //Dynamic Lot (Balance/Equity based)
input double LotSizingDepositLoadPercent=0.25 ; //Deposit Load %
input bool FixedInitialDeposit=false ; //Fixed Initial Deposit? (Tester only)
input double MaximumLot=100 ; //Maximum Lot
input bool AutoSplit=false ; //Auto Split?
input double MaximumSpread=10 ; //Maximum Spread, in pips
input int MaximumSlippage=10 ; //Maximum Slippage for a non-ECN acc, in pips
input int MaximumSymbols=2 ; //Maximum Symbols at a time
input bool AllowHedging=true ; //Allow Hedging?
input bool AllowTradingOnHolidays=false ; //Allow Trading on Holidays?
input AllowBuySellEnum AllowToBuySell=0 ; //Allow to Buy/Sell
input double MinimumFreeMargin=0 ; //Minimum Free Margin % [0-disabled]
input double MaximumDrawdown=100 ; //Max Floating Drawdown %
input double MaximumDrawdownMoney=0 ; //Max Floating Drawdown in Money [0-disabled]
input eMaxDrawdownAction MaximumDrawdownAction=0 ; //Max Drawdown Action
input eDrawdownCalculation DrawdownCalculation=1 ; //Max Drawdown Calculation
input string Strategy_Setting="Select the strategy settings and symbols used" ; //------> Strategy settings <------
input string Symbols="AUDNZD,AUDCAD,NZDCAD" ; //Symbols separated by comma (custom if empty)
input int HourToStartTrading=0 ; //Hour to Start Trading (broker\'s time)
input int HourToStopTrading=23 ; //Hour to Stop Trading (broker\'s time)
input int BollingerBandsPeriod=35 ; //Bollinger Bands Period
input int RSI_Period=20 ; //RSI Period
input int RSI_Value=15 ; //Maximum RSI Value
input string Strategy_Setting_TP="Select TP settings" ; //------> TakeProfit settings <------
input double InitialTP=10 ; //TakeProfit for Initial Trade, in pips
input bool WeightedTP=true ; //Weighted TakeProfit?
input double GridTP=0 ; //TakeProfit for Grid, in pips (can also be zero or negative)
input int BreakEvenAfterThisLevel=0 ; //Break Even after this Level [0-disabled]
input bool HideTP=false ; //Hide TakeProfit?
input bool Use_OPO_Method=false ; //Use OPO method to handle TP
input ENUM_TIMEFRAMES OPO_TimeFrame=15 ; //TF for OPO method
input bool SmartTP=false ; //Smart TakeProfit?
input bool DoNotAdjustTPUnlessNewGrid=false ; //Do not adjust TP unless new grid level opened
input string Strategy_Setting_SL="Select SL settings" ; //------> StopLoss settings <------
input double GridSL=0 ; //StopLoss for Grid, in pips (1000pips if zero)
input bool HideSL=false ; //Hide StopLoss?
input string Grid_Setting="Adjust the grid distance and multipliers" ; //------> Grid settings <------
input int TradeDistance=35 ; //Trade Distance
input bool SmartDistance=true ; //Smart Distance?
input double TradeMultiplier_2nd=1 ; //2nd Trade Multiplier
input double TradeMultiplier_3rd=2 ; //3rd-5th Trade Multiplier
input double TradeMultiplier_6th=1.5 ; //6th- Trade Multiplier
input int MaximumTrades=9 ; //Maximum Trades
input int GridLevelToStart=1 ; //Grid Level to Start (1-initial trade)
input bool KeepOriginalProfitLotSize=false ; //Keep Original Profit Level & Lot Size
input string Additional_Setting="Change the comment and UID if needed" ; //------> Additional settings <------
input string TradeComment="Waka" ; //Trade Comment
input int UID=0 ; //UID (0...9)
input bool ShowPanel=true ; //ShowPanel
input group "=== MT5 PORT / BROKER COMPATIBILITY ==="
input bool M5_AutoResolveSymbols=true; // Resolve broker suffix/prefix, e.g. AUDNZD.a / mAUDNZD
input bool M5_UseBrokerSessionGuard=true; // Do not send requests when the broker session is closed
input bool M5_WarnOnNetting=true; // Exact MT4 ticket/grid parity requires a HEDGING account
string Global_1_st = "::W2.12LD_bmp\\WakaWakaEA.bmp";
string Global_2_st = "2.12";
long Global_3_lo = 0;
string Global_4_st = "";
int Global_5_in = 0;
datetime Global_7_da = 0;
int Global_8_in = 0;
CCanvasX Global_10_a_167;
bool Global_11_bo = true;
int Global_12_in = 3000;
bool Global_13_bo = false;
int Global_14_in = 50000;
CutTrade Global_15_a_169_ko[];
int Global_16_in = -1;
double Global_17_lo_ko[];
double Global_18_do_ko[];
int Global_19_in = -1;
int Global_20_in = 0;
int Global_21_in = 15;
SymbolInformation Global_22_a_168_ko[];
ushort Global_23_sh = 0;
int Global_24_in = 84570;
double Global_25_do = 0.0000001;
int Global_26_in = -1;
long Global_27_lo = 0;
int Global_28_in = 0;
bool Global_29_bo = false;
int Global_30_in = 0;
bool Global_31_bo = false;
int Global_32_in = -1;
long Global_33_lo = 0;
long Global_34_lo = 0;
bool Global_35_bo = false;
string Global_36_st = "Select pair";
bool Global_37_bo = true;
double Global_38_do = 0.0;
bool Global_39_bo = true;
int Global_40_in = 0;
#define M4_OP_BUY 0
#define M4_OP_SELL 1
#define M4_OP_BUYLIMIT 2
#define M4_OP_SELLLIMIT 3
#define M4_OP_BUYSTOP 4
#define M4_OP_SELLSTOP 5
struct M4SelectedTrade
{
bool valid;
bool position;
ulong ticket;
int type;
string symbol;
long magic;
double lots;
double open_price;
double close_price;
double sl;
double tp;
double profit;
double swap;
double commission;
datetime open_time;
};
M4SelectedTrade g_m4_selected;
int g_m4_trade_error=0;
void M4ClearSelected()
{
g_m4_selected.valid=false;
g_m4_selected.position=false;
g_m4_selected.ticket=0;
g_m4_selected.type=-1;
g_m4_selected.symbol="";
g_m4_selected.magic=0;
g_m4_selected.lots=0.0;
g_m4_selected.open_price=0.0;
g_m4_selected.close_price=0.0;
g_m4_selected.sl=0.0;
g_m4_selected.tp=0.0;
g_m4_selected.profit=0.0;
g_m4_selected.swap=0.0;
g_m4_selected.commission=0.0;
g_m4_selected.open_time=0;
}
void M4ResetLastError()
{
g_m4_trade_error=0;
ResetLastError();
}
int M4GetLastError()
{
if(g_m4_trade_error!=0)
{
int e=g_m4_trade_error;
g_m4_trade_error=0;
return e;
}
return GetLastError();
}
int M5RetcodeToM4(const uint rc)
{
switch(rc)
{
case TRADE_RETCODE_REQUOTE: return 138;
case TRADE_RETCODE_REJECT: return 2;
case TRADE_RETCODE_CANCEL: return 2;
case TRADE_RETCODE_ERROR: return 2;
case TRADE_RETCODE_TIMEOUT: return 128;
case TRADE_RETCODE_INVALID: return 3;
case TRADE_RETCODE_INVALID_VOLUME: return 131;
case TRADE_RETCODE_INVALID_PRICE: return 129;
case TRADE_RETCODE_INVALID_STOPS: return 130;
case TRADE_RETCODE_TRADE_DISABLED: return 133;
case TRADE_RETCODE_MARKET_CLOSED: return 132;
case TRADE_RETCODE_NO_MONEY: return 134;
case TRADE_RETCODE_PRICE_CHANGED: return 135;
case TRADE_RETCODE_PRICE_OFF: return 136;
case TRADE_RETCODE_INVALID_EXPIRATION: return 147;
case TRADE_RETCODE_TOO_MANY_REQUESTS: return 141;
case TRADE_RETCODE_LOCKED: return 139;
case TRADE_RETCODE_FROZEN: return 145;
case TRADE_RETCODE_INVALID_FILL: return 3;
case TRADE_RETCODE_CONNECTION: return 6;
case TRADE_RETCODE_LIMIT_ORDERS: return 148;
case TRADE_RETCODE_LIMIT_VOLUME: return 131;
case TRADE_RETCODE_INVALID_ORDER: return 3;
case TRADE_RETCODE_POSITION_CLOSED: return 4108;
case TRADE_RETCODE_INVALID_CLOSE_VOLUME: return 131;
case TRADE_RETCODE_LIMIT_POSITIONS: return 148;
case TRADE_RETCODE_LONG_ONLY: return 140;
case TRADE_RETCODE_SHORT_ONLY: return 4110;
case TRADE_RETCODE_CLOSE_ONLY: return 133;
case TRADE_RETCODE_FIFO_CLOSE: return 150;
case TRADE_RETCODE_HEDGE_PROHIBITED: return 149;
}
return 2;
}
bool M5TradeRetcodeOK(const uint rc)
{
return (rc==TRADE_RETCODE_DONE ||
rc==TRADE_RETCODE_DONE_PARTIAL ||
rc==TRADE_RETCODE_PLACED ||
rc==TRADE_RETCODE_NO_CHANGES);
}
ENUM_ORDER_TYPE_FILLING M5FillingMode(const string symbol)
{
long f=SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
if((f & SYMBOL_FILLING_FOK)!=0) return ORDER_FILLING_FOK;
if((f & SYMBOL_FILLING_IOC)!=0) return ORDER_FILLING_IOC;
return ORDER_FILLING_RETURN;
}
bool M5SessionOpen(const string symbol)
{
if(!M5_UseBrokerSessionGuard) return true;
datetime now=TimeTradeServer();
if(now<=0) now=TimeCurrent();
MqlDateTime d;
if(!TimeToStruct(now,d)) return true;
ENUM_DAY_OF_WEEK day=(ENUM_DAY_OF_WEEK)d.day_of_week;
int now_sec=d.hour*3600+d.min*60+d.sec;
bool has_session=false;
for(uint i=0;i<32;i++)
{
datetime from=0,to=0;
if(!SymbolInfoSessionTrade(symbol,day,i,from,to)) break;
has_session=true;
MqlDateTime a,b;
if(!TimeToStruct(from,a) || !TimeToStruct(to,b)) return true;
int from_sec=a.hour*3600+a.min*60+a.sec;
int to_sec=b.hour*3600+b.min*60+b.sec;
if(from_sec==to_sec) return true; // broker encodes a full-day session
if(from_sec<to_sec)
{
if(now_sec>=from_sec && now_sec<to_sec) return true;
}
else
{
if(now_sec>=from_sec || now_sec<to_sec) return true;
}
}
return !has_session;
}
bool M5DirectionAllowed(const string symbol,const int cmd)
{
ENUM_SYMBOL_TRADE_MODE mode=(ENUM_SYMBOL_TRADE_MODE)SymbolInfoInteger(symbol,SYMBOL_TRADE_MODE);
if(mode==SYMBOL_TRADE_MODE_DISABLED || mode==SYMBOL_TRADE_MODE_CLOSEONLY) return false;
if(cmd==M4_OP_BUY && mode==SYMBOL_TRADE_MODE_SHORTONLY) return false;
if(cmd==M4_OP_SELL && mode==SYMBOL_TRADE_MODE_LONGONLY) return false;
return true;
}
string M5ResolveSymbol(const string requested)
{
string r=requested;
StringTrimLeft(r);
StringTrimRight(r);
if(r=="") return r;
if(SymbolSelect(r,true)) return r;
if(!M5_AutoResolveSymbols) return r;
string u=r;
StringToUpper(u);
string best="";
int best_extra=2147483647;
int total=SymbolsTotal(false);
for(int i=0;i<total;i++)
{
string candidate=SymbolName(i,false);
if(candidate=="") continue;
string cu=candidate;
StringToUpper(cu);
int pos=StringFind(cu,u);
if(pos<0) continue;
int extra=StringLen(candidate)-StringLen(r);
if(extra<0) extra=-extra;
if(best=="" || extra<best_extra)
{
best=candidate;
best_extra=extra;
}
}
if(best!="")
{
SymbolSelect(best,true);
Print(TradeComment," -> MT5 symbol resolved: ",r," -> ",best);
return best;
}
return r;
}
string M4StringTrimLeft(string value)
{
StringTrimLeft(value);
return value;
}
string M4StringTrimRight(string value)
{
StringTrimRight(value);
return value;
}
long M4TerminalInfoInteger(const int property)
{
if(property==8) return TerminalInfoInteger(TERMINAL_TRADE_ALLOWED);
if(property==6) return TerminalInfoInteger(TERMINAL_CONNECTED);
return 0;
}
double M4SymbolInfoDouble(const string symbol,const int property)
{
switch(property)
{
case 27: return SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_SIZE);
case 34: return SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN);
case 35: return SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX);
case 36: return SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP);
case 55: return SymbolInfoDouble(symbol,SYMBOL_VOLUME_LIMIT);
}
return 0.0;
}
long M4SymbolInfoInteger(const string symbol,const int property)
{
if(property==30) return SymbolInfoInteger(symbol,SYMBOL_TRADE_MODE);
return 0;
}
double M4MarketInfo(const string symbol,const int mode)
{
MqlTick q;
SymbolInfoTick(symbol,q);
switch(mode)
{
case 9: return q.bid;
case 10: return q.ask;
case 11: return SymbolInfoDouble(symbol,SYMBOL_POINT);
case 12: return (double)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
case 13:
{
double p=SymbolInfoDouble(symbol,SYMBOL_POINT);
if(p<=0.0) return 0.0;
return (q.ask-q.bid)/p;
}
case 14: return (double)SymbolInfoInteger(symbol,SYMBOL_TRADE_STOPS_LEVEL);
case 16: return SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE);
case 32:
{
double margin=0.0;
double px=(q.ask>0.0 ? q.ask : SymbolInfoDouble(symbol,SYMBOL_ASK));
if(px>0.0 && OrderCalcMargin(ORDER_TYPE_BUY,symbol,1.0,px,margin)) return margin;
return 0.0;
}
case 33: return (double)SymbolInfoInteger(symbol,SYMBOL_TRADE_FREEZE_LEVEL);
}
return 0.0;
}
bool M4RefreshRates()
{
MqlTick q;
return SymbolInfoTick(_Symbol,q);
}
bool M4IsTesting() { return (bool)MQLInfoInteger(MQL_TESTER); }
bool M4IsOptimization() { return (bool)MQLInfoInteger(MQL_OPTIMIZATION); }
bool M4IsVisualMode() { return (bool)MQLInfoInteger(MQL_VISUAL_MODE); }
void M4HideTestIndicators(const bool hide) { }
bool M4IsTradeAllowed()
{
if(M4IsTesting() || M4IsOptimization()) return true;
return (TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)!=0 &&
MQLInfoInteger(MQL_TRADE_ALLOWED)!=0 &&
AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)!=0 &&
AccountInfoInteger(ACCOUNT_TRADE_EXPERT)!=0);
}
double M4AccountFreeMargin()
{
return AccountInfoDouble(ACCOUNT_MARGIN_FREE);
}
double M4AccountFreeMarginCheck(const string symbol,const int cmd,const double volume)
{
M4ResetLastError();
if(cmd!=M4_OP_BUY && cmd!=M4_OP_SELL)
{
g_m4_trade_error=3;
return -1.0;
}
MqlTick q;
if(!SymbolInfoTick(symbol,q))
{
g_m4_trade_error=136;
return -1.0;
}
double margin=0.0;
ENUM_ORDER_TYPE type=(cmd==M4_OP_BUY ? ORDER_TYPE_BUY : ORDER_TYPE_SELL);
double price=(cmd==M4_OP_BUY ? q.ask : q.bid);
if(!OrderCalcMargin(type,symbol,volume,price,margin))
{
g_m4_trade_error=134;
return -1.0;
}
double left=AccountInfoDouble(ACCOUNT_MARGIN_FREE)-margin;
if(left<=0.0) g_m4_trade_error=134;
return left;
}
int M4OrdersTotal()
{
return PositionsTotal()+OrdersTotal();
}
double M5PositionCommission(const ulong position_ticket)
{
if(!PositionSelectByTicket(position_ticket)) return 0.0;
ulong identifier=(ulong)PositionGetInteger(POSITION_IDENTIFIER);
if(identifier==0 || !HistorySelectByPosition(identifier)) return 0.0;
double total=0.0;
int n=HistoryDealsTotal();
for(int i=0;i<n;i++)
{
ulong deal=HistoryDealGetTicket(i);
if(deal==0) continue;
total+=HistoryDealGetDouble(deal,DEAL_COMMISSION);
total+=HistoryDealGetDouble(deal,DEAL_FEE);
}
return total;
}
bool M4OrderSelect(const int index,const int select_mode,const int pool)
{
M4ClearSelected();
M4ResetLastError();
if(select_mode!=0 || pool!=0 || index<0)
{
g_m4_trade_error=4108;
return false;
}
int pc=PositionsTotal();
if(index<pc)
{
ulong ticket=PositionGetTicket(index);
if(ticket==0 || !PositionSelectByTicket(ticket))
{
g_m4_trade_error=4108;
return false;
}
g_m4_selected.valid=true;
g_m4_selected.position=true;
g_m4_selected.ticket=ticket;
g_m4_selected.type=(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY ? M4_OP_BUY : M4_OP_SELL);
g_m4_selected.symbol=PositionGetString(POSITION_SYMBOL);
g_m4_selected.magic=PositionGetInteger(POSITION_MAGIC);
g_m4_selected.lots=PositionGetDouble(POSITION_VOLUME);
g_m4_selected.open_price=PositionGetDouble(POSITION_PRICE_OPEN);
g_m4_selected.close_price=PositionGetDouble(POSITION_PRICE_CURRENT);
g_m4_selected.sl=PositionGetDouble(POSITION_SL);
g_m4_selected.tp=PositionGetDouble(POSITION_TP);
g_m4_selected.profit=PositionGetDouble(POSITION_PROFIT);
g_m4_selected.swap=PositionGetDouble(POSITION_SWAP);
g_m4_selected.commission=M5PositionCommission(ticket);
g_m4_selected.open_time=(datetime)PositionGetInteger(POSITION_TIME);
return true;
}
int oi=index-pc;
if(oi<0 || oi>=OrdersTotal())
{
g_m4_trade_error=4108;
return false;
}
ulong ticket=OrderGetTicket(oi);
if(ticket==0 || !OrderSelect(ticket))
{
g_m4_trade_error=4108;
return false;
}
g_m4_selected.valid=true;
g_m4_selected.position=false;
g_m4_selected.ticket=ticket;
g_m4_selected.type=(int)OrderGetInteger(ORDER_TYPE);
g_m4_selected.symbol=OrderGetString(ORDER_SYMBOL);
g_m4_selected.magic=OrderGetInteger(ORDER_MAGIC);
g_m4_selected.lots=OrderGetDouble(ORDER_VOLUME_CURRENT);
g_m4_selected.open_price=OrderGetDouble(ORDER_PRICE_OPEN);
g_m4_selected.close_price=0.0;
g_m4_selected.sl=OrderGetDouble(ORDER_SL);
g_m4_selected.tp=OrderGetDouble(ORDER_TP);
g_m4_selected.profit=0.0;
g_m4_selected.swap=0.0;
g_m4_selected.commission=0.0;
g_m4_selected.open_time=(datetime)OrderGetInteger(ORDER_TIME_SETUP);
return true;
}
int M4OrderType() { return (g_m4_selected.valid ? g_m4_selected.type : -1); }
string M4OrderSymbol() { return (g_m4_selected.valid ? g_m4_selected.symbol : ""); }
int M4OrderMagicNumber() { return (g_m4_selected.valid ? (int)g_m4_selected.magic : 0); }
double M4OrderLots() { return (g_m4_selected.valid ? g_m4_selected.lots : 0.0); }
double M4OrderCommission() { return (g_m4_selected.valid ? g_m4_selected.commission : 0.0); }
double M4OrderSwap() { return (g_m4_selected.valid ? g_m4_selected.swap : 0.0); }
double M4OrderOpenPrice() { return (g_m4_selected.valid ? g_m4_selected.open_price : 0.0); }
double M4OrderProfit() { return (g_m4_selected.valid ? g_m4_selected.profit : 0.0); }
long M4OrderTicket() { return (g_m4_selected.valid ? (long)g_m4_selected.ticket : -1); }
double M4OrderTakeProfit() { return (g_m4_selected.valid ? g_m4_selected.tp : 0.0); }
double M4OrderStopLoss() { return (g_m4_selected.valid ? g_m4_selected.sl : 0.0); }
datetime M4OrderOpenTime() { return (g_m4_selected.valid ? g_m4_selected.open_time : 0); }
bool M5PreCheck(MqlTradeRequest &req,MqlTradeCheckResult &check)
{
ZeroMemory(check);
ResetLastError();
if(!OrderCheck(req,check))
{
if(check.retcode!=0) g_m4_trade_error=M5RetcodeToM4(check.retcode);
else g_m4_trade_error=GetLastError();
return false;
}
if(check.retcode!=0 && !M5TradeRetcodeOK(check.retcode))
{
g_m4_trade_error=M5RetcodeToM4(check.retcode);
return false;
}
return true;
}
long M4OrderSend(const string symbol,const int cmd,const double volume,const double price,
const int slippage,const double sl,const double tp,const string comment,
const int magic,const datetime expiration,const color arrow_color)
{
M4ResetLastError();
if(!M5SessionOpen(symbol))
{
g_m4_trade_error=132;
return -1;
}
if(cmd!=M4_OP_BUY && cmd!=M4_OP_SELL)
{
g_m4_trade_error=3;
return -1;
}
if(!M5DirectionAllowed(symbol,cmd))
{
ENUM_SYMBOL_TRADE_MODE tm=(ENUM_SYMBOL_TRADE_MODE)SymbolInfoInteger(symbol,SYMBOL_TRADE_MODE);
g_m4_trade_error=(tm==SYMBOL_TRADE_MODE_LONGONLY ? 140 : (tm==SYMBOL_TRADE_MODE_SHORTONLY ? 4110 : 133));
return -1;
}
MqlTick q;
if(!SymbolInfoTick(symbol,q) || q.bid<=0.0 || q.ask<=0.0)
{
g_m4_trade_error=136;
return -1;
}
MqlTradeRequest req={};
MqlTradeResult result={};
MqlTradeCheckResult check={};
req.action=TRADE_ACTION_DEAL;
req.symbol=symbol;
req.magic=(magic>0 ? (ulong)magic : 0);
req.volume=volume;
req.type=(cmd==M4_OP_BUY ? ORDER_TYPE_BUY : ORDER_TYPE_SELL);
req.price=(cmd==M4_OP_BUY ? q.ask : q.bid);
req.sl=sl;
req.tp=tp;
req.deviation=(ulong)MathMax(0,slippage);
req.type_filling=M5FillingMode(symbol);
req.comment=comment;
if(!M5PreCheck(req,check)) return -1;
ResetLastError();
bool sent=OrderSend(req,result);
if(!sent || !M5TradeRetcodeOK(result.retcode))
{
g_m4_trade_error=(result.retcode!=0 ? M5RetcodeToM4(result.retcode) : GetLastError());
return -1;
}
if(result.order>0) return (long)result.order;
if(result.deal>0) return (long)result.deal;
return 1;
}
bool M4OrderModify(const long ticket,const double price,const double sl,const double tp,
const datetime expiration,const color arrow_color)
{
M4ResetLastError();
if(PositionSelectByTicket((ulong)ticket))
{
string symbol=PositionGetString(POSITION_SYMBOL);
if(!M5SessionOpen(symbol))
{
g_m4_trade_error=132;
return false;
}
MqlTradeRequest req={};
MqlTradeResult result={};
MqlTradeCheckResult check={};
req.action=TRADE_ACTION_SLTP;
req.position=(ulong)ticket;
req.symbol=symbol;
req.magic=(ulong)PositionGetInteger(POSITION_MAGIC);
req.sl=sl;
req.tp=tp;
if(!M5PreCheck(req,check)) return false;
ResetLastError();
bool sent=OrderSend(req,result);
if(!sent || !M5TradeRetcodeOK(result.retcode))
{
g_m4_trade_error=(result.retcode!=0 ? M5RetcodeToM4(result.retcode) : GetLastError());
return false;
}
return true;
}
if(OrderSelect((ulong)ticket))
{
string symbol=OrderGetString(ORDER_SYMBOL);
if(!M5SessionOpen(symbol))
{
g_m4_trade_error=132;
return false;
}
MqlTradeRequest req={};
MqlTradeResult result={};
MqlTradeCheckResult check={};
req.action=TRADE_ACTION_MODIFY;
req.order=(ulong)ticket;
req.symbol=symbol;
req.price=price;
req.sl=sl;
req.tp=tp;
req.expiration=expiration;
req.type_time=(expiration>0 ? ORDER_TIME_SPECIFIED : ORDER_TIME_GTC);
if(!M5PreCheck(req,check)) return false;
ResetLastError();
bool sent=OrderSend(req,result);
if(!sent || !M5TradeRetcodeOK(result.retcode))
{
g_m4_trade_error=(result.retcode!=0 ? M5RetcodeToM4(result.retcode) : GetLastError());
return false;
}
return true;
}
g_m4_trade_error=4108;
return false;
}
bool M4OrderClose(const long ticket,const double lots,const double price,
const int slippage,const color arrow_color)
{
M4ResetLastError();
if(!PositionSelectByTicket((ulong)ticket))
{
g_m4_trade_error=4108;
return false;
}
string symbol=PositionGetString(POSITION_SYMBOL);
if(!M5SessionOpen(symbol))
{
g_m4_trade_error=132;
return false;
}
ENUM_POSITION_TYPE ptype=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
double current_volume=PositionGetDouble(POSITION_VOLUME);
double close_volume=MathMin(lots,current_volume);
if(close_volume<=0.0)
{
g_m4_trade_error=131;
return false;
}
MqlTick q;
if(!SymbolInfoTick(symbol,q))
{
g_m4_trade_error=136;
return false;
}
MqlTradeRequest req={};
MqlTradeResult result={};
MqlTradeCheckResult check={};
req.action=TRADE_ACTION_DEAL;
req.position=(ulong)ticket;
req.symbol=symbol;
req.magic=(ulong)PositionGetInteger(POSITION_MAGIC);
req.volume=close_volume;
req.type=(ptype==POSITION_TYPE_BUY ? ORDER_TYPE_SELL : ORDER_TYPE_BUY);
req.price=(ptype==POSITION_TYPE_BUY ? q.bid : q.ask);
req.deviation=(ulong)MathMax(0,slippage);
req.type_filling=M5FillingMode(symbol);
if(!M5PreCheck(req,check)) return false;
ResetLastError();
bool sent=OrderSend(req,result);
if(!sent || !M5TradeRetcodeOK(result.retcode))
{
g_m4_trade_error=(result.retcode!=0 ? M5RetcodeToM4(result.retcode) : GetLastError());
return false;
}
return true;
}
ENUM_TIMEFRAMES M5TF(const int tf)
{
switch(tf)
{
case 0: return PERIOD_CURRENT;
case 1: return PERIOD_M1;
case 5: return PERIOD_M5;
case 15: return PERIOD_M15;
case 30: return PERIOD_M30;
case 60: return PERIOD_H1;
case 240: return PERIOD_H4;
case 1440: return PERIOD_D1;
case 10080: return PERIOD_W1;
case 43200: return PERIOD_MN1;
}
return (ENUM_TIMEFRAMES)tf;
}
double M5CopyIndicatorValue(const int handle,const int buffer,const int shift)
{
if(handle==INVALID_HANDLE) return 0.0;
double v[1];
double result=0.0;
if(CopyBuffer(handle,buffer,shift,1,v)==1) result=v[0];
IndicatorRelease(handle);
return result;
}
double M4iMA(const string symbol,const int tf,const int period,const int ma_shift,
const int ma_method,const int applied_price,const int shift)
{
int h=iMA(symbol,M5TF(tf),period,ma_shift,(ENUM_MA_METHOD)ma_method,(ENUM_APPLIED_PRICE)applied_price);
return M5CopyIndicatorValue(h,0,shift);
}
double M4iStdDev(const string symbol,const int tf,const int period,const int ma_shift,
const int ma_method,const int applied_price,const int shift)
{
int h=iStdDev(symbol,M5TF(tf),period,ma_shift,(ENUM_MA_METHOD)ma_method,(ENUM_APPLIED_PRICE)applied_price);
return M5CopyIndicatorValue(h,0,shift);
}
double M4iATR(const string symbol,const int tf,const int period,const int shift)
{
int h=iATR(symbol,M5TF(tf),period);
return M5CopyIndicatorValue(h,0,shift);
}
double M4iRSI(const string symbol,const int tf,const int period,const int applied_price,const int shift)
{
int h=iRSI(symbol,M5TF(tf),period,(ENUM_APPLIED_PRICE)applied_price);
return M5CopyIndicatorValue(h,0,shift);
}
int M4iHighest(const string symbol,const int tf,const int type,const int count,const int start)
{
return iHighest(symbol,M5TF(tf),(ENUM_SERIESMODE)type,count,start);
}
int M4iLowest(const string symbol,const int tf,const int type,const int count,const int start)
{
return iLowest(symbol,M5TF(tf),(ENUM_SERIESMODE)type,count,start);
}
datetime M4iTime(const string symbol,const int tf,const int shift) { return iTime(symbol,M5TF(tf),shift); }
double M4iOpen(const string symbol,const int tf,const int shift) { return iOpen(symbol,M5TF(tf),shift); }
double M4iHigh(const string symbol,const int tf,const int shift) { return iHigh(symbol,M5TF(tf),shift); }
double M4iLow(const string symbol,const int tf,const int shift) { return iLow(symbol,M5TF(tf),shift); }
double M4iClose(const string symbol,const int tf,const int shift){ return iClose(symbol,M5TF(tf),shift); }
int M4iBars(const string symbol,const int tf) { return iBars(symbol,M5TF(tf)); }
int M4iBarShift(const string symbol,const int tf,const datetime t,const bool exact)
{
return iBarShift(symbol,M5TF(tf),t,exact);
}
int M4TimeHour(const datetime t) { MqlDateTime d; TimeToStruct(t,d); return d.hour; }
int M4TimeMinute(const datetime t) { MqlDateTime d; TimeToStruct(t,d); return d.min; }
int M4TimeDayOfWeek(const datetime t) { MqlDateTime d; TimeToStruct(t,d); return d.day_of_week; }
int M4TimeYear(const datetime t) { MqlDateTime d; TimeToStruct(t,d); return d.year; }
int M4TimeMonth(const datetime t) { MqlDateTime d; TimeToStruct(t,d); return d.mon; }
int M4TimeDay(const datetime t) { MqlDateTime d; TimeToStruct(t,d); return d.day; }
int M4Hour() { return M4TimeHour(TimeCurrent()); }
int M4Minute() { return M4TimeMinute(TimeCurrent()); }
int M4Period() { return (int)_Period; }
int M4ObjectsDeleteAll(const long chart_id,const int subwindow)
{
return ObjectsDeleteAll(chart_id,subwindow,-1);
}
bool M4ObjectCreate(const string name,const int type,const int subwindow,
const datetime time1,const double price1,const datetime time2,
const double price2,const datetime time3,const double price3)
{
ENUM_OBJECT obj=(type==23 ? OBJ_LABEL : (type==25 ? OBJ_BUTTON : (ENUM_OBJECT)type));
return ObjectCreate(0,name,obj,subwindow,time1,price1,time2,price2,time3,price3);
}
bool M4ObjectCreate(const long chart_id,const string name,const int type,const int subwindow,
const datetime time1,const double price1)
{
ENUM_OBJECT obj=(type==23 ? OBJ_LABEL : (type==25 ? OBJ_BUTTON : (ENUM_OBJECT)type));
return ObjectCreate(chart_id,name,obj,subwindow,time1,price1);
}
bool M4ObjectSet(const string name,const int property,const double value)
{
switch(property)
{
case 101: return ObjectSetInteger(0,name,OBJPROP_CORNER,(long)value);
case 102: return ObjectSetInteger(0,name,OBJPROP_XDISTANCE,(long)value);
case 103: return ObjectSetInteger(0,name,OBJPROP_YDISTANCE,(long)value);
case 1028: return ObjectSetInteger(0,name,OBJPROP_READONLY,(long)value);
case 1000: return ObjectSetInteger(0,name,OBJPROP_SELECTABLE,(long)value);
}
return false;
}
bool M4ObjectSetText(const string name,const string text,const int font_size,
const string font_name,const color clr)
{
bool ok=true;
ok=ObjectSetString(0,name,OBJPROP_TEXT,text) && ok;
ok=ObjectSetString(0,name,OBJPROP_FONT,font_name) && ok;
ok=ObjectSetInteger(0,name,OBJPROP_FONTSIZE,font_size) && ok;
ok=ObjectSetInteger(0,name,OBJPROP_COLOR,clr) && ok;
return ok;
}
int OnInit()
{
// код доступен только после оплаты
}
void OnTick()
{
// код доступен только после оплаты
}
void OnTimer()
{
int tmp_in_1;
if ( M4IsTesting() || M4IsOptimization() ) return;
Global_27_lo = TimeCurrent() ;
for (tmp_in_1 = 0 ; tmp_in_1 < ArraySize(Global_22_a_168_ko) ; tmp_in_1=tmp_in_1 + 1)
{
M4iTime(Global_22_a_168_ko[tmp_in_1].st_1,Global_21_in,0);
M4iTime(Global_22_a_168_ko[tmp_in_1].st_1,OPO_TimeFrame,0);
}
if ( !(ShowPanel) ) return;
lizong_49(false);
}
void OnChartEvent( const int Para_0_in,const long & Para_1_lo,const double & Para_2_do,const string & Para_3_st)
{
if ( Para_0_in != CHARTEVENT_OBJECT_CLICK ) return;
lizong_48(Para_3_st);
}
void OnDeinit( const int Para_0_in)
{
string tmp_st_1;
EventKillTimer();
tmp_st_1 = "";
switch(Para_0_in)
{
case 6 :
tmp_st_1 = "Account changed";
break;
case 3 :
tmp_st_1 = "Symbol/timeframe changed";
break;
case 4 :
tmp_st_1 = "Chart closed";
break;
case 5 :
tmp_st_1 = "Input parameters changed";
break;
case 2 :
tmp_st_1 = "Expert recompiled";
break;
case 1 :
tmp_st_1 = "Expert removed from the chart";
break;
case 7 :
tmp_st_1 = "New template applied to the chart";
break;
default :
tmp_st_1 = "Expert stopped";
}
Print(tmp_st_1);
if ( !(M4IsTesting()) && !(M4IsOptimization()) )
{Global_10_a_167.Destroy();
}
if ( M4IsTesting() || M4IsOptimization() ) return;
M4ObjectsDeleteAll(0,-1);
}
int lizong_10( int Para_0_in)
{
switch(Para_0_in)
{
case 0 :
return(0);
case 1 :
return(1);
case 5 :
return(5);
case 15 :
return(15);
case 30 :
return(30);
case 60 :
return(60);
case 240 :
return(240);
case 1440 :
return(1440);
case 10080 :
return(10080);
case 43200 :
return(43200);
}
return(0);
}
string lizong_11( int Para_0_in)
{
int Local_1_in = 0;
string Local_2_st;
string tmp_st_1;
if ( Para_0_in == -1 )
{
Local_1_in = M4GetLastError() ;
}
else
{
Local_1_in = Para_0_in ;
}
Local_2_st = " Err.code=" + IntegerToString(Local_1_in,0,32) + ": " ;
switch(Local_1_in)
{
case 0 :
tmp_st_1 = Local_2_st + "No error returned";
return(tmp_st_1);
case 1 :
tmp_st_1 = Local_2_st + "No error returned, but the result is unknown";
return(tmp_st_1);
case 2 :
tmp_st_1 = Local_2_st + "Common error";
return(tmp_st_1);
case 3 :
tmp_st_1 = Local_2_st + "Invalid trade parameters";
return(tmp_st_1);
case 4 :
tmp_st_1 = Local_2_st + "Trade server is busy";
return(tmp_st_1);
case 5 :
tmp_st_1 = Local_2_st + "Old version of the client terminal";
return(tmp_st_1);
case 6 :
tmp_st_1 = Local_2_st + "No connection with trade server";
return(tmp_st_1);
case 7 :
tmp_st_1 = Local_2_st + "Not enough rights";
return(tmp_st_1);
case 8 :
tmp_st_1 = Local_2_st + "Too frequent requests";
return(tmp_st_1);
case 9 :
tmp_st_1 = Local_2_st + "Malfunctional trade operation";
return(tmp_st_1);
case 64 :
tmp_st_1 = Local_2_st + "Account disabled";
return(tmp_st_1);
case 65 :
tmp_st_1 = Local_2_st + "Invalid account";
return(tmp_st_1);
case 128 :
tmp_st_1 = Local_2_st + "Trade timeout";
return(tmp_st_1);
case 129 :
tmp_st_1 = Local_2_st + "Invalid price";
return(tmp_st_1);
case 130 :
tmp_st_1 = Local_2_st + "Invalid stops";
return(tmp_st_1);
case 131 :
tmp_st_1 = Local_2_st + "Invalid trade volume";
return(tmp_st_1);
case 132 :
tmp_st_1 = Local_2_st + "Market is closed";
return(tmp_st_1);
case 133 :
tmp_st_1 = Local_2_st + "Trade is disabled";
return(tmp_st_1);
case 134 :
tmp_st_1 = Local_2_st + "Not enough money";
return(tmp_st_1);
case 135 :
tmp_st_1 = Local_2_st + "Price changed";
return(tmp_st_1);
case 136 :
tmp_st_1 = Local_2_st + "Off quotes";
return(tmp_st_1);
case 137 :
tmp_st_1 = Local_2_st + "Broker is busy";
return(tmp_st_1);
case 138 :
tmp_st_1 = Local_2_st + "Requote";
return(tmp_st_1);
case 139 :
tmp_st_1 = Local_2_st + "Order is locked";
return(tmp_st_1);
case 140 :
tmp_st_1 = Local_2_st + "Buy orders only allowed";
return(tmp_st_1);
case 141 :
tmp_st_1 = Local_2_st + "Too many requests";
return(tmp_st_1);
case 145 :
tmp_st_1 = Local_2_st + "Modification denied because order is too close to market";
return(tmp_st_1);
case 146 :
tmp_st_1 = Local_2_st + "Trade context is busy";
return(tmp_st_1);
case 147 :
tmp_st_1 = Local_2_st + "Expirations are denied by broker";
return(tmp_st_1);
case 148 :
tmp_st_1 = Local_2_st + "The amount of open and pending orders has reached the limit set by the broker";
return(tmp_st_1);
case 149 :
tmp_st_1 = Local_2_st + "An attempt to open an order opposite to the existing one when hedging is disabled";
return(tmp_st_1);
case 150 :
tmp_st_1 = Local_2_st + "An attempt to close an order contravening the FIFO rule";
return(tmp_st_1);
case 4000 :
tmp_st_1 = Local_2_st + "No error returned";
return(tmp_st_1);
case 4001 :
tmp_st_1 = Local_2_st + "Wrong function pointer";
return(tmp_st_1);
case 4002 :
tmp_st_1 = Local_2_st + "Array index is out of range";
return(tmp_st_1);
case 4003 :
tmp_st_1 = Local_2_st + "No memory for function call stack";
return(tmp_st_1);
case 4004 :
tmp_st_1 = Local_2_st + "Recursive stack overflow";
return(tmp_st_1);
case 4005 :
tmp_st_1 = Local_2_st + "Not enough stack for parameter";
return(tmp_st_1);
case 4006 :
tmp_st_1 = Local_2_st + "No memory for parameter string";
return(tmp_st_1);
case 4007 :
tmp_st_1 = Local_2_st + "No memory for temp string";
return(tmp_st_1);
case 4008 :
tmp_st_1 = Local_2_st + "Not initialized string";
return(tmp_st_1);
case 4009 :
tmp_st_1 = Local_2_st + "Not initialized string in array";
return(tmp_st_1);
case 4010 :
tmp_st_1 = Local_2_st + "No memory for array string";
return(tmp_st_1);
case 4011 :
tmp_st_1 = Local_2_st + "Too long string";
return(tmp_st_1);
case 4012 :
tmp_st_1 = Local_2_st + "Remainder from zero divide";
return(tmp_st_1);
case 4013 :
tmp_st_1 = Local_2_st + "Zero divide";
return(tmp_st_1);
case 4014 :
tmp_st_1 = Local_2_st + "Unknown command";
return(tmp_st_1);
case 4015 :
tmp_st_1 = Local_2_st + "Wrong jump (never generated error)";
return(tmp_st_1);
case 4016 :
tmp_st_1 = Local_2_st + "Not initialized array";
return(tmp_st_1);
case 4017 :
tmp_st_1 = Local_2_st + "DLL calls are not allowed";
return(tmp_st_1);
case 4018 :
tmp_st_1 = Local_2_st + "Cannot load library";
return(tmp_st_1);
case 4019 :
tmp_st_1 = Local_2_st + "Cannot call function";
return(tmp_st_1);
case 4020 :
tmp_st_1 = Local_2_st + "Expert function calls are not allowed";
return(tmp_st_1);
case 4021 :
tmp_st_1 = Local_2_st + "Not enough memory for temp string returned from function";
return(tmp_st_1);
case 4022 :
tmp_st_1 = Local_2_st + " System is busy (never generated error)";
return(tmp_st_1);
case 4023 :
tmp_st_1 = Local_2_st + "DLL-function call critical error";
return(tmp_st_1);
case 4024 :
tmp_st_1 = Local_2_st + "Internal error";
return(tmp_st_1);
case 4025 :
tmp_st_1 = Local_2_st + "Out of memory";
return(tmp_st_1);
case 4026 :
tmp_st_1 = Local_2_st + "Invalid pointer";
return(tmp_st_1);
case 4027 :
tmp_st_1 = Local_2_st + "Too many formatters in the format function";
return(tmp_st_1);
case 4028 :
tmp_st_1 = Local_2_st + "Parameters count exceeds formatters count";
return(tmp_st_1);
case 4029 :
tmp_st_1 = Local_2_st + "Invalid array";
return(tmp_st_1);
case 4030 :
tmp_st_1 = Local_2_st + "No reply from chart";
return(tmp_st_1);
case 4050 :
tmp_st_1 = Local_2_st + "Invalid function parameters count";
return(tmp_st_1);
case 4051 :
tmp_st_1 = Local_2_st + "Invalid function parameter value";
return(tmp_st_1);
case 4052 :
tmp_st_1 = Local_2_st + "String function internal error";
return(tmp_st_1);
case 4053 :
tmp_st_1 = Local_2_st + "Some array error";
return(tmp_st_1);
case 4054 :
tmp_st_1 = Local_2_st + "Incorrect series array using";
return(tmp_st_1);
case 4055 :
tmp_st_1 = Local_2_st + "Custom indicator error";
return(tmp_st_1);
case 4056 :
tmp_st_1 = Local_2_st + "Arrays are incompatible";
return(tmp_st_1);
case 4057 :
tmp_st_1 = Local_2_st + "Global variables processing error";
return(tmp_st_1);
case 4058 :
tmp_st_1 = Local_2_st + "Global variable not found";
return(tmp_st_1);
case 4059 :
tmp_st_1 = Local_2_st + "Function is not allowed in testing mode";
return(tmp_st_1);
case 4060 :
tmp_st_1 = Local_2_st + "Function is not allowed for call";
return(tmp_st_1);
case 4061 :
tmp_st_1 = Local_2_st + "Send mail error";
return(tmp_st_1);
case 4062 :
tmp_st_1 = Local_2_st + "String parameter expected";
return(tmp_st_1);
case 4063 :
tmp_st_1 = Local_2_st + "Integer parameter expected";
return(tmp_st_1);
case 4064 :
tmp_st_1 = Local_2_st + "Double parameter expected";
return(tmp_st_1);
case 4065 :
tmp_st_1 = Local_2_st + "Array as parameter expected";
return(tmp_st_1);
case 4066 :
tmp_st_1 = Local_2_st + "Requested history data is in updating state";
return(tmp_st_1);
case 4067 :
tmp_st_1 = Local_2_st + "Internal trade error";
return(tmp_st_1);
case 4068 :
tmp_st_1 = Local_2_st + "Resource not found";
return(tmp_st_1);
case 4069 :
tmp_st_1 = Local_2_st + "Resource not supported";
return(tmp_st_1);
case 4070 :
tmp_st_1 = Local_2_st + "Duplicate resource";
return(tmp_st_1);
case 4071 :
tmp_st_1 = Local_2_st + "Custom indicator cannot initialize";
return(tmp_st_1);
case 4072 :
tmp_st_1 = Local_2_st + "Cannot load custom indicator";
return(tmp_st_1);
case 4073 :
tmp_st_1 = Local_2_st + "No history data";
return(tmp_st_1);
case 4074 :
tmp_st_1 = Local_2_st + "No memory for history data";
return(tmp_st_1);
case 4075 :
tmp_st_1 = Local_2_st + "Not enough memory for indicator calculation";
return(tmp_st_1);
case 4099 :
tmp_st_1 = Local_2_st + "End of file";
return(tmp_st_1);
case 4100 :
tmp_st_1 = Local_2_st + "Some file error";
return(tmp_st_1);
case 4101 :
tmp_st_1 = Local_2_st + "Wrong file name";
return(tmp_st_1);
case 4102 :
tmp_st_1 = Local_2_st + "Too many opened files";
return(tmp_st_1);
case 4103 :
tmp_st_1 = Local_2_st + "Cannot open file";
return(tmp_st_1);
case 4104 :
tmp_st_1 = Local_2_st + "Incompatible access to a file";
return(tmp_st_1);
case 4105 :
tmp_st_1 = Local_2_st + "No order selected";
return(tmp_st_1);
case 4106 :
tmp_st_1 = Local_2_st + "Unknown symbol";
return(tmp_st_1);
case 4107 :
tmp_st_1 = Local_2_st + "Invalid price";
return(tmp_st_1);
case 4108 :
tmp_st_1 = Local_2_st + "Invalid ticket";
return(tmp_st_1);
case 4109 :
tmp_st_1 = Local_2_st + "Trade is not allowed. Enable checkbox \'Allow live trading\' in the Expert Advisor properties";
return(tmp_st_1);
case 4110 :
tmp_st_1 = Local_2_st + "Longs are not allowed. Check the Expert Advisor properties";
return(tmp_st_1);
case 4111 :
tmp_st_1 = Local_2_st + "Shorts are not allowed. Check the Expert Advisor properties";
return(tmp_st_1);
case 4112 :
tmp_st_1 = Local_2_st + "Automated trading by Expert Advisors/Scripts disabled by trade server";
return(tmp_st_1);
case 4200 :
tmp_st_1 = Local_2_st + "Object already exists";
return(tmp_st_1);
case 4201 :
tmp_st_1 = Local_2_st + "Unknown object property";
return(tmp_st_1);
case 4202 :
tmp_st_1 = Local_2_st + "Object does not exist";
return(tmp_st_1);
case 4203 :
tmp_st_1 = Local_2_st + "Unknown object type";
return(tmp_st_1);
case 4204 :
tmp_st_1 = Local_2_st + "No object name";
return(tmp_st_1);
case 4205 :
tmp_st_1 = Local_2_st + "Object coordinates error";
return(tmp_st_1);
case 4206 :
tmp_st_1 = Local_2_st + "No specified subwindow";
return(tmp_st_1);
case 4207 :
tmp_st_1 = Local_2_st + "Graphical object error";
return(tmp_st_1);
case 4210 :
tmp_st_1 = Local_2_st + "Unknown chart property";
return(tmp_st_1);
case 4211 :
tmp_st_1 = Local_2_st + "Chart not found";
return(tmp_st_1);
case 4212 :
tmp_st_1 = Local_2_st + "Chart subwindow not found";
return(tmp_st_1);
case 4213 :
tmp_st_1 = Local_2_st + "Chart indicator not found";
return(tmp_st_1);
case 4220 :
tmp_st_1 = Local_2_st + "Symbol select error";
return(tmp_st_1);
case 4250 :
tmp_st_1 = Local_2_st + "Notification error";
return(tmp_st_1);
case 4251 :
tmp_st_1 = Local_2_st + "Notification parameter error";
return(tmp_st_1);
case 4252 :
tmp_st_1 = Local_2_st + "Notifications disabled";
return(tmp_st_1);
case 4253 :
tmp_st_1 = Local_2_st + "Notification send too frequent";
return(tmp_st_1);
case 4260 :
tmp_st_1 = Local_2_st + "FTP server is not specified";
return(tmp_st_1);
case 4261 :
tmp_st_1 = Local_2_st + "FTP login is not specified";
return(tmp_st_1);
case 4262 :
tmp_st_1 = Local_2_st + "FTP connection failed";
return(tmp_st_1);
case 4263 :
tmp_st_1 = Local_2_st + "FTP connection closed";
return(tmp_st_1);
case 4264 :
tmp_st_1 = Local_2_st + "FTP path not found on server";
return(tmp_st_1);
case 4265 :
tmp_st_1 = Local_2_st + "File not found in the MQL4\\Files directory to send on FTP server";
return(tmp_st_1);
case 4266 :
tmp_st_1 = Local_2_st + "Common error during FTP data transmission";
return(tmp_st_1);
case 5001 :
tmp_st_1 = Local_2_st + "Too many opened files";
return(tmp_st_1);
case 5002 :
tmp_st_1 = Local_2_st + "Wrong file name";
return(tmp_st_1);
case 5003 :
tmp_st_1 = Local_2_st + "Too long file name";
return(tmp_st_1);
case 5004 :
tmp_st_1 = Local_2_st + "Cannot open file";
return(tmp_st_1);
case 5005 :
tmp_st_1 = Local_2_st + "Text file buffer allocation error";
return(tmp_st_1);
case 5006 :
tmp_st_1 = Local_2_st + "Cannot delete file";
return(tmp_st_1);
case 5007 :
tmp_st_1 = Local_2_st + "Invalid file handle (file closed or was not opened)";
return(tmp_st_1);
case 5008 :
tmp_st_1 = Local_2_st + "Wrong file handle (handle index is out of handle table)";
return(tmp_st_1);
case 5009 :
tmp_st_1 = Local_2_st + "File must be opened with FILE_WRITE flag";
return(tmp_st_1);
case 5010 :
tmp_st_1 = Local_2_st + "File must be opened with FILE_READ flag";
return(tmp_st_1);
case 5011 :
tmp_st_1 = Local_2_st + "File must be opened with FILE_BIN flag";
return(tmp_st_1);
case 5012 :
tmp_st_1 = Local_2_st + "File must be opened with FILE_TXT flag";
return(tmp_st_1);
case 5013 :
tmp_st_1 = Local_2_st + "File must be opened with FILE_TXT or FILE_CSV flag";
return(tmp_st_1);
case 5014 :
tmp_st_1 = Local_2_st + "File must be opened with FILE_CSV flag";
return(tmp_st_1);
case 5015 :
tmp_st_1 = Local_2_st + "File read error";
return(tmp_st_1);
case 5016 :
tmp_st_1 = Local_2_st + "File write error";
return(tmp_st_1);
case 5017 :
tmp_st_1 = Local_2_st + "String size must be specified for binary file";
return(tmp_st_1);
case 5018 :
tmp_st_1 = Local_2_st + "Incompatible file (for string arrays-TXT, for others-BIN)";
return(tmp_st_1);
case 5019 :
tmp_st_1 = Local_2_st + "File is directory not file";
return(tmp_st_1);
case 5020 :
tmp_st_1 = Local_2_st + "File does not exist";
return(tmp_st_1);
case 5021 :
tmp_st_1 = Local_2_st + "File cannot be rewritten";
return(tmp_st_1);
case 5022 :
tmp_st_1 = Local_2_st + "Wrong directory name";
return(tmp_st_1);
case 5023 :
tmp_st_1 = Local_2_st + "Directory does not exist";
return(tmp_st_1);
case 5024 :
tmp_st_1 = Local_2_st + "Specified file is not directory";
return(tmp_st_1);
case 5025 :
tmp_st_1 = Local_2_st + "Cannot delete directory";
return(tmp_st_1);
case 5026 :
tmp_st_1 = Local_2_st + "Cannot clean directory";
return(tmp_st_1);
case 5027 :
tmp_st_1 = Local_2_st + "Array resize error";
return(tmp_st_1);
case 5028 :
tmp_st_1 = Local_2_st + "String resize error";
return(tmp_st_1);
case 5029 :
tmp_st_1 = Local_2_st + "Structure contains strings or dynamic arrays";
return(tmp_st_1);
case 5200 :
tmp_st_1 = Local_2_st + "Invalid URL";
return(tmp_st_1);
case 5201 :
tmp_st_1 = Local_2_st + "Failed to connect to specified URL";
return(tmp_st_1);
case 5202 :
tmp_st_1 = Local_2_st + "Timeout exceeded";
return(tmp_st_1);
case 5203 :
tmp_st_1 = Local_2_st + "HTTP request failed";
return(tmp_st_1);
}
tmp_st_1 = Local_2_st + "Unknown error number";
return(tmp_st_1);
}
bool CCanvasX::CCanvasX_12( string Para_0_st)
{
int Local_3_in;
string Local_4_st;
int Local_5_in;
int Local_6_in = 0;
int Local_7_in = 0;
int Local_8_in = 0;
int Local_9_in = 0;
Local_5_in = -1 ;
Local_4_st = "" ;
Local_3_in = 32 ;
uint resource_width=(uint)MathMax(0,m_width);
uint resource_height=(uint)MathMax(0,m_height);
bool resource_ok=ResourceReadImage(Para_0_st,m_pixels,resource_width,resource_height);
if(resource_ok)
{
m_width=(int)resource_width;
m_height=(int)resource_height;
}
if ( !resource_ok )
{
if ( Local_5_in != -1 )
{
FileClose(Local_5_in);
Local_5_in = -1 ;
Local_4_st = "" ;
Local_3_in &=96;
}
;
}
if ( Local_5_in != -1 )
{
FileClose(Local_5_in);
Local_5_in = -1 ;
Local_4_st = "" ;
Local_3_in &=96;
}
return(true);
}
void SymbolInformation::SymbolInformation_13()
{
}
void SymbolInformation::SymbolInformation_14()
{
}
void SymbolInformation::SymbolInformation_15()
{
SymbolInformation_13();
SymbolInformation_14();
}
SymbolInformation::~SymbolInformation()
{
/*
*/
}
void CutTrade::CutTrade_17()
{
}
void CutTrade::CutTrade_18()
{
}
void CutTrade::CutTrade_19()
{
CutTrade_17();
CutTrade_18();
}
CutTrade::~CutTrade()
{
/*
*/
}
bool lizong_21( string Para_0_st,int Para_1_in,int Para_2_in)
{
bool Local_2_bo = false;
int Local_3_in;
int Local_4_in;
int Local_5_in;
int Local_6_in;
int Local_7_in;
int Local_8_in;
int Local_9_in;
int Local_10_in;
int Local_11_in;
int Local_12_in;
int Local_13_in;
int Local_14_in;
string Local_15_st;
int Local_16_in;
int Local_17_in;
int tmp_in_1;
int tmp_in_2;
int tmp_in_3;
int tmp_in_4;
Local_3_in=Global_24_in + UID;
Local_4_in=StringLen(IntegerToString(Local_3_in,0,32));
Local_5_in=Local_3_in + int(MathPow(10.0,Local_4_in));
Local_6_in=Local_3_in + int(MathPow(10.0,Local_4_in)) * 2;
Local_7_in = -1 ;
Local_8_in = -1 ;
Local_9_in = -1 ;
Local_10_in = -1 ;
Local_11_in = -1 ;
Local_12_in = -1 ;
if ( Para_2_in == 1 )
{
Local_7_in = 0 ;
Local_8_in = 0 ;
if ( Para_1_in >= 0 )
{
Local_9_in=int(MathPow(10.0,StringLen(IntegerToString(Local_3_in,0,32)) + 2)) + Local_3_in * 100 + Para_1_in;
Local_10_in = Local_9_in ;
}
else
{
Local_11_in = Local_5_in ;
Local_12_in = Local_5_in ;
}
}
if ( Para_2_in == -1 )
{
Local_7_in = 1 ;
Local_8_in = 1 ;
if ( Para_1_in >= 0 )
{
Local_9_in=(int(MathPow(10.0,StringLen(IntegerToString(Global_24_in + UID,0,32)) + 2))) * 2 + (Global_24_in + UID) * 100 + Para_1_in;
Local_10_in = Local_9_in ;
}
else
{
Local_11_in = Local_6_in ;
Local_12_in = Local_6_in ;
}
}
if ( Para_2_in == 0 )
{
Local_7_in = 0 ;
Local_8_in = 1 ;
if ( Para_1_in >= 0 )
{
Local_9_in=int(MathPow(10.0,StringLen(IntegerToString(Global_24_in + UID,0,32)) + 2)) + (Global_24_in + UID) * 100 + Para_1_in;
if ( Para_1_in < 0 )
{
tmp_in_1 = -1;
}
else
{
tmp_in_2 = Global_24_in + UID;
tmp_in_3 = StringLen(IntegerToString(tmp_in_2,0,32)) ;
tmp_in_4 = 0;
if ( -1 == 1 )
{
tmp_in_4 = 1;
}
if ( -1 == -1 )
{
tmp_in_4 = 2;
}
tmp_in_1 = int(MathPow(10.0,tmp_in_3 + 2)) * tmp_in_4 + tmp_in_2 * 100 + Para_1_in;
}
Local_10_in = tmp_in_1 ;
}
else
{
Local_11_in = Local_5_in ;
Local_12_in = Local_6_in ;
}
}
for (Local_13_in = 0 ; Local_13_in < M4OrdersTotal() ; Local_13_in ++)
{
if ( M4OrderSelect(Local_13_in,0,0) )
{
Local_14_in = M4OrderType() ;
Local_15_st = M4OrderSymbol() ;
Local_16_in = M4OrderMagicNumber() ;
Local_17_in=Local_16_in / 100;
if ( Para_1_in >= 0 && Local_15_st == Para_0_st && ( ( Local_16_in == Local_9_in && Local_14_in == Local_7_in ) || (Local_16_in == Local_10_in && Local_14_in == Local_8_in) ) )
{
return(true);
}
if ( Para_1_in < 0 && Local_15_st == Para_0_st && ( ( Local_17_in == Local_11_in && Local_14_in == Local_7_in ) || (Local_17_in == Local_12_in && Local_14_in == Local_8_in) ) )
{
return(true);
}
}
else
{
Print(TradeComment + " " + Para_0_st,": Failed to select an order! Error=",lizong_11(M4GetLastError()));
Local_2_bo = true ;
}
}
return(Local_2_bo);
}
double lizong_22( string Para_0_st,int Para_1_in,int Para_2_in)
{
double Local_2_do = 0.0;
int Local_3_in;
int Local_4_in;
double Local_5_do;
double Local_6_do;
int Local_7_in;
int Local_8_in;
string Local_9_st;
int Local_10_in;
double Local_11_do;
double Local_12_do;
int tmp_in_1;
int tmp_in_2;
int tmp_in_3;
int tmp_in_4;
int tmp_in_5;
tmp_in_1 = Para_2_in;
if ( Para_1_in < 0 )
{
tmp_in_2 = -1;
}
else
{
tmp_in_3 = Global_24_in + UID;
tmp_in_4 = StringLen(IntegerToString(tmp_in_3,0,32)) ;
tmp_in_5 = 0;
if ( tmp_in_1 == 1 )
{
tmp_in_5 = 1;
}
if ( tmp_in_1 == -1 )
{
tmp_in_5 = 2;
}
tmp_in_2 = int(MathPow(10.0,tmp_in_4 + 2)) * tmp_in_5 + tmp_in_3 * 100 + Para_1_in;
}
Local_3_in = tmp_in_2 ;
Local_4_in = -1 ;
if ( Para_2_in == 1 )
{
Local_4_in = 0 ;
}
if ( Para_2_in == -1 )
{
Local_4_in = 1 ;
}
Local_5_do = 0.0 ;
Local_6_do = 0.0 ;
for (Local_7_in = 0 ; Local_7_in < M4OrdersTotal() ; Local_7_in ++)
{
if ( M4OrderSelect(Local_7_in,0,0) )
{
Local_8_in = M4OrderType() ;
Local_9_st = M4OrderSymbol() ;
Local_10_in = M4OrderMagicNumber() ;
Local_11_do = M4OrderOpenPrice() ;
Local_12_do = M4OrderLots() ;
if ( Local_9_st == Para_0_st && Local_10_in == Local_3_in && Local_8_in == Local_4_in )
{
Local_6_do = Local_11_do * Local_12_do + Local_6_do ;
Local_5_do = Local_5_do + Local_12_do ;
if ( !(AutoSplit) )
{
break;
}
}
}
else
{
Print(TradeComment + " " + Para_0_st,": Failed to select an order! Error=",lizong_11(M4GetLastError()));
}
}
if ( Local_5_do>Global_25_do )
{
Local_2_do = Local_6_do / Local_5_do ;
}
return(Local_2_do);
}
double lizong_23( string Para_0_st,int Para_1_in,bool Para_2_bo,bool Para_3_bo)
{
double Local_2_do = 0.0;
double Local_3_do = 0.0;
double Local_4_do = 0.0;
int Local_5_in;
int Local_6_in;
int Local_7_in;
int Local_8_in;
double Local_9_do;
int Local_10_in;
string Local_11_st;
int Local_12_in;
int Local_13_in;
double Local_14_do;
int Local_15_do;
double Local_16_do;
int Local_17_in;
int Local_18_in;
string Local_19_st;
int Local_20_in;
double Local_21_do;
double Local_22_do;
double Local_23_do;
double Local_24_do;
int Local_25_do;
int tmp_in_1;
double tmp_do_2;
int tmp_in_3;
double tmp_do_4;
int tmp_in_5;
double tmp_do_6;
double tmp_do_7;
int tmp_in_8;
double tmp_do_9;
int tmp_in_10;
double tmp_do_11;
int tmp_in_12;
double tmp_do_13;
int tmp_in_14;
Local_5_in=Global_24_in + UID;
Local_6_in=StringLen(IntegerToString(Local_5_in,0,32));
Local_7_in = 0 ;
Local_8_in = -1 ;
if ( Para_1_in == 1 )
{
Local_8_in = 0 ;
Local_7_in = 1 ;
}
if ( Para_1_in == -1 )
{
Local_8_in = 1 ;
Local_7_in = 2 ;
}
Local_9_do = 0.0 ;
if ( KeepOriginalProfitLotSize && Para_3_bo && GridLevelToStart > 1 && !(AutoSplit) )
{
for (Local_10_in = 0 ; Local_10_in < M4OrdersTotal() ; Local_10_in ++)
{
if ( M4OrderSelect(Local_10_in,0,0) )
{
Local_11_st = M4OrderSymbol() ;
Local_12_in = M4OrderType() ;
Local_13_in = M4OrderMagicNumber() ;
Local_14_do = M4OrderLots() ;
if ( Local_11_st == Para_0_st && Local_13_in / 100 == Local_5_in + int(MathPow(10.0,Local_6_in)) * Local_7_in && Local_12_in == Local_8_in )
{
Local_15_do=Local_13_in - Local_13_in / 100 * 100;
if ( Local_15_do >= GridLevelToStart - 1 && Local_14_do>Global_25_do )
{
Local_9_do = Local_14_do ;
tmp_in_1 = Local_15_do;
tmp_do_2 = 1.0;
for (tmp_in_3 = 1 ; tmp_in_3 <= tmp_in_1 ; tmp_in_3=tmp_in_3 + 1)
{
if ( tmp_in_3 == 1 )
{
tmp_do_2 = TradeMultiplier_2nd;
}
if ( tmp_in_3 >= 2 && tmp_in_3 <= 4 )
{
tmp_do_2 = tmp_do_2 * TradeMultiplier_3rd;
}
if ( tmp_in_3 >= 5 )
{
tmp_do_2 = tmp_do_2 * TradeMultiplier_6th;
}
}
Local_16_do = tmp_do_2 ;
if ( Local_16_do>Global_25_do )
{
Local_9_do = Local_9_do / Local_16_do ;
}
if ( Local_9_do>Global_25_do )
{
break;
}
}
}
}
else
{
Print(TradeComment + " " + Para_0_st,": Failed to select an order! Error=",lizong_11(M4GetLastError()));
}
}
}
for (Local_17_in = 0 ; Local_17_in < M4OrdersTotal() ; Local_17_in ++)
{
if ( M4OrderSelect(Local_17_in,0,0) )
{
Local_18_in = M4OrderType() ;
Local_19_st = M4OrderSymbol() ;
Local_20_in = M4OrderMagicNumber() ;
Local_21_do = M4OrderLots() ;
Local_22_do = M4OrderOpenPrice() ;
if ( Local_19_st == Para_0_st && Local_20_in / 100 == Local_5_in + int(MathPow(10.0,Local_6_in)) * Local_7_in && Local_18_in == Local_8_in )
{
Local_23_do = Local_22_do ;
if ( Para_2_bo )
{
tmp_do_4 = 0.0;
if ( M4MarketInfo(Para_0_st,16) * Local_21_do>Global_25_do )
{
tmp_in_5 = (int)M4MarketInfo(Para_0_st,12);
tmp_do_6 = (M4OrderCommission() + M4OrderSwap()) / (M4MarketInfo(Para_0_st,16) * Local_21_do);
if ( M4MarketInfo(Para_0_st,11)>Global_25_do )
{
tmp_do_7 = M4MarketInfo(Para_0_st,11);
}
else
{
tmp_do_7 = 0.00001;
}
tmp_do_6 = tmp_do_6 * tmp_do_7;
tmp_do_4 = NormalizeDouble(tmp_do_6,tmp_in_5);
}
Local_24_do = tmp_do_4 ;
if ( Para_1_in == 1 )
{
tmp_in_8 = (int)M4MarketInfo(Para_0_st,12);
if ( M4MarketInfo(Para_0_st,11)>Global_25_do )
{
tmp_do_9 = M4MarketInfo(Para_0_st,11);
}
else
{
tmp_do_9 = 0.00001;
}
Local_23_do = NormalizeDouble(Local_22_do + tmp_do_9 - Local_24_do,tmp_in_8) ;
}
if ( Para_1_in == -1 )
{
tmp_in_10 = (int)M4MarketInfo(Para_0_st,12);
if ( M4MarketInfo(Para_0_st,11)>Global_25_do )
{
tmp_do_11 = M4MarketInfo(Para_0_st,11);
}
else
{
tmp_do_11 = 0.00001;
}
Local_23_do = NormalizeDouble(Local_22_do - tmp_do_11 + Local_24_do,tmp_in_10) ;
}
}
if ( KeepOriginalProfitLotSize && Para_3_bo && GridLevelToStart > 1 && Local_9_do>Global_25_do && !(AutoSplit) )
{
Local_25_do=Local_20_in - Local_20_in / 100 * 100;
if ( Local_25_do == 0 )
{
Local_21_do = Local_9_do ;
}
if ( Local_25_do > 0 )
{
tmp_in_12 = Local_25_do;
tmp_do_13 = 1.0;
for (tmp_in_14 = 1 ; tmp_in_14 <= tmp_in_12 ; tmp_in_14=tmp_in_14 + 1)
{
if ( tmp_in_14 == 1 )
{
tmp_do_13 = TradeMultiplier_2nd;
}
if ( tmp_in_14 >= 2 && tmp_in_14 <= 4 )
{
tmp_do_13 = tmp_do_13 * TradeMultiplier_3rd;
}
if ( tmp_in_14 >= 5 )
{
tmp_do_13 = tmp_do_13 * TradeMultiplier_6th;
}
}
Local_21_do = Local_9_do * tmp_do_13 ;
}
}
Local_3_do = Local_23_do * Local_21_do + Local_3_do ;
Local_4_do = Local_4_do + Local_21_do ;
}
}
else
{
Print(TradeComment + " " + Para_0_st,": Failed to select an order! Error=",lizong_11(M4GetLastError()));
}
}
if ( Local_4_do>Global_25_do )
{
Local_2_do = Local_3_do / Local_4_do ;
}
Local_2_do = NormalizeDouble(Local_2_do,(int)M4MarketInfo(Para_0_st,12)) ;
return(Local_2_do);
}
double lizong_24( string Para_0_st,int Para_1_in,int Para_2_in,bool Para_3_bo)
{
double Local_2_do = 0.0;
int Local_3_in;
int Local_4_in;
int Local_5_in;
int Local_6_in;
int Local_7_in;
int Local_8_in;
int Local_9_in;
int Local_10_in;
int Local_11_in;
int Local_12_in;
int Local_13_in;
int Local_14_in;
double Local_15_do;
int Local_16_in;
int Local_17_in;
string Local_18_st;
int Local_19_in;
double Local_20_do;
int Local_21_in;
int Local_22_do;
int Local_23_do;
int tmp_in_1;
int tmp_in_2;
int tmp_in_3;
int tmp_in_4;
int tmp_in_5;
double tmp_do_6;
int tmp_in_7;
int tmp_in_8;
double tmp_do_9;
int tmp_in_10;
Local_3_in=Global_24_in + UID;
Local_4_in=StringLen(IntegerToString(Local_3_in,0,32));
Local_5_in=Local_3_in + int(MathPow(10.0,Local_4_in));
Local_6_in=Local_3_in + int(MathPow(10.0,Local_4_in)) * 2;
Local_7_in = -1 ;
Local_8_in = -1 ;
Local_9_in = -1 ;
Local_10_in = -1 ;
Local_11_in = -1 ;
Local_12_in = -1 ;
if ( Para_2_in == 1 )
{
Local_7_in = 0 ;
Local_8_in = 0 ;
if ( Para_1_in >= 0 )
{
Local_9_in=int(MathPow(10.0,StringLen(IntegerToString(Local_3_in,0,32)) + 2)) + Local_3_in * 100 + Para_1_in;
Local_10_in = Local_9_in ;
}
else
{
Local_11_in = Local_5_in ;
Local_12_in = Local_5_in ;
}
}
if ( Para_2_in == -1 )
{
Local_7_in = 1 ;
Local_8_in = 1 ;
if ( Para_1_in >= 0 )
{
Local_9_in=(int(MathPow(10.0,StringLen(IntegerToString(Global_24_in + UID,0,32)) + 2))) * 2 + (Global_24_in + UID) * 100 + Para_1_in;
Local_10_in = Local_9_in ;
}
else
{
Local_11_in = Local_6_in ;
Local_12_in = Local_6_in ;
}
}
if ( Para_2_in == 0 )
{
Local_7_in = 0 ;
Local_8_in = 1 ;
if ( Para_1_in >= 0 )
{
Local_9_in=int(MathPow(10.0,StringLen(IntegerToString(Global_24_in + UID,0,32)) + 2)) + (Global_24_in + UID) * 100 + Para_1_in;
if ( Para_1_in < 0 )
{
tmp_in_1 = -1;
}
else
{
tmp_in_2 = Global_24_in + UID;
tmp_in_3 = StringLen(IntegerToString(tmp_in_2,0,32)) ;
tmp_in_4 = 0;
if ( -1 == 1 )
{
tmp_in_4 = 1;
}
if ( -1 == -1 )
{
tmp_in_4 = 2;
}
tmp_in_1 = int(MathPow(10.0,tmp_in_3 + 2)) * tmp_in_4 + tmp_in_2 * 100 + Para_1_in;
}
Local_10_in = tmp_in_1 ;
}
else
{
Local_11_in = Local_5_in ;
Local_12_in = Local_6_in ;
}
}
Local_13_in = 0 ;
Local_14_in = -1 ;
if ( Para_2_in == 1 )
{
Local_14_in = 0 ;
Local_13_in = 1 ;
}
if ( Para_2_in == -1 )
{
Local_14_in = 1 ;
Local_13_in = 2 ;
}
Local_15_do = 0.0 ;
if ( KeepOriginalProfitLotSize && Para_3_bo && GridLevelToStart > 1 && !(AutoSplit) )
{
Local_15_do = 0.01 ;
}
for (Local_16_in = 0 ; Local_16_in < M4OrdersTotal() ; Local_16_in ++)
{
if ( M4OrderSelect(Local_16_in,0,0) )
{
Local_17_in = M4OrderType() ;
Local_18_st = M4OrderSymbol() ;
Local_19_in = M4OrderMagicNumber() ;
Local_20_do = M4OrderLots() ;
Local_21_in=Local_19_in / 100;
if ( Para_1_in >= 0 && Local_18_st == Para_0_st && ( ( Local_19_in == Local_9_in && Local_17_in == Local_7_in ) || (Local_19_in == Local_10_in && Local_17_in == Local_8_in) ) )
{
if ( !(Para_3_bo) )
{
Local_2_do = Local_2_do + Local_20_do ;
}
else
{
if ( KeepOriginalProfitLotSize && Para_3_bo && GridLevelToStart > 1 && Local_15_do>Global_25_do && !(AutoSplit) )
{
Local_22_do=Local_19_in - Local_19_in / 100 * 100;
if ( Local_22_do == 0 )
{
Local_20_do = Local_15_do ;
}
if ( Local_22_do > 0 )
{
tmp_in_5 = Local_22_do;
tmp_do_6 = 1.0;
for (tmp_in_7 = 1 ; tmp_in_7 <= tmp_in_5 ; tmp_in_7=tmp_in_7 + 1)
{
if ( tmp_in_7 == 1 )
{
tmp_do_6 = TradeMultiplier_2nd;
}
if ( tmp_in_7 >= 2 && tmp_in_7 <= 4 )
{
tmp_do_6 = tmp_do_6 * TradeMultiplier_3rd;
}
if ( tmp_in_7 >= 5 )
{
tmp_do_6 = tmp_do_6 * TradeMultiplier_6th;
}
}
Local_20_do = Local_15_do * tmp_do_6 ;
}
}
Local_2_do = Local_2_do + Local_20_do ;
}
if ( !(AutoSplit) )
{
break;
}
}
if ( Para_1_in < 0 && Local_18_st == Para_0_st && ( ( Local_21_in == Local_11_in && Local_17_in == Local_7_in ) || (Local_21_in == Local_12_in && Local_17_in == Local_8_in) ) )
{
if ( !(Para_3_bo) )
{
Local_2_do = Local_2_do + Local_20_do ;
}
else
{
if ( KeepOriginalProfitLotSize && Para_3_bo && GridLevelToStart > 1 && Local_15_do>Global_25_do && !(AutoSplit) )
{
Local_23_do=Local_19_in - Local_19_in / 100 * 100;
if ( Local_23_do == 0 )
{
Local_20_do = Local_15_do ;
}
if ( Local_23_do > 0 )
{
tmp_in_8 = Local_23_do;
tmp_do_9 = 1.0;
for (tmp_in_10 = 1 ; tmp_in_10 <= tmp_in_8 ; tmp_in_10=tmp_in_10 + 1)
{
if ( tmp_in_10 == 1 )
{
tmp_do_9 = TradeMultiplier_2nd;
}
if ( tmp_in_10 >= 2 && tmp_in_10 <= 4 )
{
tmp_do_9 = tmp_do_9 * TradeMultiplier_3rd;
}
if ( tmp_in_10 >= 5 )
{
tmp_do_9 = tmp_do_9 * TradeMultiplier_6th;
}
}
Local_20_do = Local_15_do * tmp_do_9 ;
}
}
Local_2_do = Local_2_do + Local_20_do ;
}
}
}
else
{
Print(TradeComment + " " + Para_0_st,": Failed to select an order! Error=",lizong_11(M4GetLastError()));
}
}
return(Local_2_do);
}
void lizong_25( int Para_0_in)
{
string Local_1_st;
int Local_2_in;
int Local_3_in;
int Local_4_in;
int Local_5_in;
int Local_6_in;
int Local_7_in;
long Local_8_in;
int Local_9_in;
string Local_10_st;
double Local_11_do;
int Local_12_in;
double Local_13_do;
double Local_14_do;
datetime Local_15_do;
double Local_16_do;
double Local_17_do;
double tmp_do_1;
int tmp_in_2;
double tmp_do_3;
double tmp_do_4;
if ( M4OrdersTotal() == 0 ) return;
Local_1_st = Global_22_a_168_ko[Para_0_in].st_1 ;
Local_2_in=Global_24_in + UID;
Local_3_in=StringLen(IntegerToString(Local_2_in,0,32));
Local_4_in=Local_2_in + int(MathPow(10.0,Local_3_in));
Local_5_in=Local_2_in + int(MathPow(10.0,Local_3_in)) * 2;
if ( !(Global_29_bo) )
{
for (Local_6_in = 0 ; Local_6_in < 2 ; Local_6_in ++)
{
Local_7_in = 0 ;
if ( M4OrdersTotal() <= 0 ) continue;
for ( ; Local_7_in < M4OrdersTotal() ; Local_7_in ++)
{
if ( M4OrderSelect(Local_7_in,0,0) )
{
Local_8_in = M4OrderTicket() ;
Local_9_in = M4OrderType() ;
Local_10_st = M4OrderSymbol() ;
Local_11_do = M4OrderLots() ;
Local_12_in = M4OrderMagicNumber() ;
Local_13_do = M4OrderTakeProfit() ;
Local_14_do = M4OrderStopLoss() ;
Local_15_do = M4OrderOpenTime() ;
Local_16_do = M4OrderOpenPrice() ;
tmp_do_1 = 0.0;
if ( M4MarketInfo(Local_1_st,16) * Local_11_do>Global_25_do )
{
tmp_in_2 = (int)M4MarketInfo(Local_1_st,12);
tmp_do_3 = (M4OrderCommission() + M4OrderSwap()) / (M4MarketInfo(Local_1_st,16) * Local_11_do);
if ( M4MarketInfo(Local_1_st,11)>Global_25_do )
{
tmp_do_4 = M4MarketInfo(Local_1_st,11);
}
else
{
tmp_do_4 = 0.00001;
}
tmp_do_3 = tmp_do_3 * tmp_do_4;
tmp_do_1 = NormalizeDouble(tmp_do_3,tmp_in_2);
}
Local_17_do = tmp_do_1 ;
if ( Local_6_in == 0 && Local_9_in == 0 && Local_10_st == Local_1_st && Local_12_in / 100 == Local_4_in )
{
lizong_38(Para_0_in,Local_8_in,Local_9_in,Local_10_st,Local_11_do,Local_12_in,Local_13_do,
Local_14_do,Local_15_do,Local_16_do,Local_17_do);
}
if ( Local_6_in == 1 && Local_9_in == 1 && Local_10_st == Local_1_st && Local_12_in / 100 == Local_5_in )
{
lizong_39(Para_0_in,Local_8_in,Local_9_in,Local_10_st,Local_11_do,Local_12_in,Local_13_do,
Local_14_do,Local_15_do,Local_16_do,Local_17_do);
}
}
else
{
Print(TradeComment + " " + Local_1_st,": Failed to select an order! Error=",lizong_11(M4GetLastError()));
}
}
}
}
}
void lizong_26( int Para_0_in)
{
string Local_1_st;
int Local_2_in;
int Local_3_in;
int Local_4_in;
int Local_5_in;
int Local_6_in;
int Local_7_in;
int Local_8_in;
int Local_9_in;
long Local_10_in;
int Local_11_in;
string Local_12_st;
double Local_13_do;
int Local_14_in;
double Local_15_do;
double Local_16_do;
long Local_17_lo;
double Local_18_do;
bool Local_19_bo;
bool Local_20_bo;
if ( M4OrdersTotal() == 0 ) return;
Local_1_st = Global_22_a_168_ko[Para_0_in].st_1 ;
Local_2_in=Global_24_in + UID;
Local_3_in=StringLen(IntegerToString(Local_2_in,0,32));
Local_4_in=Local_2_in + int(MathPow(10.0,Local_3_in));
Local_5_in=Local_2_in + int(MathPow(10.0,Local_3_in)) * 2;
Local_6_in = M4OrdersTotal() ;
if ( Local_6_in > 99 )
{
Local_6_in = 99 ;
}
for (Local_7_in = 0 ; Local_7_in < 2 ; Local_7_in ++)
{
Local_8_in = 0 ;
if ( Local_6_in <= 0 ) continue;
for ( ; Local_8_in < Local_6_in ; Local_8_in ++)
{
Local_9_in = 0 ;
if ( M4OrdersTotal() <= 0 ) continue;
for ( ; Local_9_in < M4OrdersTotal() ; Local_9_in ++)
{
if ( M4OrderSelect(Local_9_in,0,0) )
{
Local_10_in = M4OrderTicket() ;
Local_11_in = M4OrderType() ;
Local_12_st = M4OrderSymbol() ;
Local_13_do = M4OrderLots() ;
Local_14_in = M4OrderMagicNumber() ;
Local_15_do = M4OrderTakeProfit() ;
Local_16_do = M4OrderStopLoss() ;
Local_17_lo = M4OrderOpenTime() ;
Local_18_do = M4OrderOpenPrice() ;
if ( Local_7_in == 0 && Local_11_in == 0 && Local_12_st == Local_1_st && Local_14_in / 100 == Local_4_in )
{
Local_19_bo = lizong_44(Para_0_in,Local_10_in,Local_11_in,Local_12_st,Local_13_do,Local_14_in,Local_15_do,Local_16_do,Local_17_lo,Local_18_do) ;
if ( Local_19_bo )
{
break;
}
}
if ( Local_7_in == 1 && Local_11_in == 1 && Local_12_st == Local_1_st && Local_14_in / 100 == Local_5_in )
{
Local_20_bo = lizong_45(Para_0_in,Local_10_in,Local_11_in,Local_12_st,Local_13_do,Local_14_in,Local_15_do,Local_16_do,Local_17_lo,Local_18_do) ;
if ( Local_20_bo )
{
break;
}
}
}
else
{
Print(TradeComment + " " + Local_1_st,": Failed to select an order! Error=",lizong_11(M4GetLastError()));
}
}
}
}
}
void lizong_27()
{
double Local_1_do_ko[];
int Local_2_in;
int Local_3_in;
ArrayResize(Local_1_do_ko,Global_12_in,0);
ArrayFill(Local_1_do_ko,0,Global_12_in,0.0);
Local_2_in = -1 ;
Global_19_in = -1 ;
if ( SmartTP )
{
Local_2_in=-1 + 1;
Local_1_do_ko[Local_2_in] = 58775.01158022;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 3854.012011184;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 39358.01174733;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1269.011355758;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 56140.01164918;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64530.01196917;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 60307.01246761;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 6648.014426477;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 45131.01330754;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 7950.01201108;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 45131.01330601;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 60854.01428551;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 65055.01297945;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 9460.013983523;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 10540.01337538;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 4544.014977765;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 248.0143470455;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61247.0136825;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 52086.0134722;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63574.01398307;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 47413.01467299;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 4155.014336146;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2704.015830312;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 9089.014985123;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 45154.01433637;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 216.014348892;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 22495.01993742;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 9381.020399422;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 60747.01945847;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 65444.01670228;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 65217.01617163;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64233.01657642;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 48506.01584509;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 33278.01883977;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 8650.017266761;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 48737.01661989;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 35446.0173142;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 55737.01834805;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 22494.01992731;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 15784.01696432;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63403.01613634;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 42600.01646525;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 36063.01684867;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 41629.01739422;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 62737.01369688;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 45131.01330601;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 39673.0184521;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 48616.01696441;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 22822.01496536;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 9429.011354072;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 4667.014336799;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2659.013857216;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 885.0113855871;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 60747.01481364;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63709.01464703;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 9883.012018778;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 65481.01889697;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 6652.014425881;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 45131.01330867;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1016.014955805;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 9460.013983523;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 8284.018428598;
}
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 57309.01392841;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 13471.01393551;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 62737.01369688;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 65243.01422747;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 18653.01429452;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 12883.01589119;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 17668.0156589;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61870.01519367;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 26663.01437642;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 22666.01491749;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 11113.01466572;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61047.01463275;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 5163.014844659;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 44787.01421445;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 40165.01459569;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 23094.01496487;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2643.015406373;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 5197.014638163;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 4109.014394233;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 5323.01428411;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64308.01410924;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1851.013989072;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 25753.01453975;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 39664.01845956;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 60744.01959539;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2651.020666013;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 29873.01918727;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64156.01948546;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 7404.017344148;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 56105.01633881;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64950.01613449;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 53211.01670127;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 60156.01615407;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 40079.01584289;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64857.01557208;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 547.0162711932;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64866.01602218;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 7149.016702509;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64370.01570261;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 10444.01640047;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 57251.01603322;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63101.01634664;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2348.016326638;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 57251.01603322;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 6310.011802273;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 47990.01192367;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 8555.011328002;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 7442.011792083;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 19612.01145358;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1697.011001875;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 43477.0108115;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 46429.01090545;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 60377.01181679;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 3726.012653958;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 837.0122232008;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 5164.012393892;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 6717.012155909;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 59263.01198725;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 16432.01451182;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63387.01420649;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 13229.01392075;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 23889.01351881;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 928.0142407292;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 3031.013743902;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2221.013470928;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 52513.01329229;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 36565.01402667;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 910.0137729072;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2770.013600246;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 3064.013876089;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1755.013118797;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63219.01358184;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 3441.013430833;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61433.01289695;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 3852.013463712;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1755.012100862;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 20622.01368159;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 3852.013463712;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 4264.013583712;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 4264.013583712;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 21333.01387241;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 62934.01251469;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 56687.01271473;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 54267.01328379;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 65375.01365708;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 31095.01427242;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64255.01373438;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 48058.01300547;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61428.012654;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 35181.01479144;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63643.0154672;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 45936.01556469;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 10320.01551479;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 62218.01447119;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 44139.01458713;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 22822.01496536;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 5196.014638125;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 5315.014284631;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 627.0141667045;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2329.013082898;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 574.0145977273;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 65391.01476261;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 35427.01384144;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 26273.01415376;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 60782.01794053;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 12492.0194133;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2452.019703333;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 59819.01618939;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61780.01628349;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 65105.01662631;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61390.01535454;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 60092.01615633;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64793.01557475;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 422.0161619697;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 62818.01602322;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 7085.016703258;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 48490.0159386;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 38570.01618589;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 9422.016099063;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 65333.01563527;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 4696.016474811;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64793.01602974;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 62589.01635285;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 65034.01592282;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61363.01583589;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64330.01020252;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2433.012330341;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2221.012248845;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 58964.01254474;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 49014.01192558;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63925.00960272;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 15798.01179155;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 11048.01204053;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 17565.01145348;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1700.011005076;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 4447.011557045;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 797.0113839205;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1606.012653826;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 17092.01240473;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 27297.01221147;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63359.01199056;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61811.01297195;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 16416.01451531;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 65435.01421039;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 23897.01352519;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2976.014242831;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2951.013743267;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 52183.01402705;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 60051.01456152;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 54130.01405045;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 399.0137739015;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 722.013601553;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 20910.01368195;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63218.01358308;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 11571.01343113;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63300.0130937;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 12456.01358552;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 56265.01031179;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 6840.012158352;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 26272.01298145;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 3406.013386619;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 12765.0118572;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 9397.011358523;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64420.00960795;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 53460.00980464;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 27809.01180436;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 4999.011699432;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 9545.010567519;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61341.01175994;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 41941.01081364;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 11418.01181061;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 48975.01144347;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 4479.011554545;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 8989.011381345;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 60369.01182045;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 3276.012656042;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 17221.01222742;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63351.01198748;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 65152.0135328;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 3630.013954687;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1856.014249953;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 3015.01374572;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 36567.01402781;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 16981.01390998;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1747.013121383;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 735.0121057197;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 17268.01222799;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 6292.0123616;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61421.0130191;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 21032.01438019;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63201.01366268;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 3015.01374572;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 16647.01573295;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 635.0138940341;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 55002.0122268;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 62254.01501761;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 12947.01589384;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 59321.01548826;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 5190.016007273;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 10576.01551276;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 62862.01519499;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 12546.01440332;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 48082.01486509;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 26809.01506428;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 62219.01446873;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61171.01421608;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 6718.014964422;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64268.01411022;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61046.01463234;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 54985.01946629;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 3931.020664489;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 13479.02039716;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61290.01945805;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 9361.01924536;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 13062.01894559;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 65014.01613473;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 55213.01693375;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 388.0161624527;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 690.0163215909;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64874.01602347;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 12741.01614296;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61908.01628101;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 62322.01405152;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 398.0137752178;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2258.013603097;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 3379.013433182;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 48657.01311622;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 6198.014966373;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 13.01439551136;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64292.01411114;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 54763.01601634;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 38826.01618771;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 65247.0142268;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 13011.0158911;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 27943.01549838;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61606.01519364;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 40101.01459483;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 6206.014965862;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 77.0143927178;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2073.013081402;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 6175.018758428;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 3907.020667027;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 36315.01670303;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 48234.01593876;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 10445.01640248;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64795.01602865;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 52184.01182288;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2629.012066146;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1639.012648759;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 836.0122299432;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 17204.01223163;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 65397.01199134;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 65179.01420997;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 56609.01329214;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 35543.01402632;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 62099.01456007;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 20654.01368307;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 60866.01366031;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 11563.01343161;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 58775.01557738;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2851.016005265;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 10490.01571146;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 13750.0154139;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61819.01297205;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 62861.01423976;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 210.0161590246;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 22575.01496553;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64324.01410996;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 771.0186513258;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 12906.01467613;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1349.015917727;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 22067.01929612;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 9351.019477102;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 13066.01894816;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 11557.01668195;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 18841.01608823;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 44426.01495178;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61331.01583266;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 6182.014966477;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 16725.01387396;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 10701.01640389;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 9416.016098703;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 11416.01181476;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 13477.02039932;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 4872.019235492;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 45513.01928348;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 6183.019680473;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 17522.01911291;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 14544.01618753;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 35541.01402647;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 62780.01397489;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 16910.01364792;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 16613.0133896;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 49005.01608724;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1119.015516392;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 21264.01508722;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63343.01488099;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64992.01434217;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 10842.01523296;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 9519.015378333;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 21543.01564866;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64909.01513704;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 51170.01467243;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 4892.01449553;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63321.01395811;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 54416.01475575;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 11645.0146381;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64255.01373438;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 10465.0144106;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 8294.016047983;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 62188.01252236;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 19305.01669887;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 50555.01332981;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1128.016370417;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 56942.01639359;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 25840.01660438;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 6155.017036544;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 40009.01393721;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 53871.01700154;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 9355.017067311;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 40156.01663305;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 44767.01293335;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 9996.016453002;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 51550.01326464;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 65000.01434072;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 56059.01323903;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 23541.01701494;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64425.01570618;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 9304.014352055;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 6917.014490909;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61862.01630003;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63481.01486609;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61360.01644927;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 58873.01664922;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64614.01347494;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63437.01270191;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 45037.01301862;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 8657.013331013;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63563.01602347;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 48490.01584416;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 54448.01475665;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2273.014411288;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 3807.012108958;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 53682.01457561;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 4626.013807017;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 62712.01463289;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 9515.015378485;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1688.016103854;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 9376.014633722;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 17005.01676512;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 51174.01467303;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 10903.01650006;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 16649.01689754;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 4557.016143011;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1087.016112169;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 60666.01589207;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 7780.014078191;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1826.016364498;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 55286.01308316;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 60318.01598253;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 409.0126363542;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 62493.01262849;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 3144.012697102;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 816.01689375;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 6189.016596307;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61171.01421328;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 18840.01609098;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 56717.0151377;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 48873.01657642;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 3657.013662689;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 38314.01618546;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1916.013339555;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 390.0144965246;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 51703.01271346;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63313.01395756;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 5980.013519356;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 14188.01642238;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 62902.01596231;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63428.01309241;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 60381.01738902;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 48477.01091287;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 56795.01954348;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 35423.01605786;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 65441.01669926;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 6901.017011866;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 36605.01596594;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61870.01629715;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 57185.01644852;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63764.01661937;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64630.01347598;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61238.01651973;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 16715.01689844;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61338.01270005;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 48118.01323105;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1079.016112992;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 59326.01560837;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 11579.01343258;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64466.01269705;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61639.01602384;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 55294.01308541;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 4956.013521297;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 48474.01584589;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 10540.01633083;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 12984.01358776;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 54955.01318312;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 11563.01343161;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 43477.0108115;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 192.0185782197;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64810.01608257;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 13419.01558728;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 65221.01616853;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64519.0164206;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64300.0141106;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 51120.0159382;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 1122.013547756;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 16482.01354835;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 4616.012207945;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 39673.0184521;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 61151.01293346;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 58280.01336552;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 51839.01606055;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 54130.01405045;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 22491.01541652;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 526.0136482102;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2258.0134966;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 16806.01208334;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 4520.010874953;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 16482.0191152;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 9883.012018778;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 7950.01201108;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 2442.013018684;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 17506.01354839;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 18713.01308448;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 785.0162674716;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64858.01196998;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63817.01605056;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 62899.01609798;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 690.0163181061;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 7084.016704384;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 63966.01331726;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 25298.01419737;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 64332.01410942;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 7736.013030312;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 5635.013818911;
Local_2_in ++;
Local_1_do_ko[Local_2_in] = 10340.01359628;
Local_2_in ++;
for (Local_3_in = 0 ; Local_3_in < Local_2_in ; Local_3_in ++)
{
Global_19_in ++;
Global_17_lo_ko[Global_19_in] = Local_1_do_ko[Local_3_in];
Global_18_do_ko[Global_19_in] = (int(Local_1_do_ko[Local_3_in]) - int(Local_1_do_ko[Local_3_in])) * 66.0;
}
}
void lizong_28( int Para_0_in)
{
string Local_1_st;
int Local_2_in;
int Local_3_in;
int Local_4_in;
double Local_5_do;
double Local_6_do;
string Local_7_st;
int Local_8_in;
double Local_9_do;
double Local_10_do;
int Local_11_in;
int Local_12_in;
double Local_13_do;
string tmp_st_1;
int tmp_do_2;
int tmp_in_3;
int tmp_lo_4=0;
double tmp_do_5;
Local_1_st = Global_22_a_168_ko[Para_0_in].st_1 ;
Local_2_in = 1 ;
if ( Global_22_a_168_ko[Para_0_in].bo_18 != 0x0 )
{
Local_2_in = 96 ;
}
for (Local_3_in = 0 ; Local_3_in < Local_2_in ; Local_3_in ++)
{
Local_4_in = 16 ;
Local_5_do = 0.002 ;
Local_6_do = 0.0 ;
Local_7_st = "" ;
Global_22_a_168_ko[Para_0_in].lo_16 = 0;
Global_22_a_168_ko[Para_0_in].do_17 = 0.0;
if ( M4iBars(Local_1_st,Global_21_in) < Local_4_in * 2 + Local_3_in )
{
return;
}
for (Local_8_in = 1 ; Local_8_in <= Local_4_in ; Local_8_in ++)
{
Local_9_do = M4iClose(Local_1_st,Global_21_in,Local_8_in + Local_3_in) ;
Local_10_do = M4iOpen(Local_1_st,Global_21_in,Local_8_in + Local_3_in) ;
Local_6_do = Local_6_do + Local_9_do ;
if ( Local_9_do - Local_10_do>=0.0 )
{
Local_7_st +="1";
}
else
{
Local_7_st +="0";
}
}
Global_22_a_168_ko[Para_0_in].do_17 = Local_6_do / Local_4_in;
tmp_st_1 = Local_7_st;
tmp_do_2 = 0;
for (tmp_in_3 = 0 ; tmp_in_3 < StringLen(tmp_st_1) ; tmp_in_3=tmp_in_3 + 1)
{
if ( StringGetCharacter(tmp_st_1,tmp_in_3) == 49 )
{
tmp_lo_4=tmp_do_2 * 2 + 1;
}
}
Global_22_a_168_ko[Para_0_in].lo_16 = tmp_lo_4;
if ( Global_22_a_168_ko[Para_0_in].bo_5 == 0x0 && Global_22_a_168_ko[Para_0_in].bo_6 == 0x0 && Global_22_a_168_ko[Para_0_in].bo_19 == 0x0 && Global_22_a_168_ko[Para_0_in].bo_20 == 0x0 )
{
return;
}
for (Local_11_in=Global_12_in / 100 - 1 ; Local_11_in >= 0 ; Local_11_in --)
{
Local_12_in=(Local_11_in + 1) * 100 - 1;
if ( Local_12_in < Local_11_in * 100 ) continue;
for ( ; Local_12_in >= Local_11_in * 100 ; Local_12_in --)
{
if ( Global_18_do_ko[Local_12_in]<Global_25_do ) break;
if ( Global_22_a_168_ko[Para_0_in].do_17<Global_18_do_ko[Local_11_in * 100] ) break;
Local_13_do = 1.0 ;
if ( Global_18_do_ko[Local_12_in]<0.0 )
{
Local_13_do = -1.0 ;
}
tmp_do_5 = Local_5_do * Local_13_do;
if ( !(Global_22_a_168_ko[Para_0_in].do_17<(Local_5_do * Local_13_do + 1.0) * Global_18_do_ko[Local_12_in]) || !(Global_22_a_168_ko[Para_0_in].do_17>(1.0 - tmp_do_5) * Global_18_do_ko[Local_12_in]) || Global_22_a_168_ko[Para_0_in].lo_16 != Global_17_lo_ko[Local_12_in] ) continue;
Global_22_a_168_ko[Para_0_in].bo_5 = false;
Global_22_a_168_ko[Para_0_in].bo_6 = false;
Global_22_a_168_ko[Para_0_in].bo_19 = false;
Global_22_a_168_ko[Para_0_in].bo_20 = false;
break;
}
}
}
Global_22_a_168_ko[Para_0_in].bo_18 = false;
}
void lizong_29()
{
double Local_1_do = 0.0;
double Local_2_do;
double tmp_do_1;
int tmp_in_2;
int tmp_in_3;
int tmp_in_4;
int tmp_in_5;
string tmp_st_6;
int tmp_in_7;
int tmp_in_8;
int tmp_in_9;
int tmp_in_10;
int tmp_in_11;
double tmp_do_12;
int tmp_in_13;
int tmp_in_14;
int tmp_in_15;
int tmp_in_16;
string tmp_st_17;
int tmp_in_18;
int tmp_in_19;
int tmp_in_20;
int tmp_in_21;
int tmp_in_22;
if ( MaximumDrawdown>Global_25_do && MaximumDrawdown<99.99 )
{
if ( DrawdownCalculation == 1 )
{
tmp_do_1 = 0.0;
tmp_in_2 = Global_24_in + UID + int(MathPow(10.0,StringLen(IntegerToString(Global_24_in + UID,0,32)) ));
tmp_in_3 = Global_24_in + UID + int(MathPow(10.0,StringLen(IntegerToString(Global_24_in + UID,0,32)) )) * 2;
for (tmp_in_4 = 0 ; tmp_in_4 < M4OrdersTotal() ; tmp_in_4=tmp_in_4 + 1)
{
if ( M4OrderSelect(tmp_in_4,0,0) )
{
tmp_in_5 = M4OrderType();
M4OrderSymbol();
tmp_in_7 = M4OrderMagicNumber() / 100;
if ( ( ( tmp_in_5 != 0 || tmp_in_2 != tmp_in_7 ) && (tmp_in_5 != 1 || tmp_in_3 != tmp_in_7) ) ) continue;
tmp_do_1 = M4OrderProfit() + M4OrderSwap() + M4OrderCommission() + tmp_do_1;
continue;
}
Print(TradeComment + " " + "------",": Failed to select an order! Error=",lizong_11(M4GetLastError()));
}
Local_1_do = -(tmp_do_1);
}
if ( DrawdownCalculation == 0 )
{
Local_1_do = AccountInfoDouble(ACCOUNT_BALANCE) - AccountInfoDouble(ACCOUNT_EQUITY) ;
}
if ( Local_1_do>MaximumDrawdown / 100.0 * AccountInfoDouble(ACCOUNT_BALANCE) )
{
if ( MaximumDrawdownAction == 0 )
{
Global_29_bo = true ;
Global_30_in = 24 ;
for (tmp_in_8 = 0 ; tmp_in_8 < ArraySize(Global_22_a_168_ko) ; tmp_in_8=tmp_in_8 + 1)
{
Global_22_a_168_ko[tmp_in_8].bo_5 = false;
Global_22_a_168_ko[tmp_in_8].bo_6 = false;
}
}
if ( MaximumDrawdownAction == 1 )
{
Global_29_bo = true ;
Global_31_bo = true ;
for (tmp_in_9 = 0 ; tmp_in_9 < ArraySize(Global_22_a_168_ko) ; tmp_in_9=tmp_in_9 + 1)
{
Global_22_a_168_ko[tmp_in_9].bo_5 = false;
Global_22_a_168_ko[tmp_in_9].bo_6 = false;
Показано первые 50% кода (символов: 186436)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.