Orders Execution
Indicators Used
Miscellaneous
1
Views
0
Downloads
0
Favorites
SWAP (1)
//+------------------------------------------------------------------+
//| SWAP.mq4 |
//| Copyright © 2009, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#define MAXORDERS 1000
extern bool bUseStopLevelForTS = True;
extern bool bUseTPLevelFor = True;
extern double ATRStopPeriod= 14;
extern double ATRStopRatio = 0.5;
extern double lot = 0.1;
extern int MagicNumber = 777;
extern bool PolLots = true;
extern int MaxOrders = 1152;
extern double Ratio=1.01;//
extern string About = "<<< Instant Trade Analyzer >>>";
extern string AnalyzerSetting = "<<< Analyzer Setting >>>";
extern bool ChartSymbolOnly = false;
extern int SpecificMagic = 0;
extern bool UsePeriod = false;
extern string From = "2009.01.01";
extern string Till = "2009.02.01";
extern string KellySetting = "<<< Optimal f (Kelly) Setting >>>";
extern double Fractional_Kelly = 0.25;
extern int StopLoss_for_Kellylot = 3000;
extern string SkipCommentSetting = "<<< Skip Comment Setting >>>";
extern string SkipComment_1 = "Deposit";
extern string SkipComment_2 = "";
extern string SkipComment_3 = "";
extern string SkipComment_4 = "";
extern string SkipComment_5 = "";
string EANAME = "Instant Trade Analyzer";
string SkipComment[];
int SkipComments;
int DQ_ADJUST [] = { 0 , 0 , 1 , 10 , 1 , 10 , 100 };
int DQADJ, Ldig, DIGITS;
int TrailingStop,TakeProfit,prevtime,InitialSL;
double curprof;
bool exit,tickvalue,atrstop;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----------------------- GENERATE MAGIC NUMBER AND TICKET COMMENT
//----------------------- SOURCE : PENGIE
MagicNumber = subGenerateMagicNumber(MagicNumber, Symbol(), Period());
tickvalue = MarketInfo(Symbol(),MODE_TICKVALUE);
DIGITS = MarketInfo(Symbol(),MODE_DIGITS);
DQADJ = DQ_ADJUST [ DIGITS ];
Ldig = 2;
if(MarketInfo(Symbol(),MODE_MINLOT) > 0.07) Ldig = 1;
if(MarketInfo(Symbol(),MODE_MINLOT) > 0.7) Ldig = 0;
int i=0;
if(SkipComment_1 != "") { SkipComment[i] = SkipComment_1; i++; }
if(SkipComment_2 != "") { SkipComment[i] = SkipComment_2; i++; }
if(SkipComment_3 != "") { SkipComment[i] = SkipComment_3; i++; }
if(SkipComment_4 != "") { SkipComment[i] = SkipComment_4; i++; }
if(SkipComment_5 != "") { SkipComment[i] = SkipComment_5; i++; }
SkipComments = i;
Trade_Analyzer();
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
CheckTradeContext();
Trade_Analyzer();
//--------------------------------------------------------------------------------------------------------------
if(bUseStopLevelForTS)TrailingStop = MarketInfo(Symbol(),MODE_SPREAD);
if(bUseTPLevelFor)TakeProfit = MarketInfo(Symbol(),MODE_SPREAD);
if (AccountEquity()/AccountBalance()>Ratio) closeOrders();
atrstop=iATR(NULL,0,ATRStopPeriod,1);
InitialSL = atrstop*ATRStopRatio/Point;
int i=0;
int total = OrdersTotal();
for(i = 0; i <= total; i++)
{
if(TrailingStop>0)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderMagicNumber() == MagicNumber)
{
TrailingStairs(OrderTicket(),TrailingStop);
}
}
}
bool BuyOp=false;
bool SellOp=false;
if (MarketInfo(Symbol(), MODE_SWAPLONG) > 0) BuyOp=true;
if (MarketInfo(Symbol(), MODE_SWAPSHORT) > 0) SellOp=true;
{
}
if(Time[0] == prevtime)
return(0);
prevtime = Time[0];
if(!IsTradeAllowed())
{
prevtime = Time[1];
return(0);
}
if(Volume[0]>1) return;
if (total < MaxOrders || MaxOrders == 0)
{
if(BuyOp)
{
if (InitialSL!=0)
{
OrderSend(Symbol(),OP_BUY,lot,Ask,3,Bid-(InitialSL*Point),Bid+TakeProfit*Point,"SWAP_Buy",MagicNumber,0,Green);
}
else
{
OrderSend(Symbol(),OP_BUY,lot,Ask,3,0,0,"SWAP_Buy",MagicNumber,0,Green);
}
}
if(SellOp)
{
if (InitialSL!=0)
{
OrderSend(Symbol(),OP_SELL,lot,Bid,3,Ask+(InitialSL*Point),Ask-TakeProfit*Point,"SWAP_Sell",MagicNumber,0,Red);
}
else
{
OrderSend(Symbol(),OP_SELL,lot,Bid,3,0,0,"SWAP_Sell",MagicNumber,0,Red);
}
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
void TrailingStairs(int ticket,int trldistance)
{
int Spred=Ask - Bid;
if (OrderType()==OP_BUY)
{
if((Bid-OrderOpenPrice())>(Point*trldistance))
{
if(OrderStopLoss()<Bid-Point*trldistance || (OrderStopLoss()==0))
{
OrderModify(ticket,OrderOpenPrice(),Bid-Point*trldistance,OrderTakeProfit(),0,Blue);
if (PolLots)
if (NormalizeDouble(OrderLots()/2,2)>MarketInfo(Symbol(), MODE_MINLOT))
{
OrderClose(ticket,NormalizeDouble(OrderLots()/2,2),Ask,3,Green);
}
else
{
OrderClose(ticket,OrderLots(),Ask,3,Green);
}
}
}
}
else
{
if((OrderOpenPrice()-Ask)>(Point*trldistance))
{
if((OrderStopLoss()>(Ask+Point*trldistance)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*trldistance,OrderTakeProfit(),0,Red);
if (PolLots)
if (NormalizeDouble(OrderLots()/2,2)>MarketInfo(Symbol(), MODE_MINLOT))
{
OrderClose(ticket,NormalizeDouble(OrderLots()/2,2),Bid,3,Green);
}
else
{
OrderClose(ticket,OrderLots(),Bid,3,Green);
}
}
}
}
}
//-----------------------------------------
void CheckTradeContext()
{
if(!IsTradeAllowed())
{
// Print("Trade context is busy! Wait until it is free...");
// infinite loop
while(true)
{
// if the expert was stopped by the user, stop operation
if(IsStopped())
{
// Print("The expert was stopped by the user!");
return(-1);
}
// if trade context has become free, terminate the loop and start trading
if(IsTradeAllowed())
{
// Print("Trade context has become free!");
break;
}
// if no loop breaking condition has been met, "wait" for 0.1 sec
// and restart checking
Sleep(100);
}
}
}
//+------------------------------------------------------------------+
//| Trade Analyzer
//+------------------------------------------------------------------+
void Trade_Analyzer()
{
string ln = "\n";
string DAAAAASH = "---------------------------------------------------------------" +ln;
double BUY_TRADES = Trades(0);
double SELL_TRADES = Trades(1);
double TOTAL_TRADES = BUY_TRADES + SELL_TRADES;
if(OrdersHistoryTotal() < 1 || TOTAL_TRADES < 0.9)
{
Comment( DAAAAASH + EANAME +ln+ DAAAAASH + "No History to analyze." );
return(0);
}
string COMMENT = "";
// Analyzer Condition --------------------------------------
// Period
int PeriodStart = PeriodSearch("Start");
int PeriodEnd = PeriodSearch("End");
double PERIOD = PeriodEnd - PeriodStart;
double PERIODinDAYS = PERIOD/86400;
if(UsePeriod) COMMENT = COMMENT + "Period : "+ TS(StrToTime(From),"Day") +" - "+ TS(StrToTime(Till),"Day")+" ("+DS2(PERIODinDAYS)+"days)" +ln;
if(!UsePeriod) COMMENT = COMMENT + "Period : "+ TS(PeriodStart,"Day") +" - "+ TS(PeriodEnd,"Day")+" ("+DS2(PERIODinDAYS)+"days)" +ln;
// Symbol
string SYMBOL = "All Symbol";
if(ChartSymbolOnly) SYMBOL = "Chart Symbol Only ("+Symbol()+")";
COMMENT = COMMENT + "Symbol : " + SYMBOL +ln;
// Magic
string MAGIC = "All Magic";
if(SpecificMagic > 0) MAGIC = SpecificMagic + " Only";
COMMENT = COMMENT + "Magic : " + MAGIC +ln;
COMMENT = COMMENT + DAAAAASH; // ---------------------------------------------------------------
// Statistics --------------------------------------
double BUY_WINS = Wins(0); double BUY_LOSSES = BUY_TRADES - BUY_WINS;
double SELL_WINS = Wins(1); double SELL_LOSSES = SELL_TRADES - SELL_WINS;
double TOTAL_WINS = BUY_WINS + SELL_WINS; double TOTAL_LOSSES = TOTAL_TRADES - TOTAL_WINS;
// Winning Average
double WinAv_Total = 0.0;
if(TOTAL_TRADES > 0.001) WinAv_Total = TOTAL_WINS / TOTAL_TRADES;
double WinAv_Buy = 0.0;
if(BUY_TRADES > 0.001) WinAv_Buy = BUY_WINS / BUY_TRADES;
double WinAv_Sell = 0.0;
if(SELL_TRADES > 0.001) WinAv_Sell = SELL_WINS / SELL_TRADES;
double TradeFrequency = 0.0;
if(PERIODinDAYS > 0.001) TradeFrequency = TOTAL_TRADES / PERIODinDAYS;
COMMENT = COMMENT + "Trades : " + DS0(TOTAL_TRADES) +" (Total) / "+DS0(BUY_TRADES) +" (buy) / "+DS0(SELL_TRADES) +" (sell)" +ln;
COMMENT = COMMENT + "Trade Frequency : "+ DS2( TradeFrequency ) + " trades / day"+ln;
COMMENT = COMMENT + "Win. Average (Total) : " + DS2(WinAv_Total*100) +"%"+ln;
COMMENT = COMMENT + "Win. Average (Buy) : " + DS2(WinAv_Buy*100) +"%"+ln;
COMMENT = COMMENT + "Win. Average (Sell) : " + DS2(WinAv_Sell*100) +"%"+ln;
COMMENT = COMMENT + DAAAAASH; // ---------------------------------------------------------------
// Average P/L
double Buy_Profit = Profit(0);
double Sell_Profit = Profit(1);
double Total_Profit = Buy_Profit + Sell_Profit;
double Buy_Loss = Loss(0);
double Sell_Loss = Loss(1);
double Total_Loss = Buy_Loss + Sell_Loss;
double Total_PL = Total_Profit - Total_Loss;
double Av_Profit_Total = 0.0;
if(TOTAL_WINS > 0.001) Av_Profit_Total = Total_Profit / TOTAL_WINS;
double Av_Loss_Total = 0.0;
if(TOTAL_LOSSES > 0.001) Av_Loss_Total = Total_Loss / TOTAL_LOSSES;
double PL_RATIO_Total = 0.0;
if(Av_Loss_Total > 0.001) PL_RATIO_Total = Av_Profit_Total / Av_Loss_Total;
COMMENT = COMMENT + "Total P/L : "+DS2(Total_PL) +" "+AccountCurrency() +ln;
COMMENT = COMMENT + "Average Win : "+DS2(Av_Profit_Total) +" "+AccountCurrency() +ln;
COMMENT = COMMENT + "Average Loss : "+DS2(Av_Loss_Total) +" "+AccountCurrency() +ln;
COMMENT = COMMENT + "Profit / Loss Ratio : "+DS2(PL_RATIO_Total) +ln;
COMMENT = COMMENT + DAAAAASH; // ---------------------------------------------------------------
// Yardsticks ---------------------------------------------------------------------
// Profit Factor
double ProfitFactor = 0.0;
if(Total_Loss > 0.001) ProfitFactor = Total_Profit / Total_Loss;
COMMENT = COMMENT + "Profit Factor : "+DS2(ProfitFactor) +ln;
// Success Score
COMMENT = COMMENT + "Success Score : "+DS2(PL_RATIO_Total * WinAv_Total * 100) +ln;
// BreakEven Rate
double Recovery = 0.0;
if(Av_Profit_Total > 0.001) Recovery = Av_Loss_Total / Av_Profit_Total;
double BreakEvenRate = Recovery / (1 + Recovery);
COMMENT = COMMENT + "BreakEven Rate : "+DS2(BreakEvenRate * 100) + "%" +ln;
COMMENT = COMMENT + DAAAAASH; // ---------------------------------------------------------------
// Optimal f (Kelly)
double Optimal_f = 0.0;
if(PL_RATIO_Total > 0.001) Optimal_f = ( (PL_RATIO_Total + 1) * WinAv_Total - 1 ) / PL_RATIO_Total;
COMMENT = COMMENT + "Optimal f (Kelly) : "+DS2(Optimal_f * 100) +"%" +ln;
if(Fractional_Kelly < 0.9999) COMMENT = COMMENT + "Fractional Kelly ("+DS2(Fractional_Kelly)+") : "+DS2(Optimal_f*Fractional_Kelly*100) +"%" +ln;
string Fractional = ""; if(Fractional_Kelly < 0.9999) Fractional = ", Fractional";
double Kellylot = 0.0;
if(StopLoss_for_Kellylot>0.001) Kellylot = (AccountBalance() * Optimal_f*Fractional_Kelly) / ( MarketInfo(Symbol(),MODE_TICKVALUE) * StopLoss_for_Kellylot * DQADJ );
COMMENT = COMMENT + "Risk by Optimal f : "+DoubleToStr(Kellylot,Ldig) +" lot (SL : "+StopLoss_for_Kellylot+"pips"+Fractional+")" +ln;
Comment(
DAAAAASH + EANAME +ln+
DAAAAASH + COMMENT
);
}
//+------------------------------------------------------------------+
//| DS2 (string) double Val
//+------------------------------------------------------------------+
string DS2(double Val)
{
return(DoubleToStr(Val,2));
}
//+------------------------------------------------------------------+
//| DS0 (string) double Val
//+------------------------------------------------------------------+
string DS0(double Val)
{
return(DoubleToStr(Val,0));
}
//+------------------------------------------------------------------+
//| TS (string) int SEC
//+------------------------------------------------------------------+
string TS(int SEC, string Mode)
{
if(Mode == "Day") return( TimeToStr(SEC, TIME_DATE) );
if(Mode == "Min") return( TimeToStr(SEC, TIME_DATE|TIME_MINUTES) );
}
//+------------------------------------------------------------------+
//| PeriodSearch (datetime)
//+------------------------------------------------------------------+
datetime PeriodSearch(string Mode)
{
datetime PeriodStart = 161059999999;
datetime PeriodEnd = 0;
for(int i=0; i<OrdersHistoryTotal(); i++)
{
if( !OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) ) continue; // select check
if( OrderType() > 1) continue; // order type check
if( IsSkip( OrderSymbol(), OrderMagicNumber(), OrderComment(), OrderOpenTime(), OrderCloseTime()) ) continue;
if(Mode == "Start") PeriodStart = MathMin(PeriodStart,OrderCloseTime());
if(Mode == "End") PeriodEnd = MathMax(PeriodEnd,OrderCloseTime());
}
if(Mode == "Start") return(PeriodStart);
if(Mode == "End") return(PeriodEnd);
}
//+------------------------------------------------------------------+
//| IsSkip (bool)
//+------------------------------------------------------------------+
bool IsSkip(string ORDERSYMBOL, int ORDERMAGIC, string ORDERCOMMENT, datetime ORDEROPENTIME, datetime ORDERCLOSETIME)
{
if(ChartSymbolOnly && Symbol() != ORDERSYMBOL) return(true); // symbol check
if(SpecificMagic > 0 && ORDERMAGIC != SpecificMagic) return(true); // magic check
if( IsSkipComment( ORDERCOMMENT ) ) return(true); // comment check
if( UsePeriod && IsOutsidePeriod( ORDEROPENTIME, ORDERCLOSETIME ) ) return(true); // period check
return(false);
}
//+------------------------------------------------------------------+
//| IsSkipComment (bool)
//+------------------------------------------------------------------+
bool IsSkipComment(string OrdComment)
{
bool IsSkipComment = false;
for(int i=0; i<SkipComments; i++) if(StringFind(OrdComment, SkipComment[i]) != -1) IsSkipComment = true;
return(IsSkipComment);
}
//+------------------------------------------------------------------+
//| IsOutsidePeriod (bool)
//+------------------------------------------------------------------+
bool IsOutsidePeriod(datetime OPEN, datetime CLOSE)
{
bool OutsidePeriod = false;
if(OPEN < StrToTime(From)) OutsidePeriod = true;
if(CLOSE > StrToTime(Till)) OutsidePeriod = true;
return(OutsidePeriod);
}
//+------------------------------------------------------------------+
//| Trades (int)
//+------------------------------------------------------------------+
int Trades(int OrdType)
{
int Trades = 0;
for(int i=0; i<OrdersHistoryTotal(); i++)
{
if( !OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) ) continue; // select check
if( OrderType() != OrdType ) continue; // order type check
if( IsSkip( OrderSymbol(), OrderMagicNumber(), OrderComment(), OrderOpenTime(), OrderCloseTime()) ) continue;
Trades++;
}
return(Trades);
}
//+------------------------------------------------------------------+
//| Wins (int)
//+------------------------------------------------------------------+
int Wins(int OrdType)
{
int Wins = 0;
for(int i=0; i<OrdersHistoryTotal(); i++)
{
if( !OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) ) continue; // select check
if( OrderType() != OrdType ) continue; // order type check
if( IsSkip( OrderSymbol(), OrderMagicNumber(), OrderComment(), OrderOpenTime(), OrderCloseTime()) ) continue;
if(OrderProfit()+OrderSwap()+OrderCommission() >= 0) Wins++;
}
return(Wins);
}
//+------------------------------------------------------------------+
//| Profit (double)
//+------------------------------------------------------------------+
double Profit(int OrdType)
{
double Profit = 0.0;
for(int i=0; i<OrdersHistoryTotal(); i++)
{
if( !OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) ) continue; // select check
if( OrderType() != OrdType ) continue; // order type check
if( IsSkip( OrderSymbol(), OrderMagicNumber(), OrderComment(), OrderOpenTime(), OrderCloseTime()) ) continue;
if(OrderProfit()+OrderSwap()+OrderCommission() >= 0) Profit += (OrderProfit()+OrderSwap()+OrderCommission());
}
return(Profit);
}
//+------------------------------------------------------------------+
//| Loss (double)
//+------------------------------------------------------------------+
double Loss(int OrdType)
{
double Loss = 0.0;
for(int i=0; i<OrdersHistoryTotal(); i++)
{
if( !OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) ) continue; // select check
if( OrderType() != OrdType ) continue; // order type check
if( IsSkip( OrderSymbol(), OrderMagicNumber(), OrderComment(), OrderOpenTime(), OrderCloseTime()) ) continue;
if(OrderProfit()+OrderSwap()+OrderCommission() < 0) Loss -= (OrderProfit()+OrderSwap()+OrderCommission());
}
return(Loss);
}
int closeOrders()
{
//----
// ???????? ??? ?????, ? ???? ??? ?? ???? ???? ??????? ?????????????
// ? ???????? ?????? ???????
if (!IsDemo()) {Alert("?? ???????? ????? ?????? ?????????"); return;}
int total=OrdersTotal(); // ?????????? ???????
int ordertype;// ??? ??????
if (total==0) {Alert("??? ??????? ??? ????????/????????");return;}
int ticket; // ????? ?????????? ???? ????? ??????
double priceClose;// ????, ?? ??????? ????? ????????? ???????? ??????
for(int i=total-1;i>=0;i--)
{
if (OrderSelect(i,SELECT_BY_POS))
{
ordertype=OrderType();
ticket=OrderTicket();
switch(ordertype)
{
case 0:
// ??????? ???????
//??????? ???? Bid ?? ???????
priceClose=MarketInfo(OrderSymbol(),MODE_BID);
Print("????????? ?? ",i," ??????? ????? ? ??????? No",ticket);
OrderClose(ticket,OrderLots(),priceClose,3,Red);
break;// ????? ?? ????? switch
case 1:
// ??????? ???????
//??????? ???? Ask ?? ???????
priceClose=MarketInfo(OrderSymbol(),MODE_ASK);
Print("????????? ?? ",i," ??????? ????? ? ??????? No",ticket);
OrderClose(ticket,OrderLots(),priceClose,3,Red);
break;// ????? ?? ????? switch
default:
// ???????? ?? 2 ?? 5, ??????? ?????????? ?????
Print("??????? ?? ",i," ??????? ????? ? ??????? No",ticket);
OrderDelete(ticket);
break;// ????? ?? ????? switch
}
}
}
//----
return(0);
}
//----------------------- GENERATE MAGIC NUMBER BASE ON SYMBOL AND TIME FRAME FUNCTION
int subGenerateMagicNumber(int Magic_Number, string symbol, int timeFrame)
{
int isymbol = 0;
if (symbol == "AUDCAD") isymbol = 1;
else if (symbol == "AUDCHF") isymbol = 2;
else if (symbol == "AUDJPY") isymbol = 3;
else if (symbol == "AUDDKK") isymbol = 4;
else if (symbol == "AUDNZD") isymbol = 5;
else if (symbol == "AUDPLN") isymbol = 6;
else if (symbol == "AUDSGD") isymbol = 7;
else if (symbol == "AUDUSD") isymbol = 8;
else if (symbol == "CADCHF") isymbol = 9;
else if (symbol == "CADJPY") isymbol = 10;
else if (symbol == "CHFCAD") isymbol = 11;
else if (symbol == "CHFJPY") isymbol = 12;
else if (symbol == "CHFSGD") isymbol = 13;
else if (symbol == "EURAUD") isymbol = 14;
else if (symbol == "EURCAD") isymbol = 15;
else if (symbol == "EURCHF") isymbol = 16;
else if (symbol == "EURDKK") isymbol = 17;
else if (symbol == "EURGBP") isymbol = 18;
else if (symbol == "EURHKD") isymbol = 19;
else if (symbol == "EURHUF") isymbol = 20;
else if (symbol == "EURJPY") isymbol = 21;
else if (symbol == "EURLVL") isymbol = 22;
else if (symbol == "EURNOK") isymbol = 23;
else if (symbol == "EURNZD") isymbol = 24;
else if (symbol == "EURPLN") isymbol = 25;
else if (symbol == "EURSEK") isymbol = 26;
else if (symbol == "EURSGD") isymbol = 27;
else if (symbol == "EURSKK") isymbol = 28;
else if (symbol == "EURUSD") isymbol = 29;
else if (symbol == "EURZAR") isymbol = 30;
else if (symbol == "GBPAUD") isymbol = 31;
else if (symbol == "GBPCAD") isymbol = 32;
else if (symbol == "GBPCHF") isymbol = 33;
else if (symbol == "GBPDKK") isymbol = 34;
else if (symbol == "GBPJPY") isymbol = 35;
else if (symbol == "GBPNOK") isymbol = 36;
else if (symbol == "GBPNZD") isymbol = 37;
else if (symbol == "GBPSEK") isymbol = 38;
else if (symbol == "GBPSGD") isymbol = 39;
else if (symbol == "GBPUSD") isymbol = 40;
else if (symbol == "GBPZAR") isymbol = 41;
else if (symbol == "NZDCAD") isymbol = 42;
else if (symbol == "NZDCHF") isymbol = 43;
else if (symbol == "NZDJPY") isymbol = 44;
else if (symbol == "NZDSGD") isymbol = 45;
else if (symbol == "NZDUSD") isymbol = 46;
else if (symbol == "SGDJPY") isymbol = 47;
else if (symbol == "USDCAD") isymbol = 48;
else if (symbol == "USDCHF") isymbol = 49;
else if (symbol == "USDCCK") isymbol = 50;
else if (symbol == "USDDKK") isymbol = 51;
else if (symbol == "USDHKD") isymbol = 52;
else if (symbol == "USDHRK") isymbol = 53;
else if (symbol == "USDHUF") isymbol = 54;
else if (symbol == "USDJPY") isymbol = 55;
else if (symbol == "USDLVL") isymbol = 56;
else if (symbol == "USDLTL") isymbol = 57;
else if (symbol == "USDMXN") isymbol = 58;
else if (symbol == "USDNOK") isymbol = 59;
else if (symbol == "USDPLN") isymbol = 60;
else if (symbol == "USDSEK") isymbol = 61;
else if (symbol == "USDSGD") isymbol = 62;
else if (symbol == "USDSKK") isymbol = 63;
else if (symbol == "USDZAR") isymbol = 64;
else if (symbol == "#AA") isymbol = 65;
else if (symbol == "#AXP") isymbol = 66;
else if (symbol == "#BA") isymbol = 67;
else if (symbol == "#C") isymbol = 68;
else if (symbol == "#DD") isymbol = 69;
else if (symbol == "#DIS") isymbol = 70;
else if (symbol == "#AIG") isymbol = 71;
else if (symbol == "#GE") isymbol = 72;
else if (symbol == "#GM") isymbol = 73;
else if (symbol == "#HD") isymbol = 74;
else if (symbol == "#HON") isymbol = 75;
else if (symbol == "#HPQ") isymbol = 76;
else if (symbol == "#IBM") isymbol = 77;
else if (symbol == "#VZ") isymbol = 78;
else if (symbol == "#INTC") isymbol = 79;
else if (symbol == "#JNJ") isymbol = 80;
else if (symbol == "#JPM") isymbol = 81;
else if (symbol == "#KO") isymbol = 82;
else if (symbol == "#MCD") isymbol = 83;
else if (symbol == "#MMM") isymbol = 84;
else if (symbol == "#MO") isymbol = 85;
else if (symbol == "#MRK") isymbol = 86;
else if (symbol == "#MSFT") isymbol = 87;
else if (symbol == "#PG") isymbol = 88;
else if (symbol == "#T") isymbol = 89;
else if (symbol == "#PFE") isymbol = 90;
else if (symbol == "#UTX") isymbol = 91;
else if (symbol == "#WMT") isymbol = 92;
else if (symbol == "#XOM") isymbol = 93;
else if (symbol == "Gold") isymbol = 94;
else if (symbol == "Silver") isymbol = 95;
else if (symbol == "#EP") isymbol = 96;
else if (symbol == "#ENQ") isymbol = 97;
else if (symbol == "#YM") isymbol = 98;
else if (symbol == "#CL") isymbol = 99;
else if (symbol == "#NG") isymbol = 100;
else if (symbol == "#W") isymbol = 101;
else if (symbol == "#C") isymbol = 102;
else if (symbol == "#S") isymbol = 103;
else isymbol = 104;
if(isymbol<10) Magic_Number = MagicNumber * 10;
return (StrToInteger(StringConcatenate(MagicNumber, isymbol, timeFrame)));
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---