Spread_mon_kyo

Author: Copyright(c) 2009-2010, kyojee
Spread_mon_kyo
Miscellaneous
Uses files from the file systemIt writes information to file
0 Views
0 Downloads
0 Favorites
Spread_mon_kyo
//+---------------------------------------------------------------+
//|                                            Spread_mon_kyo.mq4 |
//| 2010/02/27 by kyojee                                          |
//+---------------------------------------------------------------+
#property copyright "Copyright(c) 2009-2010, kyojee"
#property link      "http://kyojee.ps.land.to/"

#property indicator_separate_window
//---- input parameters
extern bool Logon = false;
extern string suffix_str = "";

string Currencies[] = {"AUDUSD","CHFJPY","EURAUD","EURCAD","EURCHF","EURGBP",
                       "EURJPY","EURUSD","GBPCHF","GBPJPY","GBPUSD","USDCAD",
                       "USDCHF","USDJPY"};
int      Vol, Spr, Lfp;
double   Pair[14];
string   Lofile;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
   IndicatorShortName("Spread_mon_kyo");
   for (int i = 0; i < ArraySize(Currencies); i++) {
      Pair[i] = 0;
   }
   Vol = 0;
   if (Logon) {
      Lofile = "Spr_mon_kyo" + TimeToStr(TimeCurrent(),TIME_DATE) + ".csv";
      Lfp = FileOpen(Lofile, FILE_CSV|FILE_WRITE, ';');
      if (Lfp < 0) {
         Print(Lofile + " could not make log_file: ", GetLastError());
         return (-1);
      } else {
         FileWrite(Lfp,"Time","AUDUSD","CHFJPY","EURAUD","EURCAD","EURCHF","EURGBP",
                              "EURJPY","EURUSD","GBPCHF","GBPJPY","GBPUSD","USDCAD",
                              "USDCHF","USDJPY");
         FileFlush(Lfp);
      }
   }
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
  for (int i = 0; i < ArraySize(Currencies); i++) {
     delete_text(Currencies[i] + suffix_str);
     delete_text(Currencies[i] + suffix_str + "2");
     delete_text("Log");
     delete_text("Log2");
  }
  if (Lfp > 0) {
        FileClose(Lfp);
  }
  return(0);
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
{
   int      i, siz;
   string   spm[14];
   siz = ArraySize(Currencies);

   if (Newbar()) {
      if (Vol != 0  && Logon) {
         for (i = 0; i < siz; i++) {
            //Print(Currencies[i] + suffix_str + ":", DoubleToStr(Pair[i] / Vol, 2), "  vol:", Vol);
            spm[i] = DoubleToStr(Pair[i] / Vol, 2);
         }
         FileWrite(Lfp, TimeToStr(TimeCurrent(),TIME_MINUTES|TIME_SECONDS),
            spm[0],spm[1],spm[2],spm[3],spm[4],spm[5],spm[6],
            spm[7],spm[8],spm[9],spm[10],spm[11],spm[12],spm[13]
         );
         FileFlush(Lfp);
         // Print(TimeToStr(TimeCurrent(),TIME_MINUTES|TIME_SECONDS));
      }
      Vol = 0;
      for (i = 0; i < siz; i++) {
         Pair[i] = 0;
      }
   } else {
      for (i = 0; i < siz; i++) {
         Spr = MarketInfo(Currencies[i] + suffix_str, MODE_SPREAD);
         disp_text("Log", 100, 2);
         disp_spread(Currencies[i] + suffix_str, (i % 7) * 90 + 20, 18 + 12 * MathFloor(i / 7));
         sum_cur(Currencies[i] + suffix_str, i);      
      }
      Vol += 1;
   }
   return(0);
}

void sum_cur(string cur, int i)
{
   Pair[i] += Spr;
   // Print(cur+ ":",i,": ", Pair[i]);
}

void disp_spread(string cur, int x, int y)
{
   ObjectCreate(cur, OBJ_LABEL, WindowFind("Spread_mon_kyo"), 0, 0);
   ObjectSetText(cur, cur + " : ", 9, "Arial Bold", LightGray);
   ObjectSet(cur, OBJPROP_CORNER, 0);
   ObjectSet(cur, OBJPROP_XDISTANCE, x);
   ObjectSet(cur, OBJPROP_YDISTANCE, y);

   ObjectCreate(cur + "2", OBJ_LABEL, WindowFind("Spread_mon_kyo"), 0, 0);
   ObjectSetText(cur + "2", DoubleToStr(Spr,0), 9, "Arial Bold", Lime);
   ObjectSet(cur + "2", OBJPROP_CORNER, 0);
   ObjectSet(cur + "2", OBJPROP_XDISTANCE, x + 65);
   ObjectSet(cur + "2", OBJPROP_YDISTANCE, y);
}

void disp_text(string cur, int x, int y)
{
   ObjectCreate(cur, OBJ_LABEL, WindowFind("Spread_mon_kyo"), 0, 0);
   ObjectSetText(cur, cur + " : ", 9, "Arial Bold", LightGray);
   ObjectSet(cur, OBJPROP_CORNER, 0);
   ObjectSet(cur, OBJPROP_XDISTANCE, x);
   ObjectSet(cur, OBJPROP_YDISTANCE, y);

   ObjectCreate(cur + "2", OBJ_LABEL, WindowFind("Spread_mon_kyo"), 0, 0);
   if (Logon) {
      ObjectSetText(cur + "2", "On", 9, "Arial Bold", Red);
   } else {
      ObjectSetText(cur + "2", "Off", 9, "Arial Bold", Gray);
   }
   ObjectSet(cur + "2", OBJPROP_CORNER, 0);
   ObjectSet(cur + "2", OBJPROP_XDISTANCE, x + 40);
   ObjectSet(cur + "2", OBJPROP_YDISTANCE, y);
}

void delete_text(string cur) {
   ObjectDelete(cur);
}

bool Newbar()
{
   static datetime dt = 0;
   if (iTime(NULL, PERIOD_M1, 0) != dt)
   {
      dt = iTime(NULL, PERIOD_M1, 0);
      return(true);
   }
   return(false);
}

Comments