← К каталогу
Исходный код · ID 2774

PointAndFigureTrend_v1.3 600+

pointandfiguretrend_v1.3 600+.mq5

Похожие материалы по тегам

#__slope direction line.mq5MQL5 / MetaTrader 5 · 1 общих теговrange breakout @meowforex1.pineTradingView · 1 общих тегов#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit3.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit2.mq4MQL4 / MetaTrader 4 · 1 общих тегов!mth_fasttmaline_edit.mq4MQL4 / MetaTrader 4 · 1 общих тегов
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

PointAndFigureTrend_v1.3 600+ — индикатор для MetaTrader 4, построенный на методике графиков «точки и фигуры» (Point & Figure). Он рассчитывает направление тренда на основе P&F-диаграммы и отображает результат в отдельном окне в виде двух гистограмм: восходящего и нисходящего тренда. Индикатор поддерживает отображение P&F-боксов, стрелок входа и выхода, а также отправку уведомлений через звук, электронную почту и push-сообщения.

Настройки программы

НастройкаОписание
TimeFrame (TimeFrame) Таймфрейм — Таймфрейм для расчёта индикатора; 0 означает период текущего графика.
Appplied to (Price) Применяемая цена — Ценовой тип, используемый для расчётов: Close, Open, High, Low, Median и другие.
Use High/Low (UseHighLow) Использовать High/Low — Переключатель использования значений High и Low вместо выбранной цены для построения P&F-диаграммы.
Box Size in pips (BoxSize) Размер бокса — Размер одного бокса в пунктах (pips) для построения графика точек и фигур.
Reversal Multiplier (Multiplier) Множитель разворота — Множитель, определяющий величину разворота при смене направления P&F-диаграммы.
PreSmoothing Period (PreSmooth) Период предварительного сглаживания — Период сглаживающей оценки, применяемой к ценовым данным перед расчётом P&F.
PreSmoothing Method (PreSmoothMode) Метод предварительного сглаживания — Выбор метода скользящего среднего для предварительного сглаживания цен.
PnF Level (PnFLevel) Уровень P&F — Пороговый уровень для фильтрации сигналов и отображения горизонтальных уровней на графике.
Show wicks (ShowWicks) Показать тени — Переключатель отображения теней (wicks) на P&F-боксах.
Number of bars counted: 0-all bars (CountBars) Количество баров — Число баров, участвующих в расчёте; 0 означает все доступные бары.
pnfboxes PnF Boxes — Разделитель группы настроек отображения P&F-боксов.
Show Point and Figure (ShowPnFBoxes) Показать P&F-боксы — Включает отрисовку цветных прямоугольных блоков P&F-диаграммы на графике.
UpTrend Color (UpTrendColor) Цвет восходящего тренда — Цвет для отображения восходящих P&F-боксов и гистограммы.
DownTrend Color (DnTrendColor) Цвет нисходящего тренда — Цвет для отображения нисходящих P&F-боксов и гистограммы.
UniqueName Уникальное имя — Префикс имён графических объектов индикатора на графике.
arrows Стрелки — Разделитель группы настроек отображения стрелок.
Show Arrows (ShowArrows) Показать стрелки — Включает отображение стрелок входа и выхода на графике.
Arrow Size (ArrowSize) Размер стрелки — Размер шрифта стрелок на графике.
Arrow Font Name (ArrowFontName) Шрифт стрелок — Имя шрифта, используемого для отрисовки стрелок.
ArrowBuyCode (ArrowBuyCode) Код символа покупки — Код символа Wingdings для стрелки покупки.
ArrowSellCode (ArrowSellCode) Код символа продажи — Код символа Wingdings для стрелки продажи.
UpTrend Arrow Color (UpArrowColor) Цвет стрелки покупки — Цвет стрелки входа в длинную позицию.
DownTrend Arrow Color (DnArrowColor) Цвет стрелки продажи — Цвет стрелки входа в короткую позицию.
Alerts Оповещения — Разделитель группы настроек оповещений.
Alert On (AlertOn) Включить алерт — Включает вывод pop-up уведомлений при возникновении сигналов.
Alert Shift:0-current bar,1-previous bar (AlertShift) Сдвиг алерта — Сдвиг бара для проверки сигнала: 0 — текущий бар, 1 — предыдущий.
Number of sounds after Signal (SoundsNumber) Количество звуков — Число повторений звукового сигнала при появлении условия.
Pause in sec between sounds (SoundsPause) Пауза между звуками — Пауза в секундах между повторениями звукового оповещения.
UpTrend Sound (UpTrendSound) Звук восходящего тренда — Файл звукового оповещения для сигнала восходящего тренда.
DownTrend Sound (DnTrendSound) Звук нисходящего тренда — Файл звукового оповещения для сигнала нисходящего тренда.
Email Alert On (EmailOn) Включить email — Включает отправку email-уведомлений при сигналах.
Emails Number (EmailsNumber) Количество писем — Число повторных отправок email при каждом сигнале.
Push Notification On (PushNotificationOn) Push-уведомления — Включает отправку push-уведомлений на мобильное устройство.
Получить полный код

Поиск по коду файла

???//+------------------------------------------------------------------+

#property indicator_separate_window
#property indicator_buffers   2
#property indicator_color1    clrLimeGreen
#property indicator_color2    clrOrangeRed
#property indicator_width1    2
#property indicator_width2    2

#property indicator_level1    0

#property strict 

enum ENUM_PRICE
{
   close,               // Close
   open,                // Open
   high,                // High
   low,                 // Low
   median,              // Median
   typical,             // Typical
   weightedClose,       // Weighted Close
   medianBody,          // Median Body (Open+Close)/2
   average,             // Average (High+Low+Open+Close)/4
   trendBiased,         // Trend Biased
   haClose,             // Heiken Ashi Close
   haOpen,              // Heiken Ashi Open
   haHigh,              // Heiken Ashi High   
   haLow,               // Heiken Ashi Low
   haMedian,            // Heiken Ashi Median
   haTypical,           // Heiken Ashi Typical
   haWeighted,          // Heiken Ashi Weighted Close
   haMedianBody,        // Heiken Ashi Median Body
   haAverage,           // Heiken Ashi Average
   haTrendBiased        // Heiken Ashi Trend Biased   
};

enum ENUM_MA_MODE
{
   SMA,                 // Simple Moving Average
   EMA,                 // Exponential Moving Average
   Wilder,              // Wilder Exponential Moving Average
   LWMA,                // Linear Weighted Moving Average
   SineWMA,             // Sine Weighted Moving Average
   TriMA,               // Triangular Moving Average
   LSMA,                // Least Square Moving Average (or EPMA, Linear Regression Line)
   SMMA,                // Smoothed Moving Average
   HMA,                 // Hull Moving Average by A.Hull
   ZeroLagEMA,          // Zero-Lag Exponential Moving Average
   DEMA,                // Double Exponential Moving Average by P.Mulloy
   T3_basic,            // T3 by T.Tillson (original version)
   ITrend,              // Instantaneous Trendline by J.Ehlers
   Median,              // Moving Median
   GeoMean,             // Geometric Mean
   REMA,                // Regularized EMA by C.Satchwell
   ILRS,                // Integral of Linear Regression Slope
   IE_2,                // Combination of LSMA and ILRS
   TriMAgen,            // Triangular Moving Average generalized by J.Ehlers
   VWMA,                // Volume Weighted Moving Average
   JSmooth,             // M.Jurik's Smoothing
   SMA_eq,              // Simplified SMA
   ALMA,                // Arnaud Legoux Moving Average
   TEMA,                // Triple Exponential Moving Average by P.Mulloy
   T3,                  // T3 by T.Tillson (correct version)
   Laguerre,            // Laguerre filter by J.Ehlers
   MD,                  // McGinley Dynamic
   BF2P,                // Two-pole modified Butterworth filter by J.Ehlers
   BF3P,                // Three-pole modified Butterworth filter by J.Ehlers
   SuperSmu,            // SuperSmoother by J.Ehlers
   Decycler,            // Simple Decycler by J.Ehlers
   eVWMA,               // Modified eVWMA
   EWMA,                // Exponential Weighted Moving Average
   DsEMA,               // Double Smoothed EMA
   TsEMA                // Triple Smoothed EMA
};   

#define pi 3.14159265358979323846  

input ENUM_TIMEFRAMES   TimeFrame            =           0;       // TimeFrame
input ENUM_PRICE        Price                =       close;       // Appplied to
input bool              UseHighLow           =       false;       // Use High/Low 
input double            BoxSize              =          10;       // Box Size in pips
input double            Multiplier           =           2;       // Reversal Multiplier 
input int               PreSmooth            =           1;       // PreSmoothing Period
input ENUM_MA_MODE      PreSmoothMode        =           0;       // PreSmoothing Method
input double            PnFLevel             =          10;       // PnF Level 
input bool              ShowWicks            =       false;       // Show wicks
input int               CountBars            =           0;       // Number of bars counted: 0-all bars 

input string            pnfboxes             = "==== PnF Boxes: ====";
input bool              ShowPnFBoxes         =       false;       // Show Point and Figure
input color             UpTrendColor         = clrPaleGreen;      // UpTrend Color 
input color             DnTrendColor         = clrLightSalmon;    // DownTrend Color  
input string            UniqueName           =  "P&FTrend";

input string            arrows               = "==== Arrows ====";
input bool              ShowArrows           =       false;       // Show Arrows  
input int               ArrowSize            =          15;       // Arrow Size
input string            ArrowFontName        = "Wingdings";       // Arrow Font Name
input int               ArrowBuyCode         =         233;       // ArrowBuyCode
input int               ArrowSellCode        =         234;       // ArrowSellCode
input color	            UpArrowColor         = clrDeepSkyBlue;    // UpTrend Arrow Color
input color	            DnArrowColor         =      clrRed;       // DownTrend Arrow Color

input string            Alerts               = "=== Alerts, Emails & Notifications ===";
input bool              AlertOn              =       false;       // Alert On
input int               AlertShift           =           1;       // Alert Shift:0-current bar,1-previous bar
input int               SoundsNumber         =           5;       // Number of sounds after Signal
input int               SoundsPause          =           5;       // Pause in sec between sounds 
input string            UpTrendSound         = "alert.wav";       // UpTrend Sound
input string            DnTrendSound         = "alert2.wav";      // DownTrend Sound
input bool              EmailOn              =       false;       // Email Alert On
input int               EmailsNumber         =           *;       // Emails Number  
input bool              PushNotificationOn   =       false;       // Push Notification On

double upTrend[];
double dnTrend[];
double pnfNumber[];
double pnfPrice[];
double trend[];
double mPrice[];
double hiPrice[];
double loPrice[];
double oPrice[];
double aPrice1[];
double hiPrice1[];
double loPrice1[];
double oPrice1[];

int      timeframe, cBars, draw_begin, ma_period, masize;
double   _point;
string   short_name, TF, IndicatorName;

int OnInit()
{
      // код доступен только после оплаты
   }

void OnDeinit(const int reason)
{
   Comment("");
   if(ShowArrows || ShowPnFBoxes) {ObjectsDeleteAll(0,UniqueName); ChartRedraw();}
}

int start()
{
      // код доступен только после оплаты
   }

bool     buysignal, sellsignal, buyexit, sellexit;
double   xprice[2], pprice[2];
datetime pnftime, xtime[2], ptime[2];

void _PnFChart(int limit)
{
   double pnfopen;

   for(int shift=limit;shift>=0;shift--) 
   {	
   if(shift > Bars - 2) continue;

   trend[shift] = trend[shift+1];
   trend[shift] = pnfChart(pnfPrice[shift],pnfopen,Price,BoxSize,Multiplier,UseHighLow,MathMin(Bars-ma_period-1,cBars),shift);

   if(pnfPrice[shift+1] <= 0) continue; 

   upTrend[shift]   = 0; 
   dnTrend[shift]   = 0;
   pnfNumber[shift] = pnfNumber[shift+1];

      if(trend[shift] > 0)
      {
         if(trend[shift+1] < 0) 
         {
         upTrend[shift]   = NormalizeDouble((pnfPrice[shift] - pnfPrice[shift+1])/_point,Digits); 
         pnfNumber[shift] = 1;
         }
         else 
         {
         upTrend[shift]   = NormalizeDouble(upTrend[shift+1] + (pnfPrice[shift] - pnfPrice[shift+1])/_point,Digits); 
         if(pnfPrice[shift] != pnfPrice[shift+1]) pnfNumber[shift]+= 1;
         }
      }
      else
      if(trend[shift] < 0)
      {
         if(trend[shift+1] > 0) 
         {
         dnTrend[shift]   = NormalizeDouble((pnfPrice[shift] - pnfPrice[shift+1])/_point,Digits); 
         pnfNumber[shift] =-1;
         }
         else 
         {
         dnTrend[shift] = NormalizeDouble(dnTrend[shift+1] + (pnfPrice[shift] - pnfPrice[shift+1])/_point,Digits);
         if(pnfPrice[shift] != pnfPrice[shift+1]) pnfNumber[shift]-= 1;
         }
      }

      if(ShowPnFBoxes)
      {
         if(pnftime != Time[shift])  
         {
         xtime[1]  = xtime[0];
         ptime[1]  = ptime[0];
         xprice[1] = xprice[0];
         pprice[1] = pprice[0];
         pnftime   = Time[shift];
         }

         xtime[0]  = xtime[1];
         ptime[0]  = ptime[1];
         xprice[0] = xprice[1];
         pprice[0] = pprice[1];

         string xname = UniqueName + " up ";   
         string pname = UniqueName + " dn ";

         ObjectDelete(0,xname + TimeToString(Time[shift]));

         if(trend[shift] > 0)
         {
            if(trend[shift] != trend[shift+1])
            {
            xtime[0]  = Time[shift];
            xprice[0] = pnfPrice[shift+1]; 

            if(xprice[0] > 0) SetBox(xname + TimeToString(xtime[0]),0,xtime[0],xprice[0] + BoxSize*_point,xtime[0],pnfPrice[shift],true,UpTrendColor);
            if(pprice[0] > 0) SetBox(pname + TimeToString(ptime[0]),0,ptime[0],pprice[0] - BoxSize*_point,xtime[0],xprice[0]      ,true,DnTrendColor);
            }
            else
            {
            if(xprice[0] > 0) SetBox(xname + TimeToString(xtime[0]),0,xtime[0],xprice[0] + BoxSize*_point,Time[shift],pnfPrice[shift],true,UpTrendColor);
            }
         }

         ObjectDelete(0,pname + TimeToString(Time[shift]));

         if(trend[shift] < 0)
         {
            if(trend[shift] != trend[shift+1])
            {
            ptime[0]  = Time[shift];
            pprice[0] = pnfPrice[shift+1]; 

            if(pprice[0] > 0) SetBox(pname + TimeToString(ptime[0]),0,ptime[0],pprice[0] - BoxSize*_point,ptime[0],pnfPrice[shift],true,DnTrendColor);
            if(xprice[0] > 0) SetBox(xname + TimeToString(xtime[0]),0,xtime[0],xprice[0] + BoxSize*_point,ptime[0],pprice[0]      ,true,UpTrendColor);
            }
            else
            {
            if(pprice[0] > 0) SetBox(pname + TimeToString(ptime[0]),0,ptime[0],pprice[0] - BoxSize*_point,Time[shift],pnfPrice[shift],true,DnTrendColor);
            }
         }
      }

      if(ShowArrows)
      {
      buysignal  = (PnFLevel > 0 && upTrend[shift] > PnFLevel && upTrend[shift+1] <= PnFLevel)||(PnFLevel == 0 && upTrend[shift] > 0 && upTrend[shift+1] <= 0);
      sellsignal = (PnFLevel > 0 && dnTrend[shift] <-PnFLevel && dnTrend[shift+1] >=-PnFLevel)||(PnFLevel == 0 && dnTrend[shift] < 0 && dnTrend[shift+1] >= 0);

         if(PnFLevel > 0)
         {
         buyexit    = dnTrend[shift] < 0 && upTrend[shift+1] > PnFLevel;
         sellexit   = upTrend[shift] > 0 && dnTrend[shift+1] <-PnFLevel;   
         }

      double gap = MathCeil(iATR(NULL,0,14,shift+1)/_Point);

		string dn_name = UniqueName+" BuyEntry " +TimeToStr(Time[shift]);
      string up_name = UniqueName+" SellEntry "+TimeToStr(Time[shift]);

      ObjectDelete(dn_name);
		ObjectDelete(up_name);

		if(buysignal ) drawArrow(up_name,Time[shift],NormalizeDouble(Low[shift] - gap*Point,Digits),ArrowFontName,ArrowSize,ANCHOR_LOWER,CharToStr((uchar)ArrowBuyCode ),UpArrowColor);
		if(sellsignal) drawArrow(dn_name,Time[shift],NormalizeDouble(High[shift]+ gap*Point,Digits),ArrowFontName,ArrowSize,ANCHOR_UPPER,CharToStr((uchar)ArrowSellCode),DnArrowColor);

      dn_name = UniqueName+" BuyExit " +TimeToStr(Time[shift]);
      up_name = UniqueName+" SellExit "+TimeToStr(Time[shift]);

      ObjectDelete(dn_name);
		ObjectDelete(up_name);

		if(buyexit ) drawArrow(up_name,Time[shift],NormalizeDouble(High[shift]+ gap*Point,Digits),ArrowFontName,ArrowSize,ANCHOR_LOWER,CharToStr(251),UpArrowColor);
		if(sellexit) drawArrow(dn_name,Time[shift],NormalizeDouble(Low[shift] - gap*Point,Digits),ArrowFontName,ArrowSize,ANCHOR_UPPER,CharToStr(251),DnArrowColor);
      }
   }      

   if(AlertOn || EmailOn || PushNotificationOn)
   {
   buysignal  = (PnFLevel > 0 && upTrend[AlertShift] > PnFLevel && upTrend[AlertShift+1] <= PnFLevel)||(PnFLevel == 0 && upTrend[AlertShift] > 0 && upTrend[AlertShift+1] <= 0);
   sellsignal = (PnFLevel > 0 && dnTrend[AlertShift] <-PnFLevel && dnTrend[AlertShift+1] >=-PnFLevel)||(PnFLevel == 0 && dnTrend[AlertShift] < 0 && dnTrend[AlertShift+1] >= 0);

         if(PnFLevel > 0)
         {
         buyexit  = dnTrend[AlertShift] < 0 && upTrend[AlertShift+1] > PnFLevel;
         sellexit = upTrend[AlertShift] > 0 && dnTrend[AlertShift+1] <-PnFLevel;   
         }

      if(buysignal || sellsignal || buyexit || sellexit)
      {
         if(isNewBar(TimeFrame))
         {
            if(AlertOn)
            {
            BoxAlert(buysignal ," : BUY Signal @ " +DoubleToStr(Close[AlertShift],Digits));   
            BoxAlert(sellsignal," : SELL Signal @ "+DoubleToStr(Close[AlertShift],Digits)); 
            BoxAlert(buyexit   ," : BUY Exit @ "   +DoubleToStr(Close[AlertShift],Digits));   
            BoxAlert(sellexit  ," : SELL Exit @ "  +DoubleToStr(Close[AlertShift],Digits));
            }

            if(EmailOn)
            {
            EmailAlert(buysignal ,"BUY Signal" ," : BUY Signal @ " +DoubleToStr(Close[AlertShift],Digits),EmailsNumber); 
            EmailAlert(sellsignal,"SELL Signal"," : SELL Signal @ "+DoubleToStr(Close[AlertShift],Digits),EmailsNumber); 
            EmailAlert(buyexit   ,"BUY Exit"   ," : BUY Exit @ "   +DoubleToStr(Close[AlertShift],Digits),EmailsNumber); 
            EmailAlert(sellexit  ,"SELL Exit"  ," : SELL Exit @ "  +DoubleToStr(Close[AlertShift],Digits),EmailsNumber); 
            }

            if(PushNotificationOn)
            {
            PushAlert(buysignal ," : BUY Signal @ " +DoubleToStr(Close[AlertShift],Digits));   
            PushAlert(sellsignal," : SELL Signal @ "+DoubleToStr(Close[AlertShift],Digits)); 
            PushAlert(buyexit   ," : BUY Exit @ "   +DoubleToStr(Close[AlertShift],Digits));   
            PushAlert(sellexit  ," : SELL Exit @ "  +DoubleToStr(Close[AlertShift],Digits)); 
            }
         }
         else
         {
            if(AlertOn)
            {
            WarningSound(buysignal ,SoundsNumber,SoundsPause,UpTrendSound,Time[AlertShift]);
            WarningSound(sellsignal,SoundsNumber,SoundsPause,DnTrendSound,Time[AlertShift]);
            WarningSound(buyexit   ,SoundsNumber,SoundsPause,UpTrendSound,Time[AlertShift]);
            WarningSound(sellexit  ,SoundsNumber,SoundsPause,DnTrendSound,Time[AlertShift]);
           }
         }   
      }
   }   
}   

int      dir[2];
double   upband[2], loband[2], pnfclose[2];
datetime pnfprevtime;

int pnfChart(double& close,double& open,int pricemode,double size,double mult,bool hilo,int cbars,int bar)
{
   int app_price;
   double value, hiprice, loprice;

   if(pnfprevtime != Time[bar])
   {
   upband[1]   = upband[0]; 
   loband[1]   = loband[0];    
   dir[1]      = dir[0]; 
   pnfprevtime = Time[bar]; 
   }

   if(pricemode < 10) app_price = Price; else app_price = 0;

   mPrice[bar]  = getPrice(app_price,bar);
   hiPrice[bar] = High[bar];
   loPrice[bar] = Low [bar]; 
   oPrice[bar]  = Open[bar];

   if(bar > MathMin(Bars-ma_period-1,cBars)) return(-1);

   aPrice1 [bar] = allAveragesOnArray(0,mPrice ,PreSmooth,PreSmoothMode,masize,MathMin(Bars-ma_period-1,cBars),bar);   
   hiPrice1[bar] = allAveragesOnArray(1,hiPrice,PreSmooth,PreSmoothMode,masize,MathMin(Bars-ma_period-1,cBars),bar);  
   loPrice1[bar] = allAveragesOnArray(2,loPrice,PreSmooth,PreSmoothMode,masize,MathMin(Bars-ma_period-1,cBars),bar);  
   oPrice1 [bar] = allAveragesOnArray(3,oPrice ,PreSmooth,PreSmoothMode,masize,MathMin(Bars-ma_period-1,cBars),bar);    

   if(Price > 9)
   {
   aPrice1[bar] = HeikenAshi(0,Price-10,aPrice1[bar],hiPrice1[bar],loPrice1[bar],oPrice1[bar],MathMin(Bars-ma_period-1,cBars),bar,hiPrice1[bar],loPrice1[bar]);
   }

   double step = size*_point;

   if(!hilo)
   {
   hiprice = NormalizeDouble(MathFloor(aPrice1[bar]/step)*step,Digits); 
   loprice = NormalizeDouble(MathCeil (aPrice1[bar]/step)*step,Digits);
   }
   else
   {
   hiprice = NormalizeDouble(MathFloor(hiPrice1[bar]/step)*step,Digits);
   loprice = NormalizeDouble(MathCeil (loPrice1[bar]/step)*step,Digits);
   }

   if(bar < MathMin(Bars-ma_period-1,cBars))
   {
   upband[0] = upband[1]; 
   loband[0] = loband[1];   
   dir[0]    = dir[1]; 

   if(dir[0] != 0) value = NormalizeDouble(mult*step,Digits); else value  = step;

      if(dir[0] > 0) 
      {
         if(hiprice > upband[0]) 
         {
         upband[0] = NormalizeDouble(hiprice,Digits); 
         loband[0] = NormalizeDouble(upband[0] - value,Digits);
         }
         else
         {
            if(loprice < NormalizeDouble(upband[0] - value,Digits)) 
            {
            dir[0] =-1; 
            loband[0] = NormalizeDouble(loprice,Digits);
            upband[0] = NormalizeDouble(loband[0] + value,Digits);
            }
         }
      }
      else
      if(dir[0] < 0)
      {
         if(loprice < loband[0])
         {   
         loband[0] = NormalizeDouble(loprice,Digits); 
         upband[0] = NormalizeDouble(loband[0] + value,Digits);
         }
         else
         {
            if(hiprice > NormalizeDouble(loband[0] + value,Digits)) 
            {
            dir[0] = 1; 
            upband[0] = NormalizeDouble(hiprice,Digits); 
            loband[0] = NormalizeDouble(upband[0] - value,Digits);
            }
         }
      }
   }    
   else
   if(bar == MathMin(Bars-ma_period-1,cBars))
   { 
      if(Close[bar] >= Open[bar]) 
      {
      dir[0] = 1; 
      upband[0] = hiprice;
      loband[0] = loprice;// - value;
      }
      else
      {
      dir[0] =-1;   
      loband[0] = loprice;
      upband[0] = hiprice;//loprice + value; 
      }  
   }

   if(dir[0] > 0) close = upband[0]; else close = loband[0]; 

   return(dir[0]);
}

int averageSize(int mode)
{   
   int arraysize;

   switch(mode)
   {
   case DEMA     : arraysize = 2; break;
   case T3_basic : ar

Показано первые 50% кода (символов: 36266)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
3 626,60₽ ≈ $44.32