North East Way EA
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «north east way1.306_.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Советник North East Way EA версии 1.306 работает на платформе MetaTrader 4 и торгует исключительно на таймфрейме M15. Он анализирует коррелированные валютные пары и открывает позиции по средней цене возврата во флэтовых рынках. Советник использует сеточную стратегию усреднения с несколькими наборами параметров, виртуальный take-profit, экстренное закрытие при выходе в безубыток и режим восстановления убыточных позиций. Поддерживается мультивалютный режим на одном графике, автоматический расчёт лота на основе баланса или equity, а также фиксированный лот.
Настройки программы
| Настройка | Описание |
|---|---|
| _base_ | Базовые настройки — Текстовый разделитель группы базовых настроек советника. |
| MultiCurrency | Мультивалютный режим — Включает режим торговли несколькими парами на одном графике в формате OneChartSetup. |
| comment | Префикс комментария — Текстовый префикс, добавляемый к комментарию каждой открытой сделки. |
| FirstPositionp | Первая позиция — Определяет тип первой позиции: не открывать, короткую, длинную или обе одновременно. |
| fastClose | Аварийное закрытие — Включает экстренное закрытие позиций при достижении безубыточности. |
| holidays | Праздничные дни — Задаёт продолжительность выходных после Нового года: 0 — 14 дней, 1 — 7 дней, 2 — 2 дня. |
| useVirtualTP | Виртуальный тейк-профит — Включает использование виртуального тейк-профита для управления сделками. |
| _mm_ | Настройки управления капиталом — Текстовый разделитель группы настроек управления денежными средствами. |
| MaxOtherMagics | Максимум магических номеров — Ограничивает количество ордеров с другими магическими номерами на счёте. |
| MaxOtherSymbols | Максимум символов — Ограничивает количество торговых символов с открытыми позициями на счёте. |
| BaseForLotCalc | База для расчёта лота — Указывает, на основе чего рассчитывается автоматический лот: баланс или equity. |
| virtBalance | Виртуальный баланс — Дополнительные средства в валюте счёта, добавляемые к реальному балансу при расчёте лота. |
| fix_balance | Фиксированный баланс — Фиксированная сумма баланса в валюте счёта для расчёта размера лота. |
| USD_for_001 | USD на 0.01 лот — Параметр автоматического расчёта лота: агрессивное значение 1000, консервативное 5000. |
| Lots | Фиксированный лот — Фиксированный размер лота, используемый при отключённом автоматическом расчёте. |
| _aver_ | Настройки усреднения — Текстовый разделитель группы настроек усреднения позиций. |
| UseUnloss | Режим восстановления — Включает режим восстановления убыточных позиций путём добавления новых сделок. |
| LotsMartinp | Коэффициент Мартингейла — Множитель увеличения лота при каждом следующем уровне усреднения. |
| _grid_ | Настройки уровней сетки — Текстовый разделитель группы настроек уровней сетки. |
| FirstNumberp | Первый реальный ордер — Номер первого реального ордера от данного уровня (n>=0); более ранние уровни виртуализируются. |
Поиск по коду файла
#property version "1.306"
#property strict
#property description "Advisor trade the average price return on non-trending pairs correlated with each other.\nUse ECN accounts with a minimum spread and commissions.\nWhen EA trades, many small transactions are simultaneously opened on the account.\nThis allows you to diversify trading entrances and exits from the market."
enum TypeOfSets {Multi_Sets_123_sbig_15adv = 7,Multi_Sets_123_small_3adv = 6,Multi_Sets_123_big_9adv = 5,Multi_Set_3_3advisors = 4,Multi_Set_2_3advisors = 3,Multi_Set_1_3advisors = 2,Custom = 1 };
enum NY_Weekends {days_0 = 2,days_7 = 1,days_14 = 0 };
enum FirstPositiontype {NotOpen = 4,Short = 3,Long = 2,Long_and_Short = 1 };
enum TypeBFLC {balance = 1,equity = 0 };
enum typeord {all = -1,sell_stop = 5,buy_stop = 4,sell_limit = 3,buy_limit = 2,sell = 1,buy = 0 };
struct _sets
{
string st_1;
int in_2;
double do_3;
double do_4;
double do_5;
double do_6;
double do_7;
double do_8;
void _sets_8();
void _sets_9();
void _sets_10();
void _sets_11();
};
extern string _base_="=========Basic settings=========" ;
extern string MultiCurrency="" ; //OneChartSetup multi currency mode.
extern string comment="new" ; //Prefix for comment
extern FirstPositiontype FirstPositionp=1 ; //First Position
extern bool fastClose=false ; //Emergency closing at breakeven
extern int nmbrThisServer=1 ; //For magic: 0 to 99
extern NY_Weekends holidays=0 ; //Duration of the weekend after the New Year
extern bool useVirtualTP=false ; //Using a virtual take-profit?
extern string _mm_="=========Money Management Settings=========" ;
extern int MaxOtherMagics=0 ; //Number of magics no more:
extern int MaxOtherSymbols=0 ; //Number of symbols no more:
extern TypeBFLC BaseForLotCalc=0 ; //For autolot use
extern double virtBalance=0 ; //Additional funds in account currency
extern double fix_balance=0 ; //Or use fix balance in account currency
extern double USD_for_001=0 ; //AutoMM. Aggressive=1000, Conservative=5000.
extern double Lots=0.01 ; //Fix lot if AutoMM=0
extern string _aver_="=========Averaging Settings=========" ;
extern bool UseUnloss=true ; //Recovery Mode
extern double LotsMartinp=2.5 ; //Martin ratio
extern string _grid_="=========Grid Level Settings=========" ;
extern int FirstNumberp=3 ; //First real deal from this level n>=0
string global_1_st = "1.306";
_sets global_2_a_160_ko[];
int global_3_in = 7;
string global_4_st = "";
int global_5_in = 15;
bool global_6_bo = true;
int global_7_in = 0;
int global_8_in = 1;
int global_9_in = -858993459;
int global_10_in = 1072745676;
int global_11_in = 1717986918;
short global_12_sh = 1072719462;
string global_13_st = "=========Execution Settings=========";
int global_14_in = 0;
int global_15_in = 0;
bool global_16_bo = true;
double global_17_do = 0.0;
int global_18_in = 0;
int global_19_in = 400;
int global_20_in = 800;
double global_21_do = 1.4;
int global_22_in = 14;
double global_23_do = 0.0143;
bool global_24_bo = true;
int global_25_in = 0;
int global_26_in = 0;
int global_27_in = 0;
double global_28_do = 0.7;
double global_29_do = 0.9;
int global_30_in = 70;
double global_31_do = 1.5;
double global_32_do = 0.9;
double global_33_do = 0.0;
double global_34_do = 0.0;
double global_35_do = 1.0;
double global_36_do = 1.0;
double global_37_do = 100.0;
string global_38_st = "Настройки ограничения лота";
bool global_39_bo = true;
double global_40_do = 100.0;
bool global_41_bo = true;
double global_42_do = 0.0;
int global_43_in = 70;
int global_44_in = 50;
int global_45_in = 6;
string global_46_st = "=========Tester Settings=========";
bool global_47_bo = false;
bool global_48_bo = false;
bool global_49_bo = false;
string global_50_st = "";
int global_51_in = 0;
int global_52_in = 0;
double global_53_do = 0.0;
int global_54_in = 0;
double global_55_do = 0.0;
double global_56_do = 0.0;
double global_57_do = 0.0;
double global_58_do = 0.0;
int global_59_in = 0;
int global_60_in = 0;
int global_61_in = 0;
int global_62_in = 0;
int global_63_in = 0;
int global_64_in = 0;
int global_65_in = 0;
int global_66_in = 0;
int global_67_in = 0;
int global_68_in = 0;
double global_69_do = 0.0;
int global_70_in = 0;
int global_71_in = 0;
double global_72_in = 0;
int global_73_in = 0;
int global_74_in = 0;
int global_75_in = 0;
int global_76_in = 0;
bool global_77_bo = false;
int global_78_in_si100si15[100][15];
int global_79_in = 0;
int global_80_in = 0;
int global_81_in = 0;
int global_82_in = 0;
int global_83_in = 0;
int global_84_in = 0;
double global_85_do_si7si10000[7][10000];
string global_86_st_si40000[40000]= {};
int global_87_in_si40000[40000];
int global_88_in = 0;
int global_89_in = 0;
int global_90_in = 0;
double global_91_do = 0.0;
double global_92_do = 0.0;
string global_93_st;
int global_94_in = 0;
int r1;
int global_95_in = 0;
int global_96_in = 0;
int global_97_in = 0;
int global_98_in = 1;
string global_99_st_si1[1]= {};
double global_100_do_si1[1];
bool global_101_bo = true;
int global_102_in = 0;
int global_103_in = 0;
bool global_104_bo = false;
bool global_105_bo = false;
int global_106_in = 0;
int global_107_in = 0;
int global_108_in = 0;
int global_109_in = 0;
string global_110_st;
string global_111_st;
string global_112_st = "";
string global_113_st = "";
int global_114_in = 2263842;
int global_115_in = 0;
int global_116_in = 0;
string global_117_st = "no_drawdown";
int global_118_in = 0;
int global_119_in = 0;
string global_120_st = "";
bool global_121_bo = false;
double global_122_do_si6si5si2[6][5][2];
bool global_123_bo = true;
string global_124_st_ko[];
double global_125_do = 0.0;
double global_126_do = 0.0;
double global_127_do = 0.0;
double global_128_do = 0.0;
double global_129_do = 0.0;
double global_130_do = 0.0;
double global_131_do_ko[];
int OnInit()
{
// код доступен только после оплаты
}
void OnTick()
{
// код доступен только после оплаты
}
void OnTimer()
{
if(IsTesting())
return;
fun_27();
}
double OnTester()
{
ArrayResize(global_131_do_ko,global_89_in - 1,0);
for(int local_2_in = 1 ; local_2_in < global_89_in ; local_2_in ++)
{
global_131_do_ko[local_2_in - 1] = global_85_do_si7si10000[3][local_2_in] / global_85_do_si7si10000[3][local_2_in - 1] - 1.0;
}
ArraySetAsSeries(global_131_do_ko,true);
double local_3_do = iMAOnArray(global_131_do_ko,0,global_89_in - 1,0,0,0) ;
double local_4_do = iStdDevOnArray(global_131_do_ko,0,global_89_in - 1,0,0,0) ;
if(local_4_do!=0.0)
{
return(local_3_do / local_4_do);
}
return(0.0);
}
int deinit()
{
if(IsTesting() && global_47_bo)
{
fun_22();
}
if(IsTesting() && global_48_bo)
{
fun_21();
}
for(int local_2_in = 0 ; local_2_in < global_98_in ; local_2_in ++)
{
global_50_st = global_99_st_si1[local_2_in] ;
for(int local_3_in = 1 ; local_3_in <= global_8_in ; local_3_in ++)
{
global_93_st = IntegerToString(local_3_in,2,48) ;
global_26_in = StringToInteger((StringLen(global_50_st) != 6)?"99":fun_20(StringSubstr(global_50_st,0,3)) + fun_20(StringSubstr(global_50_st,3,3)) + global_93_st) ;
if(IsTesting())
{
GlobalVariableDel(string(IsTesting()) + "NUMBER" + global_50_st + string(global_26_in));
GlobalVariableDel(string(IsTesting()) + "iBands_period" + global_50_st + string(global_26_in));
GlobalVariableDel(string(IsTesting()) + "Distance_Price" + global_50_st + string(global_26_in));
GlobalVariableDel(string(IsTesting()) + global_50_st + string(global_26_in) + "peak");
GlobalVariableDel(string(IsTesting()) + "Magic" + global_50_st + string(global_26_in));
GlobalVariableDel(string(IsTesting()) + global_50_st + string(global_26_in) + "tp");
GlobalVariableDel(string(IsTesting()) + global_50_st + "0" + string(global_26_in));
GlobalVariableDel(string(IsTesting()) + global_50_st + "1" + string(global_26_in));
}
}
}
return(0);
}
int fun_12()
{
int local_2_in = 0;
global_129_do = MarketInfo(global_50_st,13) ;
global_125_do = MarketInfo(global_50_st,13) * MarketInfo(global_50_st,11) ;
global_126_do = MarketInfo(global_50_st,10) ;
global_127_do = MarketInfo(global_50_st,9) ;
global_128_do = MarketInfo(global_50_st,11) ;
global_130_do = 0.0 ;
if(iClose(global_50_st,0,1)>0.0)
{
global_130_do = (MathAbs(global_127_do / iClose(global_50_st,0,1) - 1.0)) * 10000.0 ;
}
if(global_127_do>global_55_do)
{
ObjectDelete(0,"DD");
if((FirstPositionp == 1 || FirstPositionp == 3))
{
local_2_in = 2 ;
global_53_do = 0.00001 / global_128_do * MathPow(global_31_do,MathLog(global_18_in / 100.0) / 0.6931471805599) * global_30_in / MathPow(global_31_do,2.0) * global_127_do + global_28_do * MathPow(global_29_do,global_14_in) * (global_127_do - global_56_do) / global_128_do ;
}
}
if(global_126_do<global_57_do)
{
ObjectDelete(0,"DD");
if((FirstPositionp == 1 || FirstPositionp == 2))
{
local_2_in = 1 ;
global_53_do = 0.00001 / global_128_do * MathPow(global_31_do,MathLog(global_18_in / 100.0) / 0.6931471805599) * global_30_in / MathPow(global_31_do,2.0) * global_127_do + global_28_do * MathPow(global_29_do,global_14_in) * (global_56_do - global_127_do) / global_128_do ;
}
}
return(local_2_in);
}
void fun_13()
{
global_58_do = iStdDev(global_50_st,0,global_18_in,1,3,0,-1) * global_21_do ;
if(global_24_bo == true)
{
double local_1_do = funs11(global_14_in, global_18_in) ;
if(local_1_do>0.0)
{
global_58_do = MathMax(global_58_do,local_1_do) ;
}
}
global_56_do = iMA(global_50_st,0,global_18_in,1,3,0,-1) ;
global_55_do = global_56_do + global_58_do ;
global_57_do = global_56_do - global_58_do ;
global_52_in = global_27_in ;
}
void fun_14(double para_0_do,double para_1_do,double para_2_do,datetime para_3_boxda)
{
bool local_1_bo = false;
double local_2_do = 0.0;
double local_3_do = 0.0;
double local_4_do = 0.0;
double local_5_do = 0.0;
double local_6_do = 0.0;
int local_7_in = MarketInfo(OrderSymbol(),12) ;
int local_8_in = 0 ;
int local_9_in = 0 ;
string local_10_st = " Автор функции для:" ;
if(para_0_do<=0.0)
{
para_0_do = OrderOpenPrice() ;
}
if(para_1_do<0.0)
{
para_1_do = OrderStopLoss() ;
}
if(para_2_do<0.0)
{
para_2_do = OrderTakeProfit() ;
}
para_0_do = NormalizeDouble(para_0_do,local_7_in) ;
para_1_do = NormalizeDouble(para_1_do,local_7_in) ;
para_2_do = NormalizeDouble(para_2_do,local_7_in) ;
local_2_do = NormalizeDouble(OrderOpenPrice(),local_7_in) ;
local_5_do = NormalizeDouble(OrderStopLoss(),local_7_in) ;
local_6_do = NormalizeDouble(OrderTakeProfit(),local_7_in) ;
if((!(para_0_do!=local_2_do) && !(para_1_do!=local_5_do) && !(para_2_do!=local_6_do)))
return;
for(local_9_in = 1 ; local_9_in <= 5 ; local_9_in ++)
{
if((!(IsTesting()) && (!(IsExpertEnabled()) || IsStopped() != 0)))
return;
RefreshRates();
local_1_bo = OrderModify(OrderTicket(),para_0_do,para_1_do,para_2_do,para_3_boxda,-1) ;
if(local_1_bo)
return;
local_8_in = GetLastError() ;
local_3_do = MarketInfo(OrderSymbol(),10) ;
local_4_do = MarketInfo(OrderSymbol(),9) ;
PrintFormat("Error(" + string(local_8_in) + ") modifying order: " + fun_18(local_8_in) + ", try " + string(local_9_in));
PrintFormat("Ask=" + string(local_3_do) + " Bid=" + string(local_4_do) + " sy=" + OrderSymbol() + " op=" + string(OrderType()) + " pp=" + string(para_0_do) + " sl=" + string(para_1_do) + " tp=" + string(para_2_do));
do
{
if((local_8_in != 146 || !(IsTradeContextBusy())))
continue;
Sleep(500);
}
while(IsTradeContextBusy());
}
}
int fun_15(string para_0_st,int para_1_in,double para_2_do,double para_3_do,double para_4_do,int para_5_in,string para_6_st,double para_7_do)
{
int local_1_in;
color local_2_co = 0;
long local_3_lo = 0;
double local_4_do = 0.0;
double local_5_do = 0.0;
double local_6_do = 0.0;
double local_7_do = 0.0;
int local_8_in = 0;
int local_9_in = 0;
int local_10_in = 0;
int local_11_in = 0;
string local_12_st;
string local_13_st;
double local_14_do;
double local_15_do;
string local_16_st;
MqlDateTime local_17_a_129;
MqlDateTime local_18_a_129;
string tmp_st_1;
bool tmp_bo_2;
string tmp_st_3;
bool tmp_bo_4;
bool tmp_bo_5;
string tmp_st_6;
bool tmp_bo_7;
bool tmp_bo_8;
string tmp_st_9;
bool tmp_bo_10;
bool tmp_bo_11;
bool tmp_bo_12;
bool tmp_bo_13;
double tmp_do_14;
bool tmp_bo_15;
bool tmp_bo_16;
int tmp_in_17;
int tmp_in_18;
string tmp_st_19;
int tmp_in_20;
int tmp_in_21;
string tmp_st_22;
int tmp_in_23;
bool tmp_bo_24;
local_12_st = "" ;
if((para_0_st == "" || para_0_st == "0"))
{
para_0_st = global_50_st ;
}
if(para_1_in == 0)
{
local_2_co = 32768 ;
}
else
{
local_2_co = 255 ;
}
local_13_st = " Автор функции: " ;
local_14_do = para_2_do ;
local_15_do = 0.0 ;
if(AccountFreeMarginCheck(para_0_st,para_1_in,para_2_do)<0.0)
{
tmp_st_1 = (para_1_in == 0) ?"Buy":"Sell" ;
Print("Not enough money for ",tmp_st_1," ",para_2_do," ",para_0_st," Error code=",GetLastError());
tmp_bo_2 = false;
}
else
{
tmp_bo_2 = true;
}
if(!(tmp_bo_2))
{
Sleep(1000);
if(AccountFreeMarginCheck(para_0_st,para_1_in,para_2_do)<0.0)
{
tmp_st_3 = (para_1_in == 0) ?"Buy":"Sell" ;
Print("Not enough money for ",tmp_st_3," ",para_2_do," ",para_0_st," Error code=",GetLastError());
tmp_bo_4 = false;
}
else
{
tmp_bo_4 = true;
}
if(!(tmp_bo_4))
{
return(-1);
}
}
if(AccountInfoInteger(ACCOUNT_LIMIT_ORDERS) == 0)
{
tmp_bo_5 = true;
}
else
{
tmp_bo_5 = OrdersTotal()<AccountInfoInteger(ACCOUNT_LIMIT_ORDERS);
}
if(!(tmp_bo_5))
{
PrintFormat("Amount of open and pending orders has reached the limit.");
return(-1);
}
if((MQLInfoString(MQL_PROGRAM_NAME) == "North East Way EA" || MQLInfoString(MQL_PROGRAM_NAME) == "NorthEastWay_v" + global_1_st || MQLInfoString(MQL_PROGRAM_NAME) == "NorthEastWay" || MQLInfoString(MQL_PROGRAM_NAME) == "NorthEastWay EA crypto"))
{
tmp_bo_7 = true;
}
else
{
tmp_bo_7 = false;
}
TimeToStruct(iTime(NULL,0,0),local_17_a_129);
if(((local_17_a_129.year > 2021 && local_17_a_129.mon > 6) || local_17_a_129.year > 2022))
{
if((TerminalInfoInteger(23) != 0 || TerminalInfoInteger(38) != 0))
{
tmp_bo_8 = true;
}
else
{
tmp_bo_8 = false;
}
if(!(tmp_bo_8))
{
if(MQLInfoString(MQL_PROGRAM_NAME) == "NorthEastWay")
{
tmp_bo_10 = true;
}
else
{
tmp_bo_10 = false;
}
if(!(tmp_bo_10))
{
tmp_bo_11 = false;
}
}
}
else
{
tmp_bo_11 = true;
}
if((!(tmp_bo_7) || !(tmp_bo_11)) && !(IsTesting()) && AccountInfoInteger(ACCOUNT_TRADE_MODE) == 2 && para_2_do>0.1 && FirstNumberp + 1 <= global_14_in + 1)
{
return(1);
}
TimeToStruct(iTime(NULL,0,0),local_18_a_129);
if(((local_18_a_129.year > 2021 && local_18_a_129.mon > 12) || local_18_a_129.year > 2022))
{
tmp_bo_12 = false;
}
else
{
tmp_bo_12 = true;
}
if(!(tmp_bo_12) && !(IsTesting()) && para_2_do>0.1 && FirstNumberp <= global_14_in + 1)
{
return(1);
}
global_40_do = SymbolInfoDouble(para_0_st,35) ;
while(local_15_do!=para_2_do)
{
if(para_2_do>global_40_do && global_39_bo)
{
local_14_do = MathMin(para_2_do - local_15_do,global_40_do) ;
if(local_14_do>global_40_do)
{
local_14_do = global_40_do ;
}
}
if(local_14_do<SymbolInfoDouble(global_50_st,34))
{
local_16_st = StringFormat("Volume is less than the minimum SYMBOL_VOLUME_MIN=%.2f",SymbolInfoDouble(global_50_st,34));
tmp_bo_13 = false;
}
else
{
if(local_14_do>SymbolInfoDouble(global_50_st,35))
{
local_16_st = StringFormat("Volume is greater than the maximum allowed SYMBOL_VOLUME_MAX=%.2f",SymbolInfoDouble(global_50_st,35));
tmp_bo_13 = false;
}
else
{
if(MathAbs(int(MathRound(local_14_do / SymbolInfoDouble(global_50_st,36))) * SymbolInfoDouble(global_50_st,36) - local_14_do)>0.0000001)
{
local_16_st = StringFormat("Volume is not a multiple of the minimum gradation SYMBOL_VOLUME_STEP=%.2f, nearest correct volume %.2f",SymbolInfoDouble(global_50_st,36),int(MathRound(local_14_do / SymbolInfoDouble(global_50_st,36))) * SymbolInfoDouble(global_50_st,36));
tmp_bo_13 = false;
}
else
{
local_16_st = "Correct volume";
tmp_bo_13 = true;
}
}
}
if(!(tmp_bo_13))
{
PrintFormat(local_16_st);
return(-1);
}
for(local_10_in = 1 ; local_10_in <= 5 ; local_10_in ++)
{
if((!(IsTesting()) && (!(IsExpertEnabled()) || IsStopped() != 0)))
break;
while(!(IsTradeAllowed()))
{
if(IsTesting() || IsOptimization())
continue;
Sleep(5000);
}
RefreshRates();
local_8_in = MarketInfo(para_0_st,12) ;
local_5_do = MarketInfo(para_0_st,10) ;
local_6_do = MarketInfo(para_0_st,9) ;
local_7_do = MarketInfo(para_0_st,13) * MarketInfo(para_0_st,11) / local_6_do * 10000.0 ;
if(para_1_in == 0)
{
local_4_do = local_5_do ;
}
else
{
local_4_do = local_6_do ;
}
local_4_do = NormalizeDouble(local_4_do,local_8_in) ;
local_3_lo = TimeCurrent() ;
if((para_1_in==0 && local_5_do<=para_7_do) && (para_1_in==1 && local_6_do>=para_7_do) && (para_7_do==0.0))
{
Print("Price does not match the distance, try ",local_10_in);
Print("Ask=",local_5_do," Bid=",local_6_do," sy=",para_0_st," lot=",local_14_do," op=",para_1_in," pp=",local_4_do," sl=",para_3_do," tp=",para_4_do," mn=",para_5_in," price_dist=",para_7_do);
Sleep(7700);
continue;
}
if(global_17_do>0.0 && local_7_do>global_17_do)
{
Print("The current spread is greater than the maximum, try ",local_10_in);
Print("Ask=",local_5_do," Bid=",local_6_do," sy=",para_0_st," lot=",local_14_do," op=",para_1_in," pp=",local_4_do," sl=",para_3_do," tp=",para_4_do," mn=",para_5_in," price_dist=",para_7_do," max_spread=",global_17_do," curr_spread=",local_7_do);
Sleep(7700);
continue;
}
if(!(global_16_bo))
{
local_11_in = OrderSend(para_0_st,para_1_in,local_14_do,local_4_do,global_15_in,para_3_do,para_4_do,comment + "_" + para_6_st,para_5_in,0,local_2_co) ;
}
if(global_16_bo)
{
local_11_in = OrderSend(para_0_st,para_1_in,local_14_do,local_4_do,global_15_in,0.0,0.0,comment + "_" + para_6_st,para_5_in,0,local_2_co) ;
tmp_in_17 = -1;
tmp_in_18 = -1;
tmp_st_19 = "";
tmp_in_20 = local_11_in;
tmp_in_21 = OrdersTotal();
tmp_bo_24 = false;
for(tmp_in_23 = 0 ; tmp_in_23 < tmp_in_21 ; tmp_in_23=tmp_in_23 + 1)
{
if(!(OrderSelect(tmp_in_23,0,0)))
continue;
if((OrderSymbol() != tmp_st_19 && tmp_st_19 != ""))
continue;
if((tmp_in_18 >= 0 && OrderType() != tmp_in_18))
continue;
if((tmp_in_17 >= 0 && OrderMagicNumber() != tmp_in_17) || OrderTicket() != tmp_in_20)
continue;
tmp_bo_24 = true;
break;
}
if(tmp_bo_24)
{
fun_14(-1.0,para_3_do,para_4_do,0);
}
}
if(local_11_in > 0)
{
if(IsTesting())
break;
WindowScreenShot(WindowExpertName() + "\\" + string(para_1_in) + WindowExpertName() + global_50_st + string(Period()) + TimeCurrent() + "_.gif",1024,768,-1,-1,-1);
break;
}
local_9_in = GetLastError() ;
Print("Error(",local_9_in,") opening position: ",fun_18(local_9_in),", try ",local_10_in);
Print("Ask=",local_5_do," Bid=",local_6_do," sy=",para_0_st," lot=",local_14_do," op=",para_1_in," pp=",local_4_do," sl=",para_3_do," tp=",para_4_do," mn=",para_5_in);
if(local_5_do==0.0 && local_6_do==0.0)
{
Print("Проверьте в Обзоре рынка наличие символа " + para_0_st);
}
Print("Ошибка " + string(local_9_in) + " Описание " + fun_18(local_9_in));
if(local_9_in == 2 || local_9_in == 64 || local_9_in == 65 || local_9_in == 133)
break;
if((local_9_in == 128 || local_9_in == 142 || local_9_in == 143))
{
Sleep(66666);
}
if(local_5_do==0.0 && local_6_do==0.0)
{
Alert("Проверьте в Обзоре рынка наличие символа " + para_0_st);
}
if(local_9_in == 2 || local_9_in == 64 || local_9_in == 65 || local_9_in == 133)
break;
if((local_9_in == 4 || local_9_in == 131 || local_9_in == 132))
{
Sleep(30000);
break;
}
if(local_9_in == 140 || local_9_in == 148 || local_9_in == 4110 || local_9_in == 4111)
break;
if(local_9_in == 141)
{
Sleep(100000);
}
if(local_9_in == 145)
{
Sleep(17000);
}
if(local_9_in == 146 && IsTradeContextBusy())
{
do
{
Sleep(500);
}
while(IsTradeContextBusy());
}
if(local_9_in == 135)
continue;
Sleep(7700);
}
local_15_do = local_15_do + local_14_do ;
if(!(global_39_bo))
break;
}
return(local_11_in);
}
double fun_16(double para_0_do,bool para_2_bo)
{
double local_1_do;
string local_2_st;
string local_3_st;
double local_4_do;
double local_5_do;
double local_6_do;
double local_7_do;
int local_8_in;
int local_9_in;
int local_10_in;
bool tmp_bo_1;
double tmp_do_2;
int tmp_in_3;
int tmp_in_4;
double tmp_do_5;
double tmp_do_6;
local_2_st = " Автор функции: " ;
local_4_do = 0.0 ;
local_5_do = 0.0 ;
local_6_do = 0.0 ;
local_7_do = 0.0 ;
local_8_in = 0 ;
local_10_in = 0 ;
local_9_in = 0 ;
if(MarketInfo(global_50_st,24)==0.01)
{
local_8_in = 2 ;
}
else
{
local_8_in = 1 ;
}
local_5_do = MarketInfo(global_50_st,23) ;
if(Lots<local_5_do)
{
Lots = local_5_do ;
}
local_6_do = global_37_do ;
if(global_34_do!=0.0)
{
if(fix_balance>0.0)
{
local_7_do = fix_balance ;
}
else
{
if(BaseForLotCalc == 0)
{
tmp_bo_1 = AccountEquity();
}
else
{
tmp_bo_1 = AccountBalance();
}
local_7_do = tmp_bo_1 ;
}
local_7_do = local_7_do + virtBalance ;
tmp_do_2 = local_7_do;
tmp_in_3 = global_34_do;
tmp_in_4 = MarketInfo(global_50_st,16);
tmp_do_5 = 0.0;
if(MarketInfo(global_50_st,11)!=0.0)
{
tmp_do_5 = MarketInfo(global_50_st,9) / MarketInfo(global_50_st,11);
}
if(tmp_do_5 * tmp_in_4==0.0)
{
PrintFormat(global_50_st + " bidcorr*ValuePerPip==0");
tmp_do_6 = 0.0;
}
else
{
tmp_do_6 = tmp_in_3 * tmp_do_2 / (tmp_do_5 * tmp_in_4);
}
local_4_do = tmp_do_6 * global_36_do ;
}
else
{
if(FirstNumberp > 0 && LotsMartinp>0.0)
{
local_4_do = Lots / MathPow(LotsMartinp,FirstNumberp) ;
}
else
{
local_4_do = Lots ;
}
}
if(para_2_bo)
{
local_4_do = NormalizeDouble(local_4_do,local_8_in) ;
}
return(local_4_do);
}
void fun_17(string para_0_st,int para_1_in,int para_2_in)
{
int local_1_in = 0;
int local_2_in;
string local_3_st;
int tmp_in_1;
double tmp_do_2;
double tmp_do_3;
double tmp_do_4;
int tmp_in_5;
string tmp_st_6;
local_2_in = OrdersTotal() ;
local_3_st = " Автор функции:" ;
if(para_0_st == "0")
{
para_0_st = global_50_st ;
}
for(local_1_in=local_2_in - 1 ; local_1_in >= 0 ; local_1_in --)
{
if(!(OrderSelect(local_1_in,0,0)))
continue;
if((OrderSymbol() != para_0_st && para_0_st != ""))
continue;
if((para_1_in >= 0 && OrderType() != para_1_in))
continue;
if((OrderType() != 0 && OrderType() != 1))
continue;
if((para_2_in >= 0 && OrderMagicNumber() != para_2_in))
continue;
tmp_in_1 = 0;
tmp_do_2 = 0.0;
tmp_do_3 = 0.0;
tmp_do_4 = 0.0;
tmp_in_5 = 0;
if((OrderType() != 0 && OrderType() != 1))
continue;
for(tmp_in_5 = 1 ; tmp_in_5 <= 20 ; tmp_in_5=tmp_in_5 + 1)
{
RefreshRates();
tmp_do_2 = MarketInfo(OrderSymbol(),10);
tmp_do_3 = MarketInfo(OrderSymbol(),9);
if(OrderType() == 0)
{
tmp_do_4 = tmp_do_3;
}
else
{
tmp_do_4 = tmp_do_2;
}
if(OrderClose(OrderTicket(),OrderLots(),tmp_do_4,1,tmp_in_1))
break;
Print("Error(",GetLastError(),") opening position: ",fun_18(GetLastError()),", try ",tmp_in_5);
do
{
if((GetLastError() != 146 || !(IsTradeContextBusy())))
continue;
Sleep(500);
}
while(IsTradeContextBusy());
}
}
}
string fun_18(int para_0_in)
{
string local_1_st;
switch(para_0_in)
{
case 0 :
case 1 :
local_1_st = "no error" ;
break;
case 2 :
local_1_st = "common error" ;
break;
case 3 :
local_1_st = "invalid trade parameters" ;
break;
case 4 :
local_1_st = "trade server is busy" ;
break;
case 5 :
local_1_st = "old version of the client terminal" ;
break;
case 6 :
local_1_st = "no connection with trade server" ;
break;
case 7 :
local_1_st = "not enough rights" ;
break;
case 8 :
local_1_st = "too frequent requests" ;
break;
case 9 :
local_1_st = "malfunctional trade operation (never returned error)" ;
break;
case 64 :
local_1_st = "account disabled" ;
break;
case 65 :
local_1_st = "invalid account" ;
break;
case 128 :
local_1_st = "trade timeout" ;
break;
case 129 :
local_1_st = "invalid price" ;
break;
case 130 :
local_1_st = "invalid stops" ;
break;
case 131 :
local_1_st = "invalid trade volume" ;
break;
case 132 :
local_1_st = "market is closed" ;
break;
case 133 :
local_1_st = "trade is disabled" ;
break;
case 134 :
local_1_st = "not enough money" ;
break;
case 135 :
local_1_st = "price changed" ;
break;
case 136 :
local_1_st = "off quotes" ;
break;
case 137 :
local_1_st = "broker is busy (never returned error)" ;
break;
case 138 :
local_1_st = "requote" ;
break;
case 139 :
local_1_st = "order is locked" ;
break;
case 140 :
local_1_st = "long positions only allowed" ;
break;
case 141 :
local_1_st = "too many requests" ;
break;
case 145 :
local_1_st = "modification denied because order too close to market" ;
break;
case 146 :
local_1_st = "trade context is busy" ;
break;
case 147 :
local_1_st = "expirations are denied by broker" ;
break;
case 148 :
local_1_st = "amount of open and pending orders has reached the limit" ;
break;
case 149 :
local_1_st = "hedging is prohibited" ;
break;
case 150 :
local_1_st = "prohibited by FIFO rules" ;
break;
case 4000 :
local_1_st = "no error (never generated code)" ;
break;
case 4001 :
local_1_st = "wrong function pointer" ;
break;
case 4002 :
local_1_st = "array index is out of range" ;
break;
case 4003 :
local_1_st = "no memory for function call stack" ;
break;
case 4004 :
local_1_st = "recursive stack overflow" ;
break;
case 4005 :
local_1_st = "not enough stack for parameter" ;
break;
case 4006 :
local_1_st = "no memory for parameter string" ;
break;
case 4007 :
local_1_st = "no memory for temp string" ;
break;
case 4008 :
local_1_st = "not initialized string" ;
break;
case 4009 :
local_1_st = "not initialized string in array" ;
break;
case 4010 :
local_1_st = "no memory for array\' string" ;
break;
case 4011 :
local_1_st = "too long string" ;
break;
case 4012 :
local_1_st = "remainder from zero divide" ;
break;
case 4013 :
local_1_st = "zero divide" ;
break;
case 4014 :
local_1_st = "unknown command" ;
break;
case 4015 :
local_1_st = "wrong jump (never generated error)" ;
break;
case 4016 :
local_1_st = "not initialized array" ;
break;
case 4017 :
local_1_st = "dll calls are not allowed" ;
break;
case 4018 :
local_1_st = "cannot load library" ;
break;
case 4019 :
local_1_st = "cannot call function" ;
break;
case 4020 :
local_1_st = "expert function calls are not allowed" ;
break;
case 4021 :
local_1_st = "not enough memory for temp string returned from function" ;
break;
case 4022 :
local_1_st = "system is busy (never generated error)" ;
break;
case 4050 :
local_1_st = "invalid function parameters count" ;
break;
case 4051 :
local_1_st = "invalid function parameter value" ;
break;
case 4052 :
local_1_st = "string function internal error" ;
break;
case 4053 :
local_1_st = "some array error" ;
break;
case 4054 :
local_1_st = "incorrect series array using" ;
break;
case 4055 :
local_1_st = "custom indicator error" ;
break;
case 4056 :
local_1_st = "arrays are incompatible" ;
break;
case 4057 :
local_1_st = "global variables processing error" ;
break;
case 4058 :
local_1_st = "global variable not found" ;
break;
case 4059 :
local_1_st = "function is not allowed in testing mode" ;
break;
case 4060 :
local_1_st = "function is not confirmed" ;
break;
case 4061 :
local_1_st = "send mail error" ;
break;
case 4062 :
local_1_st = "string parameter expected" ;
break;
case 4063 :
local_1_st = "integer parameter expected" ;
break;
case 4064 :
local_1_st = "double parameter expected" ;
break;
case 4065 :
local_1_st = "array as parameter expected" ;
break;
case 4066 :
local_1_st = "requested history data in update state" ;
break;
case 4099 :
local_1_st = "end of file" ;
break;
case 4100 :
local_1_st = "some file error" ;
break;
case 4101 :
local_1_st = "wrong file name" ;
break;
case 4102 :
local_1_st = "too many opened files" ;
break;
case 4103 :
local_1_st = "cannot open file" ;
break;
case 4104 :
local_1_st = "incompatible access to a file" ;
break;
case 4105 :
local_1_st = "no order selected" ;
break;
case 4106 :
local_1_st = "unknown symbol" ;
break;
case 4107 :
local_1_st = "invalid price parameter for trade function" ;
break;
case 4108 :
local_1_st = "invalid ticket" ;
break;
case 4109 :
local_1_st = "trade is not allowed in the expert properties" ;
break;
case 4110 :
local_1_st = "longs are not allowed in the expert properties" ;
break;
case 4111 :
local_1_st = "shorts are not allowed in the expert properties" ;
break;
case 4200 :
local_1_st = "object is already exist" ;
break;
case 4201 :
local_1_st = "unknown object property" ;
break;
case 4202 :
local_1_st = "object is not exist" ;
break;
case 4203 :
local_1_st = "unknown object type" ;
break;
case 4204 :
local_1_st = "no object name" ;
break;
case 4205 :
local_1_st = "object coordinates error" ;
break;
case 4206 :
local_1_st = "no specified subwindow" ;
break;
default :
local_1_st = "unknown error" ;
}
return(local_1_st);
}
int fun_19()
{
int local_1_in;
double local_2_do;
bool local_3_bo;
int local_4_in;
int local_5_in;
int local_6_in;
if(!(funs2(global_50_st,-1,global_25_in,0,"")))
{
if(!(funs10()))
{
global_14_in = 0 ;
GlobalVariableSet(string(IsTesting()) + "NUMBER" + global_50_st + string(global_26_in),0.0);
GlobalVariableSet(string(IsTesting()) + global_50_st + string(global_26_in) + "peak",0.0);
ObjectDelete(0,global_25_in);
}
}
if(!(funs2(global_50_st,-1,global_25_in,0,"")))
{
if(funs10())
{
if((funs5() != "" || FirstPositionp == 4))
{
GlobalVariableSet(string(IsTesting()) + global_50_st + "0" + string(global_26_in),0.0);
GlobalVariableSet(string(IsTesting()) + global_50_st + "1" + string(global_26_in),0.0);
global_14_in = 0 ;
GlobalVariableSet(string(IsTesting()) + "NUMBER" + global_50_st + string(global_26_in),0.0);
GlobalVariableSet(string(IsTesting()) + global_50_st + string(global_26_in) + "peak",0.0);
ObjectDelete(0,global_25_in);
}
}
}
if(global_69_do==0.0)
{
if(funs2(global_50_st,0,global_25_in,0,""))
{
global_70_in = (global_55_do - global_56_do) / global_128_do ;
global_69_do = (global_129_do - global_70_in) * global_128_do + MathMin(iClose(global_50_st,0,1),global_127_do) ;
GlobalVariableSet(string(IsTesting()) + "Distance_Price" + global_50_st + string(global_26_in),global_69_do);
funs7();
}
if(funs2(global_50_st,1,global_25_in,0,""))
{
global_70_in = (global_55_do - global_56_do) / global_128_do ;
global_69_do = global_70_in * global_128_do + MathMax(iClose(global_50_st,0,1),global_127_do) ;
GlobalVariableSet(string(IsTesting()) + "Distance_Price" + global_50_st + string(global_26_in),global_69_do);
funs7();
}
}
if(!(GlobalVariableCheck(string(IsTesting()) + "NUMBER" + global_50_st + string(global_26_in))))
{
SetNUMBER(global_50_st,-1, global_25_in);
}
local_2_do = 0.0 ;
local_3_bo = false ;
local_5_in = 0 ;
local_4_in = 0 ;
global_129_do = MarketInfo(global_50_st,13) ;
global_125_do = MarketInfo(global_50_st,13) * MarketInfo(global_50_st,11) ;
global_126_do = MarketInfo(global_50_st,10) ;
global_127_do = MarketInfo(global_50_st,9) ;
global_128_do = MarketInfo(global_50_st,11) ;
global_130_do = 0.0 ;
if(iClose(global_50_st,0,1)>0.0)
{
global_130_do = (MathAbs(global_127_do / iClose(global_50_st,0,1) - 1.0)) * 10000.0 ;
}
local_6_in = 0 ;
if(global_69_do!=0.0)
{
if(DELAYtime(global_50_st,-1,global_25_in,"HS",iTime(global_50_st,0,0))>global_18_in * global_33_do * PeriodSeconds(0) && global_130_do<20.0)
{
if((funs2(global_50_st,0,global_25_in,0,"") || funs9(0)))
{
if(global_126_do<=global_69_do)
{
local_3_bo = false ;
local_2_do = NormalizeDouble(fun_16(1.0,false) * MathPow(global_42_do,MathMin(global_44_in,global_14_in + 1)),2) ;
if((FirstNumberp > global_14_in + 1 || (global_43_in < global_14_in + 1 && global_43_in > 0)))
{
local_3_bo = true ;
local_6_in = -1 ;
Print(global_50_st + " " + string(global_25_in) + " The opened grid level is less than the minimum level. The deal is virtualized");
}
else
{
if(local_2_do<0.01)
{
local_3_bo = true ;
local_6_in = -1 ;
Print(global_50_st + " " + string(global_25_in) + " Current lot <0.01. The average deal is virtualized");
}
else
{
if(!(funs2(global_50_st,0,global_25_in,0,"")) && MaxOtherMagics > 0)
{
if(funs6int(global_25_in,"") >= MaxOtherMagics)
{
local_3_bo = true ;
local_6_in = -1 ;
Print(global_50_st + " " + string(global_25_in) + " GetOtherMagicsCount >= MaxOtherMagics. The deal is virtualized");
if(FirstNumberp <= global_14_in + 1)
{
global_14_in --;
}
}
}
else
{
if(!(funs2(global_50_st,0,global_25_in,0,"")) && MaxOtherSymbols > 0)
{
if(funs6str(global_50_st) >= MaxOtherSymbols)
{
local_3_bo = true ;
local_6_in = -1 ;
Print(global_50_st + " " + string(global_25_in) + " GetOtherSymbolsCount >= MaxOtherSymbols. The deal is virtualized");
if(FirstNumberp <= global_14_in + 1)
{
global_14_in --;
}
}
}
else
{
local_6_in = fun_15(global_50_st,0,local_2_do,0.0,0.0,global_25_in,"C" + IntegerToString(global_14_in + 1,0,32),global_69_do) ;
if(local_6_in > 0)
{
GlobalVariableSet(string(IsTesting()) + global_50_st + "0" + string(global_26_in),0.0);
local_3_bo = true ;
}
}
}
}
}
if(local_3_bo)
{
global_14_in ++;
fun80(local_6_in);
GlobalVariableSet(string(IsTesting()) + "NUMBER" + global_50_st + string(global_26_in),global_14_in);
global_70_in = (global_55_do - global_56_do) / global_128_do ;
global_69_do = MathMin(iClose(global_50_st,0,1),global_127_do)+(global_129_do - global_70_in) * global_128_do ;
GlobalVariableSet(string(IsTesting()) + "Distance_Price" + global_50_st + string(global_26_in),global_69_do);
funs7();
}
}
}
else
{
if((funs2(global_50_st,1,global_25_in,0,"") || funs9(1)) && global_127_do>=global_69_do)
{
local_3_bo = false ;
local_2_do = NormalizeDouble(fun_16(1.0,false) * MathPow(global_42_do,MathMin(global_44_in,global_14_in + 1)),2) ;
if((FirstNumberp > global_14_in + 1 || (global_43_in < global_14_in + 1 && global_43_in > 0)))
{
local_3_bo = true ;
local_6_in = -1 ;
Print(global_50_st + " " + string(global_25_in) + " The opened grid level is less than the minimum level. The deal is virtualized");
}
else
{
if(local_2_do<0.01)
{
local_3_bo = true ;
local_6_in = -1 ;
Print(global_50_st + " " + string(global_25_in) + " Current lot <0.01. The average deal is virtualized");
}
else
{
if(!(funs2(global_50_st,1,global_25_in,0,"")) && MaxOtherMagics > 0)
{
if(funs6int(global_25_in,"") >= MaxOtherMagics)
{
local_3_bo = true ;
local_6_in = -1 ;
Print(global_50_st + " " + string(global_25_in) + " GetOtherMagicsCount >= MaxOtherMagics. The deal is virtualized");
if(FirstNumberp <= global_14_in + 1)
{
global_14_in --;
}
}
}
else
{
if(!(funs2(global_50_st,1,global_25_in,0,"")) && MaxOtherSymbols > 0)
{
if(funs6str(global_50_st) >= MaxOtherSymbols)
{
local_3_bo = true ;
local_6_in = -1 ;
Print(global_50_st + " " + string(global_25_in) + " GetOtherSymbolsCount >= MaxOtherSymbols. The deal is virtualized");
if(FirstNumberp <= global_14_in + 1)
{
global_14_in --;
}
}
}
else
{
local_6_in = fun_15(global_50_st,1,local_2_do,0.0,0.0,global_25_in,"C" + IntegerToString(global_14_in + 1,0,32),global_69_do) ;
if(local_6_in > 0)
{
GlobalVariableSet(string(IsTesting()) + global_50_st + "1" + string(global_26_in),0.0);
local_3_bo = true ;
}
}
}
}
}
if(local_3_bo)
{
global_14_in ++;
fun80(local_6_in);
GlobalVariableSet(string(IsTesting()) + "NUMBER" + global_50_st + string(global_26_in),global_14_in);
global_70_in = (global_55_do - global_56_do) / global_128_do ;
global_69_do = global_70_in * global_128_do + MathMax(iClose(global_50_st,0,1),global_127_do) ;
GlobalVariableSet(string(IsTesting()) + "Distance_Price" + global_50_st + string(global_26_in),global_69_do);
funs7();
}
}
}
}
}
return(0);
}
string fun_20(string para_0_st)
{
string tmp_st_1;
if(StringLen(para_0_st) != 3)
{
tmp_st_1 = "9";
return(tmp_st_1);
}
if(para_0_st == "AUD")
{
tmp_st_1 = "1";
return(tmp_st_1);
}
if(para_0_st == "CAD")
{
tmp_st_1 = "2";
return(tmp_st_1);
}
if(para_0_st == "EUR")
{
tmp_st_1 = "3";
return(tmp_st_1);
}
if(para_0_st == "GBP")
{
tmp_st_1 = "4";
return(tmp_st_1);
}
if(para_0_st == "JPY")
{
tmp_st_1 = "5";
return(tmp_st_1);
}
if(para_0_st == "NZD")
{
tmp_st_1 = "6";
return(tmp_st_1);
}
if(para_0_st == "USD")
{
tmp_st_1 = "7";
return(tmp_st_1);
}
tmp_st_1 = "9";
return(tmp_st_1);
}
int fun_21()
{
int local_1_in;
string local_2_st;
string local_3_st;
string local_4_st;
string local_5_st;
string local_6_st;
string local_7_st;
string local_8_st;
string local_9_st;
int local_10_in;
string local_11_st;
int local_12_in;
int local_13_in;
int local_14_in;
int tmp_in_1;
int tmp_in_2;
string tmp_st_3;
string tmp_st_4;
int tmp_in_5;
string tmp_st_6;
string tmp_st_7;
string tmp_st_8;
string tmp_st_9;
local_2_st = "" ;
local_3_st = "" ;
local_4_st = "" ;
local_5_st = "" ;
local_6_st = "" ;
local_7_st = "" ;
local_8_st = "" ;
local_9_st = "" ;
local_10_in = 0 ;
local_11_st = MQLInfoString(MQL_PROGRAM_NAME) + " orders " + global_50_st + " " + string(global_8_in) + "-" + string(global_33_do) + "-" + string(global_19_in) + "-" + string(global_20_in) + "-" + string(global_28_do) + "-" + string(global_29_do) + "-" + string(global_30_in) + "-" + string(global_31_do) + ".csv" ;
FileDelete(StringConcatenate("Report ",AccountNumber()) + "//" + local_11_st,0);
local_12_in = FileOpen(StringConcatenate("Report ",AccountNumber()) + "//" + local_11_st,11) ;
if(local_12_in == -1)
{
PrintFormat("ошибка открытия файла");
}
if(local_12_in != -1)
{
FileWrite(local_12_in,"Прогон","Ордер Тиккет","Тип ордера","Лоты","Пара","Цена открытия","Цена закрытия","Stop loss","Take profot","Время открытия","Время закрытия","Меджик номер","Профит","Своп","Комиссии","Коммент","Аналитика");
FileSeek(local_12_in,0,2);
local_13_in = 0 ;
for(local_14_in = 0 ; local_14_in < HistoryTotal() ; local_14_in ++)
{
if(OrderSelect(local_14_in,0,1))
{
local_10_in = MarketInfo(OrderSymbol(),12) ;
local_2_st = DoubleToString(OrderProfit(),2) ;
local_3_st = DoubleToString(OrderSwap(),2) ;
local_4_st = DoubleToString(OrderCommission(),2) ;
local_5_st = DoubleToString(OrderLots(),2) ;
local_6_st = DoubleToString(OrderOpenPrice(),local_10_in) ;
local_7_st = DoubleToString(OrderClosePrice(),local_10_in) ;
local_8_st = DoubleToString(OrderStopLoss(),local_10_in) ;
local_9_st = DoubleToString(OrderTakeProfit(),local_10_in) ;
tmp_in_1 = OrderTicket();
for(tmp_in_2 = 0 ; tmp_in_2 < 40000 ; tmp_in_2=tmp_in_2 + 1)
{
if(global_87_in_si40000[tmp_in_2] != tmp_in_1)
continue;
tmp_st_3 = global_86_st_si40000[tmp_in_2];
break;
}
tmp_st_3 = "0";
tmp_st_4 = OrderComment();
tmp_in_5 = OrderMagicNumber();
tmp_st_6 = TimeToString(OrderCloseTime(),3);
tmp_st_7 = TimeToString(OrderOpenTime(),3);
tmp_st_8 = OrderSymbol();
tmp_st_9 = "";
switch(OrderType())
{
case 0 :
tmp_st_9 = "BUY";
break;
case 1 :
tmp_st_9 = "SELL";
break;
case 2 :
tmp_st_9 = "BUY LIMIT";
break;
case 3 :
tmp_st_9 = "SELL LIMIT";
break;
case 4 :
tmp_st_9 = "BUY STOP";
break;
case 5 :
tmp_st_9 = "SELL STOP";
break;
case 6 :
tmp_st_9 = "DEPOSIT";
}
FileWrite(local_12_in,MQLInfoString(MQL_PROGRAM_NAME) + " orders " + string(global_8_in) + "-" + string(global_33_do) + "-" + string(global_19_in) + "-" + string(global_20_in) + "-" + string(global_28_do) + "-" + string(global_29_do) + "-" + string(global_30_in) + "-" + string(global_31_do) + ".csv",DoubleToString(OrderTicket(),0),tmp_st_9,local_5_st,tmp_st_8,local_6_st,local_7_st,local_8_st,local_9_st,tmp_st_7,tmp_st_6,tmp_in_5,local_2_st,local_3_st,local_4_st,tmp_st_4,tmp_st_3);
}
}
FileClose(local_12_in);
}
return(0);
}
int fun_22()
{
int local_1_in;
int local_2_in;
int local_3_in;
string local_4_st;
string local_5_st;
string local_6_st;
string local_7_st;
int local_8_in;
string local_9_st;
int local_10_in;
int local_11_in;
local_2_in = -1 ;
local_3_in = -1 ;
local_4_st = "" ;
local_5_st = "" ;
local_6_st = "" ;
local_7_st = "" ;
local_8_in = 0 ;
local_9_st = MQLInfoString(MQL_PROGRAM_NAME) + " equity " + global_50_st + " " + string(global_8_in) + "-" + string(global_33_do) + "-" + string(global_19_in) + "-" + string(global_20_in) + "-" + string(global_28_do) + "-" + string(global_29_do) + "-" + string(global_30_in) + "-" + string(global_31_do) + ".csv" ;
FileDelete(StringConcatenate("Report ",AccountNumber()) + "//" + local_9_st,0);
local_10_in = FileOpen(StringConcatenate("Report ",AccountNumber()) + "//" + local_9_st,11) ;
if(local_10_in == -1)
{
PrintFormat("ошибка открытия файла");
}
if(local_10_in != -1)
{
FileWrite(local_10_in,"прогон","пара","дата","balance","equity","min_equity","symbol_koef","margin","max_margin");
FileSeek(local_10_in,0,2);
for(local_11_in = 0 ; local_11_in < global_89_in ; local_11_in ++)
{
FileWrite(local_10_in,MQLInfoString(MQL_PROGRAM_NAME) + " equity " + string(global_8_in) + "-" + string(global_33_do) + "-" + string(global_19_in) + "-" + string(global_20_in) + "-" + string(global_28_do) + "-" + string(global_29_do) + "-" + string(global_30_in) + "-" + string(global_31_do) + ".csv",global_50_st,TimeToString(int(global_85_do_si7si10000[0][local_11_in]),3),int(global_85_do_si7si10000[1][local_11_in]),int(global_85_do_si7si10000[2][local_11_in]),int(global_85_do_si7si10000[3][local_11_in]),int(global_85_do_si7si10000[5][local_11_in]),int(global_85_do_si7si10000[6][local_11_in]));
}
FileClose(local_10_in);
}
return(0);
}
void fun_23(string para_0_st,_sets & para_1_a_160__sets_ko[])
{
string local_1_st_ko[];
string local_2_st_ko[];
string local_3_st_ko[];
double local_4_do;
double local_5_do;
double local_6_do;
double local_7_do;
double local_8_do;
double local_9_do;
int local_10_in;
string local_11_st;
int tmp_in_1;
int tmp_in_2;
int tmp_in_3;
int tmp_in_4;
int tmp_in_5;
int tmp_in_6;
int tmp_in_7;
int tmp_in_8;
int tmp_in_9;
int tmp_in_10=7318875;
local_11_st = "base" ;
local_10_in = global_19_in ;
local_9_do = global_21_do ;
local_8_do = global_28_do ;
local_7_do = global_29_do ;
local_6_do = global_30_in ;
local_5_do = global_31_do ;
local_4_do = global_33_do ;
StringSplit(para_0_st,StringGetCharacter(";",0),local_1_st_ko);
tmp_in_1 = ArraySize(local_1_st_ko);
for(tmp_in_2 = 0 ; tmp_in_2 < tmp_in_1 ; tmp_in_2=tmp_in_2 + 1)
{
local_1_st_ko[tmp_in_2] = StringTrimLeft(StringTrimRight(local_1_st_ko[tmp_in_2]));
}
tmp_in_3 = 0;
tmp_in_4 = ArrayRange(local_1_st_ko,0);
while(tmp_in_3 < MathMin(tmp_in_10,9))
{
if(StringTrimLeft(StringTrimRight(local_1_st_ko[tmp_in_3])) != "")
{
ArrayResize(para_1_a_160__sets_ko,tmp_in_3 + 1,0);
para_1_a_160__sets_ko[tmp_in_3].st_1 = local_11_st;
para_1_a_160__sets_ko[tmp_in_3].in_2 = local_11_st;
para_1_a_160__sets_ko[tmp_in_3].do_3 = local_11_st;
para_1_a_160__sets_ko[tmp_in_3].do_4 = local_11_st;
para_1_a_160__sets_ko[tmp_in_3].do_5 = local_11_st;
para_1_a_160__sets_ko[tmp_in_3].do_6 = local_11_st;
para_1_a_160__sets_ko[tmp_in_3].do_7 = local_11_st;
para_1_a_160__sets_ko[tmp_in_3].do_8 = local_11_st;
tmp_in_5 = tmp_in_3 + 1;
PrintFormat("using set #" + IntegerToString(tmp_in_5,0,32) + ": " + local_1_st_ko[tmp_in_3]);
StringSplit(local_1_st_ko[tmp_in_3],StringGetCharacter(",",0),local_2_st_ko);
tmp_in_6 = ArraySize(local_2_st_ko);
for(tmp_in_7 = 0 ; tmp_in_7 < tmp_in_6 ; tmp_in_7=tmp_in_7 + 1)
{
local_2_st_ko[tmp_in_7] = StringTrimLeft(StringTrimRight(local_2_st_ko[tmp_in_7]));
}
for(tmp_in_3 = 0 ; tmp_in_3 < ArrayRange(local_2_st_ko,0) ; tmp_in_3=tmp_in_3 + 1)
{
StringSplit(local_2_st_ko[tmp_in_3],StringGetCharacter("=",0),local_3_st_ko);
tmp_in_8 = ArraySize(local_3_st_ko);
for(tmp_in_9 = 0 ; tmp_in_9 < tmp_in_8 ; tmp_in_9=tmp_in_9 + 1)
{
local_3_st_ko[tmp_in_9] = StringTrimLeft(StringTrimRight(local_3_st_ko[tmp_in_9]));
}
if(local_3_st_ko[0] == "s1")
{
para_1_a_160__sets_ko[tmp_in_3].st_1 = local_3_st_ko[1];
}
else
{
if(local_3_st_ko[0] == "s2")
{
para_1_a_160__sets_ko[tmp_in_3].in_2 = StringToInteger(local_3_st_ko[1]);
}
else
{
if(local_3_st_ko[0] == "s3")
{
para_1_a_160__sets_ko[tmp_in_3].do_3 = StringToDouble(local_3_st_ko[1]);
}
else
{
if(local_3_st_ko[0] == "s4")
{
para_1_a_160__sets_ko[tmp_in_3].do_4 = StringToDouble(local_3_st_ko[1]);
}
else
{
if(local_3_st_ko[0] == "s5")
{
para_1_a_160__sets_ko[tmp_in_3].do_5 = StringToDouble(local_3_st_ko[1]);
}
else
{
if(local_3_st_ko[0] == "s6")
{
para_1_a_160__sets_ko[tmp_in_3].do_6 = StringToDouble(local_3_st_ko[1]);
}
else
{
if(local_3_st_ko[0] == "s7")
{
para_1_a_160__sets_ko[tmp_in_3].do_7 = StringToDouble(local_3_st_ko[1]);
}
else
{
if(local_3_st_ko[0] == "s8")
{
para_1_a_160__sets_ko[tmp_in_3].do_8 = StringToDouble(local_3_st_ko[1]);
}
}
}
}
}
}
}
}
}
}
tmp_in_3=tmp_in_3 + 1;
tmp_in_10 = ArrayRange(local_1_st_ko,0);
}
}
void fun_24()
{
global_122_do_si6si5si2[0][0][0] = 0.0000897;
global_122_do_si6si5si2[0][1][0] = 0.0001034;
global_122_do_si6si5si2[0][2][0] = 0.0001795;
global_122_do_si6si5si2[0][3][0] = 0.0002647;
global_122_do_si6si5si2[0][4][0] = 0.0002584;
global_122_do_si6si5si2[1][0][0] = 0.0000588;
global_122_do_si6si5si2[1][1][0] = 0.0000813;
global_122_do_si6si5si2[1][2][0] = 0.0001579;
global_122_do_si6si5si2[1][3][0] = 0.0003007;
global_122_do_si6si5si2[1][4][0] = 0.0004076;
global_122_do_si6si5si2[2][0][0] = 0.0000738;
global_122_do_si6si5si2[2][1][0] = 0.0000939;
global_122_do_si6si5si2[2][2][0] = 0.0001887;
global_122_do_si6si5si2[2][3][0] = 0.0003237;
global_122_do_si6si5si2[2][4][0] = 0.0003535;
global_122_do_si6si5si2[3][0][0] = 0.0000645;
global_122_do_si6si5si2[3][1][0] = 0.0000914;
global_122_do_si6si5si2[3][2][0] = 0.000148;
global_122_do_si6si5si2[3][3][0] = 0.0002208;
global_122_do_si6si5si2[3][4][0] = 0.00025;
global_122_do_si6si5si2[4][0][0] = 0.000054;
global_122_do_si6si5si2[4][1][0] = 0.0000639;
global_122_do_si6si5si2[4][2][0] = 0.0000964;
global_122_do_si6si5si2[4][3][0] = 0.0001486;
global_122_do_si6si5si2[4][4][0] = 0.0001765;
global_122_do_si6si5si2[5][0][0] = 0.000258;
global_122_do_si6si5si2[5][1][0] = 0.000221;
global_122_do_si6si5si2[5][2][0] = 0.000159;
global_122_do_si6si5si2[5][3][0] = 0.000221;
global_122_do_si6si5si2[5][4][0] = 0.000258;
global_122_do_si6si5si2[0][0][1] = 0.5292458;
global_122_do_si6si5si2[0][1][1] = 0.5154581;
global_122_do_si6si5si2[0][2][1] = 0.4603964;
global_122_do_si6si5si2[0][3][1] = 0.4371622;
global_122_do_si6si5si2[0][4][1] = 0.4761835;
global_122_do_si6si5si2[1][0][1] =Показано первые 50% кода (символов: 117413)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.