Currency





//+------------------------------------------------------------------+
//|                                                     Currency.mq4 |
//|                                         Copyright © 2008, Kharko |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, Kharko"
#property link      ""
 
#property indicator_chart_window
//---- input parameters
extern string Zametki1="ÇÀÏÈÑÜ Â ÔÀÉË ÏÐÎÈÇÂÎÄÈÒÑß Â ÌÎÌÅÍÒ ÍÀÁÐÀÑÛÂÀÍÈß ÍÀ ÃÐÀÔÈÊ. ÔÀÉË ÍÀÕÎÄÈÒÑß experts\files"; 
extern bool      All_Pairs=true;
extern double    Procent=20.0;
 
string      FileName;
string      Para[]={"EURUSD","EURGBP","EURCHF","EURJPY","EURAUD","EURCAD","EURNZD",
                    "GBPUSD","USDCHF","USDJPY","AUDUSD","USDCAD","NZDUSD","GBPCHF",
                    "GBPJPY","GBPAUD","GBPCAD","GBPNZD","CHFJPY","AUDCHF","CADCHF",
                    "NZDCHF","AUDJPY","CADJPY","NZDJPY","AUDCAD","AUDNZD","NZDCAD"};
int         KolPara  = 28,count=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   Comment("");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//----
   if(!IsConnected())return(0);
 
   if(MarketInfo(Symbol(),MODE_TRADEALLOWED) != 1)return(0);
 
   if(count!=1)
   {
      FileName="Currency.csv";
 
      int handle=FileOpen(FileName,FILE_CSV|FILE_WRITE,';');
      if(handle<1)
      {
         handle=FileOpen(FileName,FILE_CSV|FILE_WRITE,';');
      }
      else
      {
         FileClose(handle);
         FileDelete(FileName);
         handle=FileOpen(FileName,FILE_CSV|FILE_WRITE,';');
      }
   
      FileWrite(handle,"Ïàðà","Ñòîèìîñòü ëîòà","Ðàçìåð ëîòà");
 
      if(All_Pairs)
      {
         for(int i=0;i<KolPara;i++)
         {
            if(MarketInfo(Para[i],MODE_TRADEALLOWED) != 1)
               continue;
 
            FileWrite(handle,Para[i],MarketInfo(Para[i],MODE_MARGINREQUIRED),value(i));
            Print(Para[i]," : ",MarketInfo(Para[i],MODE_MARGINREQUIRED)," : ",value(i));
 
         }
         Print("Ïàðà | Ñòîèìîñòü ëîòà | Ðàçìåð ëîòà");
      }
      else
      {
         FileWrite(handle,Symbol(),MarketInfo(Symbol(),MODE_MARGINREQUIRED),value1());
         Print(Symbol()," : ",MarketInfo(Symbol(),MODE_MARGINREQUIRED)," : ",value1());
         Print("Ïàðà | Ñòîèìîñòü ëîòà | Ðàçìåð ëîòà");
      }
 
      FileClose(handle);
      if(MarketInfo(Symbol(),MODE_MARGINREQUIRED)>0)
         count=1;
   }
   Comment("\n",Symbol()," : ",value1()," ëîò ïðè ",Procent,"% çàëîãà îò áàëàíñà");
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
double value(int i)
  {
  int j=1;
  double summa, Lots;
  
  Lots=MarketInfo(Para[i],MODE_LOTSTEP);
//----
   while(j>0)
   {
      summa=0;
      summa=j*Lots*(MarketInfo(Para[i],MODE_MARGINREQUIRED)+MarketInfo(Para[i],MODE_TICKVALUE)*MarketInfo(Para[i],MODE_SPREAD));
      
      if(summa>Procent*AccountFreeMargin()/100)
      {
         j--;
         if(j<1)j=1;
         return(j*Lots);
      }
      j++;
   }
//----
  }
//+------------------------------------------------------------------+
double value1()
  {
  int j=1;
  double summa, Lots;
  
  Lots=MarketInfo(Symbol(),MODE_LOTSTEP);
//----
   while(j>0)
   {
      summa=0;
      summa+=j*Lots*(MarketInfo(Symbol(),MODE_MARGINREQUIRED)+MarketInfo(Symbol(),MODE_TICKVALUE)*MarketInfo(Symbol(),MODE_SPREAD));
      
      if(summa>Procent*AccountFreeMargin()/100)
      {
         j--;
         if(j<1)j=1;
         return(j*Lots);
      }
      j++;
   }
//----
  }



Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features:

Uses files from the file system

It writes information to file