Forex Thai EA

กรุณา เข้าสู่ระบบ หรือ สมัครสมาชิก.

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
การค้นหาขั้นสูง  

ข่าว:

เราจะรวยได้ด้วยบอท

ผู้เขียน หัวข้อ: Daily Signal สูตรขึ้นสองลงสอง (2ป2)  (อ่าน 604 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

admin

  • Administrator
  • Full Member
  • *****
  • ออฟไลน์ ออฟไลน์
  • กระทู้: 202
  • i ma forex trader
    • ดูรายละเอียด
Daily Signal สูตรขึ้นสองลงสอง (2ป2)
« เมื่อ: พฤศจิกายน 07, 2017, 09:36:08 PM »

Daily Signal สูตรขึ้นสองลงสอง (2ป2)



น่าจะเป็นตัวอย่างการใช้ indicator เอามาอ่านค่าจากหลายๆคู่เงินในครั้งเดียว หรือจะให้รีเฟรชแบบเรียลไทม์ไปเลยก็ได้

ตัวอย่าง ตามไฟล์แนบ

ที่เน้นคือตัวอย่างการวนลูปเพื่อเรียกค่าเงินของคู่ต่างๆออกมา จากหน้าต่าง market watch ซึ่งถ้าไม่ได้มีการเปิดมาไว้ที่ market watch มันก็จะไม่ดึงเอาค่าเงินออกมาด้วย

โค๊ด: [Select]
//+------------------------------------------------------------------+
//|                                                        test2.mq4 |
//|                                                        iamgotzaa |
//|                                       http://www.forexthaiea.com |
//+------------------------------------------------------------------+
#property copyright "iamgotzaa"
#property link      "http://www.forexthaiea.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
//#include "SmallFunc.mqh"
//#include "LastOrder.mqh"
//#include "MQL4OBJ.mqh"
//#include "header_newbar.mqh"
//#include "newtrail.mqh"
bool printonce=true;
//input bool emailenable=true;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   int height=(int)ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS);
   int width=(int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS);

   RectLabelCreate(0,"bg",0,0,0,width,height,clrGray);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   string commstr;
   string nonesignalsymbols;
   int column=0;
   for(int i=0;i<SymbolsTotal(true);i++)
     {
      string sb=SymbolName(i,true);

      double gain[4];
      //gain[3]=iClose(sb,PERIOD_D1,3)-iClose(sb,PERIOD_D1,4);
      //gain[2]=iClose(sb,PERIOD_D1,2)-iClose(sb,PERIOD_D1,3);
      //gain[1]=iClose(sb,PERIOD_D1,1)-iClose(sb,PERIOD_D1,2);
      //gain[0]=iClose(sb,PERIOD_D1,0)-iClose(sb,PERIOD_D1,1);
      gain[3]=iClose(sb,PERIOD_D1,4)-iClose(sb,PERIOD_D1,5);
      gain[2]=iClose(sb,PERIOD_D1,3)-iClose(sb,PERIOD_D1,4);
      gain[1]=iClose(sb,PERIOD_D1,2)-iClose(sb,PERIOD_D1,3);
      gain[0]=iClose(sb,PERIOD_D1,1)-iClose(sb,PERIOD_D1,2);
      bool opensellsignal=(gain[3]>0 && gain[2]>0 && gain[1]<0 && gain[0]<0);
      bool openbuysignal=(gain[3]<0 && gain[2]<0 && gain[1]>0 && gain[0]>0);

      string barsizestr="";
      barsizestr=pxpipStr2(gain[3],sb,0,false)+","+
                 pxpipStr2(gain[2],sb,0,false)+","+
                 pxpipStr2(gain[1],sb,0,false)+","+
                 pxpipStr2(gain[0],sb,0,false);
      string signal;
      string dist="";
      if(opensellsignal)
        {
         signal=", Sell signal, ";
        }
      else if(openbuysignal)
        {
         signal=", Buy signal, ";
        }
      else
        {
         signal=", none, ";
         //barsizestr="";
        }
      string linecomment="";
      StringAdd(linecomment,sb+":"+signal+barsizestr+"\n");

      if(opensellsignal || openbuysignal)
        {
         StringAdd(commstr,linecomment);
         if(printonce==true)
           {
            Print(linecomment);
           }
        }
      else
        {
         column++;
         if(column==5)
           {
            nonesignalsymbols=nonesignalsymbols+sb+", \n";
            column=0;
           }
         else
           {
            nonesignalsymbols=nonesignalsymbols+sb+", ";

           }
        }

      //---
     }

   if(printonce)
     {
      int height=(int)ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS);
      int width=(int)ChartGetInteger(0,CHART_WIDTH_IN_PIXELS);
      ChartScreenShot(0,TimeToString(TimeCurrent(),TIME_DATE)+"signals.bmp",width,height,ALIGN_LEFT);

     }
   string Header="";
   StringAdd(Header,"\nCreate by iamgotzaa www.forexthaiea.com");
   StringAdd(Header,"\nBelow signals generated on "+TimeToString(TimeCurrent(),TIME_DATE)+"\n");
   printonce=false;
   Comment(Header,commstr,"\n No signal pairs:\n",nonesignalsymbols);
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Create rectangle label                                           |
//+------------------------------------------------------------------+
bool RectLabelCreate(const long             chart_ID=0,               // chart's ID
                     const string           name="RectLabel",         // label name
                     const int              sub_window=0,             // subwindow index
                     const int              x=0,                      // X coordinate
                     const int              y=0,                      // Y coordinate
                     const int              width=50,                 // width
                     const int              height=18,                // height
                     const color            back_clr=C'236,233,216',  // background color
                     const ENUM_BORDER_TYPE border=BORDER_SUNKEN,     // border type
                     const ENUM_BASE_CORNER corner=CORNER_LEFT_UPPER, // chart corner for anchoring
                     const color            clr=clrRed,               // flat border color (Flat)
                     const ENUM_LINE_STYLE  style=STYLE_SOLID,        // flat border style
                     const int              line_width=1,             // flat border width
                     const bool             back=false,               // in the background
                     const bool             selection=false,          // highlight to move
                     const bool             hidden=true,              // hidden in the object list
                     const long             z_order=0)                // priority for mouse click
  {
//--- reset the error value
   ResetLastError();
//--- create a rectangle label
   if(!ObjectCreate(chart_ID,name,OBJ_RECTANGLE_LABEL,sub_window,0,0))
     {
      Print(__FUNCTION__,
            ": failed to create a rectangle label! Error code = ",GetLastError());
      return(false);
     }
//--- set label coordinates
   ObjectSetInteger(chart_ID,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(chart_ID,name,OBJPROP_YDISTANCE,y);
//--- set label size
   ObjectSetInteger(chart_ID,name,OBJPROP_XSIZE,width);
   ObjectSetInteger(chart_ID,name,OBJPROP_YSIZE,height);
//--- set background color
   ObjectSetInteger(chart_ID,name,OBJPROP_BGCOLOR,back_clr);
//--- set border type
   ObjectSetInteger(chart_ID,name,OBJPROP_BORDER_TYPE,border);
//--- set the chart's corner, relative to which point coordinates are defined
   ObjectSetInteger(chart_ID,name,OBJPROP_CORNER,corner);
//--- set flat border color (in Flat mode)
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- set flat border line style
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- set flat border width
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,line_width);
//--- display in the foreground (false) or background (true)
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- enable (true) or disable (false) the mode of moving the label by mouse
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- hide (true) or display (false) graphical object name in the object list
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- set the priority for receiving the event of a mouse click in the chart
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- successful execution
   return(true);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string pxpipStr2(double pricegap,
                 string _symbol,
                 int decimal=0,
                 bool showunits=true)//zero or one
  {

   if(!showunits)
     {
      return(DoubleToString(pxpip2(pricegap,_symbol),1));
     }
   return(DoubleToString(pxpip2(pricegap,_symbol),1)+" pips");
  }
//+------------------------------------------------------------------+
double pxpip2(double pricegap,string _symbol)
  {
   string _cc=StringSubstr(_symbol,0,3);
   string _cb=StringSubstr(_symbol,3,3);
   bool yen=false;
   if(_cc=="JPY" || _cb=="JPY")
      yen=true;
   double retval=0;
   retval=pricegap*MathPow(10,(int)MarketInfo(_symbol,MODE_DIGITS)-1);
   if(yen)
     {
      retval=pricegap*100;
     }
   return(retval);
  }

บันทึกการเข้า

admin

  • Administrator
  • Full Member
  • *****
  • ออฟไลน์ ออฟไลน์
  • กระทู้: 202
  • i ma forex trader
    • ดูรายละเอียด
Re: Daily Signal สูตรขึ้นสองลงสอง (2ป2)
« ตอบกลับ #1 เมื่อ: พฤศจิกายน 07, 2017, 09:36:43 PM »

ที่อยากยกตัวอย่างของการใช้งาน
บันทึกการเข้า
 

+ ตอบด่วน

หน้านี้ถูกสร้างขึ้นภายในเวลา 0.082 วินาที กับ 23 คำสั่ง