i_PodborParamIndikatorov

Indicators Used
Moving Average of Oscillator
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
i_PodborParamIndikatorov
//+------------------------------------------------------------------+
//|                                         podbor indika.mq4        |
//|                                                        Tula 2011 |
//+------------------------------------------------------------------+

#property indicator_separate_window
//#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Gold
#property indicator_width1 2
#property indicator_level1 0.0
// Ïåðâîíà÷àëüíûå çíà÷åíèÿ èíäèêàòîðà
extern int      Param1     = 12;
extern int      Param2     = 26;
extern int      Param3     = 9;
//---- indicator buffer
double          Buffer[];
// Ïåðåìåííûå äëÿ ðàñ÷åòîâ
int             i;
int Isobr = 400;
// ñëóæåáíûå êîäû
#define SliderPrefix "SL_"
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(1);
//---- drawing settings
   SetIndexStyle(0,DRAW_SECTION);
//---- indicator buffers mapping
   SetIndexBuffer(0,Buffer);
   SetIndexEmptyValue(0,0.0);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
       ClearSliders(); 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {

  //———————————————————————————————————————————————————————————————————————————————
  // ñîçäàíèå (ïðè íåîáõîäèìîñòè) è ïîëó÷åíèå ïàðàìåòðîâ óïðàâëÿþùåãî òðåóãîëüíèêà
  Param1  = ParamValue(0, SliderPrefix+"Param1", Param1, 3, 30, Blue);
  Param2  = ParamValue(1, SliderPrefix+"Param2", Param2, 5, 40, Red);
  Param3  = ParamValue(2, SliderPrefix+"Param3", Param3, 3, 30, Orange);
  //———————————————————————————————————————————————————————————————————————————————

 // Ïåðåäàåì ïàðàìåòðû â ïîëüçîâàòåëüñêèé èíäèêàòîð è èç ïîëó÷åííûõ çíà÷åíèé ñòðîèì èíäèêàòîð
     for(i=Isobr;i>0;i--)
            {
                 Buffer[i] = iOsMA(NULL,0,Param1,Param2,Param3,0,i);
//               Buffer[i] = iCustom(NULL,0," ",Param1,Param2,Param3,0,i);
            }
//Comment ("Param1 =",Param1,", Param2 =",Param2,", Param3 =",Param3);
Labl("Param1 = "+DoubleToStr(Param1,0)+", Param2 = "+DoubleToStr(Param2,0)+", Param3 = "+DoubleToStr(Param3,0));        
        
//----
   return(0);
  }

//+------------------------------------------------------------------+
//  òðåóãîëüíèêè
//-------------------------------------------------------------------+
double ParamValue(int ParamNo, string ParamName, double ParamValue, double vMin, double vMax, color clr)
{
  double Triangle[3],vCur, WMax, WMin; datetime tt1, tt2; 

  // åñëè òðåóãîëüíèêà íåò - ñîçäàäèì åãî
  if(ObjectFind(ParamName) < 0)
  {
    // îïðåäåëèì ãðàíèöû ãðàôèêà â òåêóùåì ìàñøòàáå ïî âåðòèêàëè
    WMax = WindowPriceMax() * 0.99;  WMin = WindowPriceMin() * 1.01;

    // ðàññ÷èòàåì êîîðäèíàòû òî÷åê ïî âðåìåíè...
    tt1 = Time[0] + Period()*60*ParamNo*10; tt2 = tt1 + Period()*60*10;
    // ... è "öåíå"
    vCur = WMin + (ParamValue - vMin) * (WMax - WMin) / (vMax - vMin);
    // ñîçäàäèì îáúåêò è ïîêðàñèì åãî â çàäàííûé â ïàðàìåòðàõ öâåò
    ObjectCreate(ParamName,OBJ_TRIANGLE, 0, tt1,WMax, tt2,vCur, tt1,WMin);
    ObjectSet(ParamName,OBJPROP_COLOR,clr);
  }
  // òðåóãîëüíèê ñóùåñòâóåò - ïîëó÷èì åãî êîîðäèíàòû
  Triangle[0] = ObjectGet(ParamName,OBJPROP_PRICE1);
  Triangle[1] = ObjectGet(ParamName,OBJPROP_PRICE2);
  Triangle[2] = ObjectGet(ParamName,OBJPROP_PRICE3);
  // ðàñïîëîæèì âåðøèíû â ïîðÿäêå èõ "âîçðàñòàíèÿ
  ArraySort(Triangle);
  // ïåðåâåäåì êîîðäèíàòó ñðåäíåé òî÷êè ê ìàñøòàáó ðåàëüíûõ çíà÷åíèé ìåæäó vMin è vMax
  vCur = vMin + (Triangle[1] - Triangle[0]) / (Triangle[2] - Triangle[0]) * (vMax - vMin);
  // íàïèøåì çíà÷åíèå â êîìåíòàðèé îáúåêòà
  ObjectSetText(ParamName,DoubleToStr(vCur,2)); 
  // âåðíåì çíà÷åíèå â îñíîâíîé ìîäóëü
  return(vCur); 
}
//+------------------------------------------------------------------+
// óäàëåíèå âñåõ îáúåêòîâ íàøåãî ãðàôèêà
void ClearSliders() 
{ 
  for(int i=ObjectsTotal()-1;i>=0;i--) if(StringFind(ObjectName(i),SliderPrefix)==0) ObjectDelete(ObjectName(i)); 
}
//————————————————————————————————————————————————————————————————————————————————————————————————————————————————+
//==================================================================//
void Labl(string N){
   //---- ÍÀÄÏÈÑÜ HA ÃÐÀÔÈÊ ----//
   string Nlabel = SliderPrefix;
   
   ObjectDelete(Nlabel);
   ObjectCreate(Nlabel,OBJ_LABEL,0,0,0);
   ObjectSet(Nlabel,OBJPROP_CORNER,0);
   ObjectSet(Nlabel,OBJPROP_COLOR,Aqua);
   ObjectSet(Nlabel, OBJPROP_XDISTANCE, 30);
   ObjectSet(Nlabel, OBJPROP_YDISTANCE, 20);
   ObjectSetText(Nlabel,N,14,"Arial",Aqua);
   }
//==================================================================//



Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---