extern string Symbols1 = "EURUSD: 0; NZDUSD: 0; EURCAD: 0; EURNZD: 0;";
extern string Symbols2 = "USDJPY: 0; USDCHF: 0; USDCAD: 0; EURAUD: 0;";
extern string Symbols3 = "EURJPY: 656630; AUDNZD: 0; CHFJPY: 0; CADCHF: 0;";
extern string Symbols4 = "GBPUSD: 0; GBPAUD: 0; AUDJPY: 0; CADJPY: 0;";
extern string Symbols5 = "GBPJPY: 0; GBPCHF: 0; NZDJPY: 0; GBPNZD: 0;";
extern string Symbols6 = "EURGBP: 0; EURCHF: 0; NZDCHF: 0; NZDCAD: 0;";
extern string Symbols7 = "AUDUSD: 0; AUDCHF: 0; AUDCAD: 0; GBPCAD: 0;";
extern string Descr1 = "Amp для тестера";
extern int Amp = 65;
extern string Descr2 = "Exp для тестера";
extern int Exp = 66;
extern string Descr3 = "ZigZag";
extern int ZigZag = 30;
extern string Descr4 = "Риск в %% от своб.средств";
extern double Risk = 5;
extern string Descr5 = "Magic Number";
extern int MagicNumber = 37025;
extern string Descr6 = "Макс.спред в пунктах";
extern double MaxSpread = 3; // стандартных пунктов
extern string Descr7 = "Номер счета для торговли, 0 - любой счет";
extern int Account = 0;
extern string Descr8 = "Мин. и макс. лот, 0 - без ограничений";
extern double HighLot = 0;
extern double LowLot = 0;
extern string Descr9 = "Использовать виртуальный стопаут";
extern bool StopOut = true;
extern string DescrA = "Порог для стоплосса в пунктах";
extern int VirtStop = 100;
//--- global variables ---
string NameExpert = "AnSol ZigZag";
string sSymbol;
string sComments;
string sPair[], sPairID[];
//--- INT ---
int ExtDeviation = 5;
int ExtBackStep = 3;
int Method = 1;
int ExtDepth, iPips, iTF, iPrevZ, ticks, Rticks, iPairIndex;
//--- DOUBLE ---
double dTFATR, dAVZ, dPairID;
//--- BOOL ---
bool fOpenBuy, fCloseBuy, fOpenSell, fCloseSell;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
Sleep(10000);
iPairIndex = 0;
if(Account > 0 && Account != AccountNumber()) { Comment("Trade on account: "+AccountNumber()+" FORBIDDEN!\n", TimeToStr(TimeLocal(),TIME_MINUTES)); return(-1); }
if(!IsExpertEnabled()) { Comment("Experts is disabled!\n", TimeToStr(TimeLocal(),TIME_MINUTES)); return(-1); }
if(AccountBalance() == 0) { Comment("Zero balance!\n", TimeToStr(TimeLocal(),TIME_MINUTES)); return(-1); }
iTF = Period();
// Этот кусок формирует массив доступных для торговли валютных пар
string SymbolSuffix = "";
int SymbolEnabled, Separator;
if (StringLen(Symbol()) > 6) SymbolSuffix = StringSubstr(Symbol(), 6, StringLen(Symbol()) - 1);
string sPairTemp[], sTFConv, SymbolRow;
for (int flag = 1; flag < 8; flag++) {
switch (flag) {
case 1:
SymbolRow = Symbols1;
break;
case 2:
SymbolRow = Symbols2;
break;
case 3:
SymbolRow = Symbols3;
break;
case 4:
SymbolRow = Symbols4;
break;
case 5:
SymbolRow = Symbols5;
break;
case 6:
SymbolRow = Symbols6;
break;
case 7:
SymbolRow = Symbols7;
}
Separator = glSeparateStringInArray(SymbolRow, sPairTemp, ";");
for (int isPair = 0; isPair < Separator; isPair++) {
SymbolEnabled = StringFind(sPairTemp[isPair], ":");
if (SymbolEnabled != -1) {
sTFConv = glStringTrimAll(StringSubstr(sPairTemp[isPair], SymbolEnabled + 1));
if (StringLen(sTFConv) == 6)
{
sSymbol = glStringTrimAll(StringSubstr(sPairTemp[isPair], 0, SymbolEnabled) + SymbolSuffix);
iPairIndex++;
ArrayResize(sPair, iPairIndex);
ArrayResize(sPairID, iPairIndex);
sPairID[iPairIndex - 1] = sTFConv;
sPair[iPairIndex - 1] = sSymbol;
}
}
}
}
if(!iPairIndex) { Comment("Нет разрешенных пар для эксперта!"); return(-1); }