发新话题
打印

[MT指标及EA] 请各位大侠帮我写一个乾坤烛MT4指标

请各位大侠帮我写一个乾坤烛MT4指标

请各位大侠帮我写一个乾坤烛MT4指标

这是一个能显示在MT4上的四度空间图,
//+------------------------------------------------------------------+
//|                                                MarketProfile.mq4 |
//|                             Copyright ?2006, Viatcheslav Suvorov|
//+------------------------------------------------------------------+
#property copyright "Viatcheslav Suvorov"

#property indicator_chart_window


extern datetime StartDate = D'';
extern bool lastdayStart = true;
extern int CountProfile = 2;


int fontsize=10;
int i,j;
double LastHigh,LastLow,CurPos;
bool signal;
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
ObjectsDeleteAll(0,OBJ_RECTANGLE);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;

//---- name for DataWindow and indicator subwindow label
   short_name="MarketProfile";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);

   return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()

  {  
  deinit();
double onetick;  
double Mediana=0;
int MaxSize=0;
int MySize=0;
int MySizeEuropa=0;
int MySizeAzia=0;
int MySizeAmerica=0;
int BACK=0;
if (lastdayStart) StartDate=Time[0];

int x=Period();
if (x>6000) return(-1);
if (x<15) return(-1);


  BACK=0;
  while (TimeDayOfYear(Time[BACK])>TimeDayOfYear(StartDate) || TimeYear(Time[BACK])!=TimeYear(StartDate) && (BACK<Bars)) {  
    BACK++;   
    if (BACK>=Bars) return(0);
  }//while


onetick = 1/(MathPow(10,Digits));
i=BACK;
////
int cycles;

for (cycles=CountProfile;cycles>0;cycles--) {

signal=false;
LastHigh=High;
LastLow=Low;
while (!signal)
{
//if (i+1==Bars) signal=true;
if (High[i+1]>LastHigh) LastHigh=High[i+1];
if (Low[i+1]<LastLow) LastLow=Low[i+1];
MaxSize=0;
MySize=0;

if (TimeDay(Time)!=TimeDay(Time[i+1]))
   {
   
   signal=true;
   CurPos=LastLow;
   while (CurPos<=LastHigh){
     MySizeAzia=0;
     MySizeEuropa=0;
     MySizeAmerica=0;
     for (j=i;j>=BACK;j--) {
       if ((High[j]>=CurPos) && (Low[j]<=CurPos)) {
         MySize++;      
         if (TimeHour(Time[j])>=13)  MySizeAmerica++; else
         if ((TimeHour(Time[j])>=8) && (TimeHour(Time[j])<13)) MySizeEuropa++; else
           MySizeAzia++;
         
       }//if  
     }//for
     if (MySizeAzia+MySizeEuropa+MySizeAmerica>MaxSize){
       MaxSize=MySizeAzia+MySizeEuropa+MySizeAmerica;
       Mediana=CurPos;
     }
     if (i-MySizeAzia>=0)
     if(ObjectFind("rec"+"Azia"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeAzia!=0) {
           ObjectCreate("rec"+"Azia"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time, CurPos,Time[i-MySizeAzia],CurPos+onetick);           
           ObjectSet("rec"+"Azia"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, Olive);
     }//if      
     if(ObjectFind("rec"+"Europa"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeEuropa!=0) {
           ObjectCreate("rec"+"Europa"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeAzia], CurPos,Time[i-MySizeAzia-MySizeEuropa],CurPos+onetick);
           ObjectSet("rec"+"Europa"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, Navy);           
     }//if      
     if(ObjectFind("rec"+"America"+TimeToStr(Time,TIME_DATE)+CurPos) == -1 && MySizeAmerica!=0) {
           ObjectCreate("rec"+"America"+TimeToStr(Time,TIME_DATE)+CurPos, OBJ_RECTANGLE, 0, Time[i-MySizeAzia-MySizeEuropa], CurPos,Time[i-MySizeAzia-MySizeEuropa-MySizeAmerica],CurPos+onetick);
           ObjectSet("rec"+"America"+TimeToStr(Time,TIME_DATE)+CurPos, OBJPROP_COLOR, Maroon);                     
     }//if      
           
     
                     
      
     CurPos=CurPos+onetick;
   }//while
      ObjectCreate("mediana"+TimeToStr(Time,TIME_DATE), OBJ_RECTANGLE, 0, Time, Mediana,Time[i+10],Mediana+onetick);
      ObjectSet("mediana"+TimeToStr(Time,TIME_DATE), OBJPROP_STYLE, STYLE_SOLID);
      ObjectSet("mediana"+TimeToStr(Time,TIME_DATE), OBJPROP_COLOR,White);   
   BACK=i+1;   
   }//if
   i++;   
   if (i>=Bars) return(0);
}//while
}//for
//----
   return(0);
  }
//+------------------------------------------------------------------+

有了四度空间图,就离乾坤烛的步伐近了

这是分析家布林带宽的成交密度,相信对MT4指标的研发有帮助
布林带宽:INPUT:n(21,1,100),p(2,1,10);

MID :=  MA(CLOSE,N);
UPPER:= MID + P*std(c,n);
LOWER:= MID - P*std(c,n);
bwidthupper-lower)/mid,colorwhite;


21II%当日成交密度指标的原代码或者公式
当日成交密度Ⅱ%指标;
v1:=(2*close-high-low)/(high-low)*vol;
ii:dma(v1,1/n),colorstick;
ii,colorwhite


这是四度空间算法

四度空间算法。RAR

TOP

发新话题