外汇指标
SweetSpotsGOLD
回复:0  浏览:55
  • 楼主admin 圈主
  • 2019-05-05 05:06
EURGBPH1.png

  1. //+------------------------------------------------------------------+
  2. //|                                                   SweetSpots.mq4 |
  3. //|                                                                  |
  4. //|                                                                  |
  5. //+------------------------------------------------------------------+
  6. //| SweetSpotsGOLD_TRO_MODIFIED_VERSION                              |
  7. //| MODIFIED BY AVERY T. HORTON, JR. AKA THERUMPLEDONE@GMAIL.COM     |
  8. //| I am NOT the ORIGINAL author
  9. //  and I am not claiming authorship of this indicator.
  10. //  All I did was modify it. I hope you find my modifications useful.|
  11. //|                                                                  |
  12. //+------------------------------------------------------------------+


  13. #property copyright "Copyright Shimodax"
  14. #property link      "http://www.strategybuilderfx.com"

  15. #property indicator_chart_window



  16. extern bool   TURN_OFF    = false ;
  17. extern bool AutoAdjust  = true;
  18. extern bool Show_Labels = true ;
  19. extern int  ShiftLabel =  5 ;

  20. extern int NumLinesAboveBelow  = 100;
  21. extern int SweetSpotMainLevels = 100;

  22. extern color LineColorMain= Yellow;
  23. extern int LineStyleMain= STYLE_DOT;

  24. extern bool ShowSubLevels= true;
  25. extern int sublevels= 10;

  26. extern color LineColorSub= Yellow;
  27. extern int LineStyleSub= STYLE_DOT;


  28. string symbol, tChartPeriod,  tShortName, pricelabel ;  
  29. int    digits, period, digits2, mult = 1  ;
  30. double point ;

  31. //+------------------------------------------------------------------+
  32. int init()
  33. {
  34.    period       =  Period() ;   
  35.    symbol       =  Symbol() ;
  36.    digits       =  Digits ;   
  37.    point        =  Point ;

  38.    if(digits == 5 || digits == 3) { mult = 10; digits = digits - 1 ; point = point * 10 ; }   
  39.    
  40.    if(AutoAdjust && period > PERIOD_H1 && period < PERIOD_MN1) { mult = mult * 10; }
  41.    if(AutoAdjust && period == PERIOD_MN1) { mult = mult * 100; }
  42.    
  43. SweetSpotMainLevels = SweetSpotMainLevels * mult;

  44. sublevels           = sublevels * mult;
  45.    
  46.    deinit();
  47.    
  48.    return(0);
  49. }

  50. //+------------------------------------------------------------------+
  51. int deinit()
  52. {
  53.    int obj_total= ObjectsTotal();
  54.    
  55.    for (int i= obj_total; i>=0; i--) {
  56.       string name= ObjectName(i);
  57.    
  58.       if (StringSubstr(name,0,11)=="[SweetSpot]")
  59.          ObjectDelete(name);
  60.    }
  61.    TRO();
  62.    return(0);
  63. }
  64.    
  65. //+------------------------------------------------------------------+
  66. int start()
  67. {
  68.    if( TURN_OFF ) { return(0) ; }

  69.    static datetime timelastupdate= 0;
  70.    static datetime lasttimeframe= 0;
  71.    
  72.    
  73.    // no need to update these buggers too often   
  74.    if (CurTime()-timelastupdate < 600 && Period()==lasttimeframe)
  75.       return (0);
  76.    
  77.    deinit();  // delete all previous lines
  78.       
  79.    int i, ssp1, style, ssp, thickness; //sublevels= 50;
  80.    double ds1;
  81.    color linecolor;
  82.    
  83.    if (!ShowSubLevels)
  84.       sublevels*= 2;
  85.    
  86.    ssp1= Bid / Point;
  87.    ssp1= ssp1 - ssp1%sublevels;

  88.    for (i= -NumLinesAboveBelow; i<NumLinesAboveBelow; i++)
  89.    {
  90.    
  91.       ssp= ssp1+(i*sublevels);
  92.       
  93.       if (ssp%SweetSpotMainLevels==0)
  94.       {
  95.          style= LineStyleMain;
  96.          linecolor= LineColorMain;
  97.       }
  98.       else
  99.       {
  100.          style= LineStyleSub;
  101.          linecolor= LineColorSub;
  102.       }
  103.       
  104.       thickness= 1;
  105.       
  106.       if (ssp%(SweetSpotMainLevels*10)==0)
  107.       {
  108.          thickness= 2;      
  109.       }

  110.       if (ssp%(SweetSpotMainLevels*100)==0)
  111.       {
  112.          thickness= 3;      
  113.       }
  114.       
  115.       ds1= ssp*Point;
  116.       SetLevel(DoubleToStr(ds1,Digits), ds1,  linecolor, style, thickness, Time[10]);
  117.    }

  118.    return(0);
  119. }


  120. //+------------------------------------------------------------------+
  121. //| Helper                                                           |
  122. //+------------------------------------------------------------------+
  123. void SetLevel(string text, double level, color col1, int linestyle, int thickness, datetime startofday)
  124. {

  125.    string linename= "[SweetSpot] " + text + " Line" + pricelabel;

  126.    // create or move the horizontal line   
  127.    if (ObjectFind(linename) != 0) {
  128.       ObjectCreate(linename, OBJ_TREND, 0, Time[0], level, Time[1], level, 0, 0);

  129. //      ObjectCreate(linename, OBJ_HLINE, 0, 0, level);
  130.       
  131.       ObjectSet(linename, OBJPROP_STYLE, linestyle);
  132.       ObjectSet(linename, OBJPROP_COLOR, col1);
  133.       ObjectSet(linename, OBJPROP_WIDTH, thickness);

  134.       ObjectSet(linename, OBJPROP_RAY, true);      
  135.       ObjectSet(linename, OBJPROP_BACK, True);
  136.    }
  137.    else {
  138.       ObjectMove(linename, 0, Time[0], level);
  139.    }
  140.    

  141.    if(Show_Labels)
  142.    {         
  143.    
  144.    
  145.       string Obj0002 = linename+"linelbl" ;
  146.       
  147.       ObjectDelete(Obj0002);
  148.       
  149.       if(ObjectFind(Obj0002) != 0)
  150.       {
  151.           ObjectCreate(Obj0002,OBJ_ARROW,0,Time[0],level);
  152.           ObjectSet(Obj0002,OBJPROP_ARROWCODE,SYMBOL_RIGHTPRICE);
  153.           ObjectSet(Obj0002,OBJPROP_COLOR,col1);  
  154.       }
  155.       else
  156.       {
  157.          ObjectMove(Obj0002,0,Time[0],level);
  158.       }

  159.                  
  160.    } // if     
  161.    
  162. }     


  163. //+------------------------------------------------------------------+  
  164. void TRO()
  165. {   
  166.    
  167.    string tObjName03    = "TROTAG"  ;  
  168.    ObjectCreate(tObjName03, OBJ_LABEL, 0, 0, 0);//HiLow LABEL
  169.    ObjectSetText(tObjName03, CharToStr(78) , 12 ,  "Wingdings",  DimGray );
  170.    ObjectSet(tObjName03, OBJPROP_CORNER, 3);
  171.    ObjectSet(tObjName03, OBJPROP_XDISTANCE, 5 );
  172.    ObjectSet(tObjName03, OBJPROP_YDISTANCE, 5 );  
  173. }
  174. //+------------------------------------------------------------------+
  175.