黄金
GG River Flow
回复:0  浏览:216
  • 楼主admin 圈主
  • 2019-05-05 05:15
gg-riverflow-mt4.png

  1. //+------------------------------------------------------------------+
  2. //|                                                 GG-RiverFlow.mq4 |
  3. //|                                         Copyright ?2009, GGekko |
  4. //|                                         http://www.fx-ggekko.com |
  5. //+------------------------------------------------------------------+
  6. #property copyright "Copyright ?2009, GGekko"
  7. #property link      "http://www.fx-ggekko.com"

  8. #property indicator_chart_window

  9. extern string   ___IndicatorSetup___   = ">>> Indicator Setup:<<<";
  10. extern string   Help_for_TFNumbers     = "Maximum: 7";
  11. extern int      TFNumbers              = 7; // max 7
  12. extern int      MA_Shift               = 1;
  13. extern string   ___DisplaySetup___     = ">>> Display Setup:<<<";
  14. extern color    UpColor                = YellowGreen;
  15. extern color    DownColor              = Tomato;
  16. extern color    FlatColor              = Gold;
  17. extern color    TextColor              = CadetBlue;
  18. extern string   Help_for_Corner        = "LeftTop:0, RightTop:1, Not used:2,3!";
  19. extern int      Corner                 = 0;
  20. extern int      PosX                   = 0;
  21. extern int      PosY                   = 0;
  22. extern int      Unique_Id              = 52725;  

  23. int tframe[]={1,5,15,30,60,240,1440};
  24. string tf[]={"1","5","15","30","H1","H4","D1"};
  25. int ma_period[]={2,3,5,8,13,21,34,55,89,144};

  26. string ind[10];
  27. double ma0_1[],ma0_2[];
  28. double ma1_1[],ma1_2[];
  29. double ma2_1[],ma2_2[];
  30. double ma3_1[],ma3_2[];
  31. double ma4_1[],ma4_2[];
  32. double ma5_1[],ma5_2[];
  33. double ma6_1[],ma6_2[];
  34. double ma7_1[],ma7_2[];
  35. double ma8_1[],ma8_2[];
  36. double ma9_1[],ma9_2[];

  37. double IndVal[10][7];


  38. //+------------------------------------------------------------------+
  39. //| Custom indicator initialization function                         |
  40. //+------------------------------------------------------------------+
  41. int init()
  42.   {
  43. //----
  44.    if(Corner==0)
  45.    {
  46.    for(int w=0;w<TFNumbers;w++)
  47.       {
  48.          ObjectCreate(Unique_Id+tf[w],OBJ_LABEL,0,0,0,0,0);
  49.          ObjectSet(Unique_Id+tf[w],OBJPROP_CORNER,Corner);
  50.          ObjectSet(Unique_Id+tf[w],OBJPROP_XDISTANCE,w*17+PosX+19);
  51.          ObjectSet(Unique_Id+tf[w],OBJPROP_YDISTANCE,PosY+20);
  52.          ObjectSetText(Unique_Id+tf[w],tf[w],8,"Tahoma",TextColor);
  53.       }

  54.    for(int x=0;x<7;x++) //
  55.    for(w=0;w<10;w++)
  56.       {
  57.          ObjectCreate(Unique_Id+"Ind"+x+w,OBJ_LABEL,0,0,0,0,0);
  58.          ObjectSet(Unique_Id+"Ind"+x+w,OBJPROP_CORNER,Corner);
  59.          ObjectSet(Unique_Id+"Ind"+x+w,OBJPROP_XDISTANCE,x*17+PosX+15);
  60.          ObjectSet(Unique_Id+"Ind"+x+w,OBJPROP_YDISTANCE,w*6+PosY);
  61.          ObjectSetText(Unique_Id+"Ind"+x+w,"-",42,"Arial",TextColor);
  62.       }
  63.    }
  64.    
  65.    if(Corner==1)
  66.    {
  67.    for(w=0;w<TFNumbers;w++)
  68.       {
  69.          ObjectCreate(Unique_Id+tf[TFNumbers-1-w],OBJ_LABEL,0,0,0,0,0);
  70.          ObjectSet(Unique_Id+tf[TFNumbers-1-w],OBJPROP_CORNER,Corner);
  71.          ObjectSet(Unique_Id+tf[TFNumbers-1-w],OBJPROP_XDISTANCE,w*17+PosX+19);
  72.          ObjectSet(Unique_Id+tf[TFNumbers-1-w],OBJPROP_YDISTANCE,PosY+20);
  73.          ObjectSetText(Unique_Id+tf[TFNumbers-1-w],tf[TFNumbers-1-w],8,"Tahoma",TextColor);
  74.       }

  75.    for(x=0;x<7;x++) //
  76.    for(w=0;w<10;w++)
  77.       {
  78.          ObjectCreate(Unique_Id+"Ind"+(TFNumbers-1-x)+w,OBJ_LABEL,0,0,0,0,0);
  79.          ObjectSet(Unique_Id+"Ind"+(TFNumbers-1-x)+w,OBJPROP_CORNER,Corner);
  80.          ObjectSet(Unique_Id+"Ind"+(TFNumbers-1-x)+w,OBJPROP_XDISTANCE,x*17+PosX+15);
  81.          ObjectSet(Unique_Id+"Ind"+(TFNumbers-1-x)+w,OBJPROP_YDISTANCE,w*6+PosY);
  82.          ObjectSetText(Unique_Id+"Ind"+(TFNumbers-1-x)+w,"-",42,"Arial",TextColor);
  83.       }
  84.    }
  85.    
  86.    if(Corner==0 || Corner==1)
  87.    {
  88.    ObjectCreate(Unique_Id+"LineTop0",OBJ_LABEL,0,0,0,0,0);
  89.    ObjectSet(Unique_Id+"LineTop0",OBJPROP_CORNER,Corner);
  90.    ObjectSet(Unique_Id+"LineTop0",OBJPROP_XDISTANCE,PosX+13);
  91.    ObjectSet(Unique_Id+"LineTop0",OBJPROP_YDISTANCE,PosY+12);
  92.    ObjectSetText(Unique_Id+"LineTop0","          ----------------          ",8,"Tahoma",TextColor);
  93.    
  94.    ObjectCreate(Unique_Id+"LineTop",OBJ_LABEL,0,0,0,0,0);
  95.    ObjectSet(Unique_Id+"LineTop",OBJPROP_CORNER,Corner);
  96.    ObjectSet(Unique_Id+"LineTop",OBJPROP_XDISTANCE,PosX+13);
  97.    ObjectSet(Unique_Id+"LineTop",OBJPROP_YDISTANCE,PosY+14);
  98.    ObjectSetText(Unique_Id+"LineTop","-------------------------------",8,"Tahoma",TextColor);
  99.    
  100.    ObjectCreate(Unique_Id+"LineHigh",OBJ_LABEL,0,0,0,0,0);
  101.    ObjectSet(Unique_Id+"LineHigh",OBJPROP_CORNER,Corner);
  102.    ObjectSet(Unique_Id+"LineHigh",OBJPROP_XDISTANCE,PosX+13);
  103.    ObjectSet(Unique_Id+"LineHigh",OBJPROP_YDISTANCE,PosY+26);
  104.    ObjectSetText(Unique_Id+"LineHigh","-------------------------------",8,"Tahoma",TextColor);
  105.       
  106.    ObjectCreate(Unique_Id+"LineLow",OBJ_LABEL,0,0,0,0,0);
  107.    ObjectSet(Unique_Id+"LineLow",OBJPROP_CORNER,Corner);
  108.    ObjectSet(Unique_Id+"LineLow",OBJPROP_XDISTANCE,PosX+13);
  109.    ObjectSet(Unique_Id+"LineLow",OBJPROP_YDISTANCE,PosY+90);
  110.    ObjectSetText(Unique_Id+"LineLow","-------------------------------",8,"Tahoma",TextColor);
  111.    
  112.    ObjectCreate(Unique_Id+"IndName",OBJ_LABEL,0,0,0,0,0);
  113.    ObjectSet(Unique_Id+"IndName",OBJPROP_CORNER,Corner);
  114.    ObjectSet(Unique_Id+"IndName",OBJPROP_XDISTANCE,PosX+43);
  115.    ObjectSet(Unique_Id+"IndName",OBJPROP_YDISTANCE,PosY+6);
  116.    ObjectSetText(Unique_Id+"IndName","GG-RiverFlow",8,"Tahoma",TextColor);
  117.    
  118.    ObjectCreate(Unique_Id+"Copyright",OBJ_LABEL,0,0,0,0,0);
  119.    ObjectSet(Unique_Id+"Copyright",OBJPROP_CORNER,Corner);
  120.    ObjectSet(Unique_Id+"Copyright",OBJPROP_XDISTANCE,PosX+28);
  121.    ObjectSet(Unique_Id+"Copyright",OBJPROP_YDISTANCE,PosY+96);
  122.    ObjectSetText(Unique_Id+"Copyright","GG-RiverFlow",8,"Tahoma",TextColor);
  123.    }
  124.                            
  125.    ArrayResize(ma0_1,TFNumbers);ArrayResize(ma0_2,TFNumbers);
  126.    ArrayResize(ma1_1,TFNumbers);ArrayResize(ma1_2,TFNumbers);
  127.    ArrayResize(ma2_1,TFNumbers);ArrayResize(ma2_2,TFNumbers);
  128.    ArrayResize(ma3_1,TFNumbers);ArrayResize(ma3_2,TFNumbers);
  129.    ArrayResize(ma4_1,TFNumbers);ArrayResize(ma4_2,TFNumbers);
  130.    ArrayResize(ma5_1,TFNumbers);ArrayResize(ma5_2,TFNumbers);
  131.    ArrayResize(ma6_1,TFNumbers);ArrayResize(ma6_2,TFNumbers);
  132.    ArrayResize(ma7_1,TFNumbers);ArrayResize(ma7_2,TFNumbers);
  133.    ArrayResize(ma8_1,TFNumbers);ArrayResize(ma8_2,TFNumbers);
  134.    ArrayResize(ma9_1,TFNumbers);ArrayResize(ma9_2,TFNumbers);
  135.    
  136. //----
  137.    return(0);
  138.   }
  139. //+------------------------------------------------------------------+
  140. //| Custom indicator deinitialization function                       |
  141. //+------------------------------------------------------------------+
  142. int deinit()
  143.   {
  144. //----
  145.    for(int w=0;w<TFNumbers;w++)
  146.       {
  147.          ObjectDelete(Unique_Id+tf[w]);
  148.       }   
  149.          
  150.    for(int x=0;x<TFNumbers;x++)
  151.    for(w=0;w<10;w++)
  152.       {
  153.          ObjectDelete(Unique_Id+"Ind"+x+w);
  154.       }
  155.    
  156.    ObjectDelete(Unique_Id+"LineTop0");   
  157.    ObjectDelete(Unique_Id+"LineTop");
  158.    ObjectDelete(Unique_Id+"LineHigh");
  159.    ObjectDelete(Unique_Id+"LineLow");
  160.    ObjectDelete(Unique_Id+"IndName");
  161.    ObjectDelete(Unique_Id+"Copyright");
  162.    
  163.    
  164. //----
  165.    return(0);
  166.   }
  167. //+------------------------------------------------------------------+
  168. //| Custom indicator iteration function                              |
  169. //+------------------------------------------------------------------+
  170. int start()
  171.   {
  172.    
  173.    
  174.    for(int x=0;x<TFNumbers;x++)
  175.    {
  176.       ma0_1[x]=iMA(NULL,tframe[x],ma_period[0],0,MODE_EMA,PRICE_CLOSE,0);
  177.       ma0_2[x]=iMA(NULL,tframe[x],ma_period[0],MA_Shift,MODE_EMA,PRICE_CLOSE,0);
  178.       ma1_1[x]=iMA(NULL,tframe[x],ma_period[1],0,MODE_EMA,PRICE_CLOSE,0);
  179.       ma1_2[x]=iMA(NULL,tframe[x],ma_period[1],MA_Shift,MODE_EMA,PRICE_CLOSE,0);
  180.       ma2_1[x]=iMA(NULL,tframe[x],ma_period[2],0,MODE_EMA,PRICE_CLOSE,0);
  181.       ma2_2[x]=iMA(NULL,tframe[x],ma_period[2],MA_Shift,MODE_EMA,PRICE_CLOSE,0);
  182.       ma3_1[x]=iMA(NULL,tframe[x],ma_period[3],0,MODE_EMA,PRICE_CLOSE,0);
  183.       ma3_2[x]=iMA(NULL,tframe[x],ma_period[3],MA_Shift,MODE_EMA,PRICE_CLOSE,0);
  184.       ma4_1[x]=iMA(NULL,tframe[x],ma_period[4],0,MODE_EMA,PRICE_CLOSE,0);
  185.       ma4_2[x]=iMA(NULL,tframe[x],ma_period[4],MA_Shift,MODE_EMA,PRICE_CLOSE,0);
  186.       ma5_1[x]=iMA(NULL,tframe[x],ma_period[5],0,MODE_EMA,PRICE_CLOSE,0);
  187.       ma5_2[x]=iMA(NULL,tframe[x],ma_period[5],MA_Shift,MODE_EMA,PRICE_CLOSE,0);
  188.       ma6_1[x]=iMA(NULL,tframe[x],ma_period[6],0,MODE_EMA,PRICE_CLOSE,0);
  189.       ma6_2[x]=iMA(NULL,tframe[x],ma_period[6],MA_Shift,MODE_EMA,PRICE_CLOSE,0);
  190.       ma7_1[x]=iMA(NULL,tframe[x],ma_period[7],0,MODE_EMA,PRICE_CLOSE,0);
  191.       ma7_2[x]=iMA(NULL,tframe[x],ma_period[7],MA_Shift,MODE_EMA,PRICE_CLOSE,0);
  192.       ma8_1[x]=iMA(NULL,tframe[x],ma_period[8],0,MODE_EMA,PRICE_CLOSE,0);
  193.       ma8_2[x]=iMA(NULL,tframe[x],ma_period[8],MA_Shift,MODE_EMA,PRICE_CLOSE,0);
  194.       ma9_1[x]=iMA(NULL,tframe[x],ma_period[9],0,MODE_EMA,PRICE_CLOSE,0);
  195.       ma9_2[x]=iMA(NULL,tframe[x],ma_period[9],MA_Shift,MODE_EMA,PRICE_CLOSE,0);
  196.     }  
  197.       
  198.       
  199.     for(x=0;x<TFNumbers;x++)
  200.     {  
  201.       if(ma0_1[x]>ma0_2[x]) IndVal[0][x]=1;
  202.       else if(ma0_1[x]<ma0_2[x]) IndVal[0][x]=-1;
  203.       else IndVal[0][x]=0;
  204.       
  205.       if(ma1_1[x]>ma1_2[x]) IndVal[1][x]=1;
  206.       else if(ma1_1[x]<ma1_2[x]) IndVal[1][x]=-1;
  207.       else IndVal[1][x]=0;
  208.       
  209.       if(ma2_1[x]>ma2_2[x]) IndVal[2][x]=1;
  210.       else if(ma2_1[x]<ma2_2[x]) IndVal[2][x]=-1;
  211.       else IndVal[2][x]=0;
  212.       
  213.       if(ma3_1[x]>ma3_2[x]) IndVal[3][x]=1;
  214.       else if(ma3_1[x]<ma3_2[x]) IndVal[3][x]=-1;
  215.       else IndVal[3][x]=0;
  216.       
  217.       if(ma4_1[x]>ma4_2[x]) IndVal[4][x]=1;
  218.       else if(ma4_1[x]<ma4_2[x]) IndVal[4][x]=-1;
  219.       else IndVal[4][x]=0;
  220.       
  221.       if(ma5_1[x]>ma5_2[x]) IndVal[5][x]=1;
  222.       else if(ma5_1[x]<ma5_2[x]) IndVal[5][x]=-1;
  223.       else IndVal[5][x]=0;
  224.       
  225.       if(ma6_1[x]>ma6_2[x]) IndVal[6][x]=1;
  226.       else if(ma6_1[x]<ma6_2[x]) IndVal[6][x]=-1;
  227.       else IndVal[6][x]=0;
  228.       
  229.       if(ma7_1[x]>ma7_2[x]) IndVal[7][x]=1;
  230.       else if(ma7_1[x]<ma7_2[x]) IndVal[7][x]=-1;
  231.       else IndVal[7][x]=0;
  232.       
  233.       if(ma8_1[x]>ma8_2[x]) IndVal[8][x]=1;
  234.       else if(ma8_1[x]<ma8_2[x]) IndVal[8][x]=-1;
  235.       else IndVal[8][x]=0;
  236.       
  237.       if(ma9_1[x]>ma9_2[x]) IndVal[9][x]=1;
  238.       else if(ma9_1[x]<ma9_2[x]) IndVal[9][x]=-1;
  239.       else IndVal[9][x]=0;
  240.     }
  241.       
  242.       for(int y=0;y<10;y++)
  243.       for(int z=0;z<TFNumbers;z++)
  244.       {
  245.          if(IndVal[y][z]==-1) ObjectSetText(Unique_Id+"Ind"+z+y,"-",42,"Arial",DownColor);
  246.          if(IndVal[y][z]==0) ObjectSetText(Unique_Id+"Ind"+z+y,"-",42,"Arial",FlatColor);
  247.          if(IndVal[y][z]==1) ObjectSetText(Unique_Id+"Ind"+z+y,"-",42,"Arial",UpColor);
  248.          
  249.       }
  250.    
  251.    
  252. //----
  253.    return(0);
  254.   }
  255. //+------------------------------------------------------------------+