PDA

Просмотр полной версии : Индикатор не возвращает отрицательную дельту



hoz
07.09.2015, 10:57
Приобрёл пакет индикаторов Standart. В общем-то, мне они нужны больше для автоматической торговли.
Начал писал торгового робота, но замтел, что индикатор GetClusterDelta_Delta не возвращает отрицательные значение. Как тогда вообще с ним работать?
Специально написал сову-пустышку, чтоб показать что имеется:

//+---------------------------------------------------------------------------------------------------------------------------------------+
//| GetDataFromDelta.mq4 |
//| hoz |
//| |
//+---------------------------------------------------------------------------------------------------------------------------------------+
#property copyright "hoz"
#property link ""
#property version "1.00"
#property strict
//+---------------------------------------------------------------------------------------------------------------------------------------+
//| Функция инициализации эксперта |
//+---------------------------------------------------------------------------------------------------------------------------------------+
int OnInit()
{
//---

//---
return(INIT_SUCCEEDED);
}
//+---------------------------------------------------------------------------------------------------------------------------------------+
//| Функция деинициализации эксперта |
//+---------------------------------------------------------------------------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---

}
//+---------------------------------------------------------------------------------------------------------------------------------------+
//| Получение значение с ClusterDelta_Delta |
//+---------------------------------------------------------------------------------------------------------------------------------------+
double GetClusterDelta_Delta()
{
double b = iCustom (_Symbol, _Period, "ClusterDelta_Delta.ex4", 0, 0);
return (b);
}
//+---------------------------------------------------------------------------------------------------------------------------------------+
//| Функция OnTick() эксперта |
//+---------------------------------------------------------------------------------------------------------------------------------------+
void OnTick()
{
Comment ("b = ", DoubleToStr (GetClusterDelta_Delta(), _Digits));
Print ("b = ", DoubleToStr (GetClusterDelta_Delta(), _Digits));
}

hoz
07.09.2015, 11:18
Немого изменил код пробника, вот что вышло (Копию прилагаю к посту):

//+---------------------------------------------------------------------------------------------------------------------------------------+
//| GetDataFromDelta.mq4 |
//| hoz |
//| |
//+---------------------------------------------------------------------------------------------------------------------------------------+
#property copyright "hoz"
#property link ""
#property version "1.00"
#property strict
//+---------------------------------------------------------------------------------------------------------------------------------------+
//| Функция инициализации эксперта |
//+---------------------------------------------------------------------------------------------------------------------------------------+
int OnInit()
{
//---

//---
return(INIT_SUCCEEDED);
}
//+---------------------------------------------------------------------------------------------------------------------------------------+
//| Функция деинициализации эксперта |
//+---------------------------------------------------------------------------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---

}
//+---------------------------------------------------------------------------------------------------------------------------------------+
//| Получение значение с ClusterDelta_Delta |
//+---------------------------------------------------------------------------------------------------------------------------------------+
double GetClusterDelta_Delta (string fs_Symbol, int fi_Period, int fi_Mode, int fi_Shift)
{
double b = iCustom (fs_Symbol, fi_Period, "ClusterDelta_Delta.ex4", fi_Mode, fi_Shift);
return (b);
}
//+---------------------------------------------------------------------------------------------------------------------------------------+
//| Функция OnTick() эксперта |
//+---------------------------------------------------------------------------------------------------------------------------------------+
void OnTick()
{
for (int i = 0; i <= 15; i++)
{
Print ("i = ", i, "; b = ", DoubleToStr (GetClusterDelta_Delta(_Symbol, _Period, 0, i), _Digits));
}
}
В журнале вижу:

2015.09.07 12:14:58.783 GetDataFromDelta EURUSD,M1: i = 15; b = 0.00000
2015.09.07 12:14:58.783 GetDataFromDelta EURUSD,M1: i = 14; b = 0.00000
2015.09.07 12:14:58.783 GetDataFromDelta EURUSD,M1: i = 13; b = 0.00000
2015.09.07 12:14:58.783 GetDataFromDelta EURUSD,M1: i = 12; b = 0.00000
2015.09.07 12:14:58.783 GetDataFromDelta EURUSD,M1: i = 11; b = 0.00000
2015.09.07 12:14:58.783 GetDataFromDelta EURUSD,M1: i = 10; b = 130.00000
2015.09.07 12:14:58.783 GetDataFromDelta EURUSD,M1: i = 9; b = 0.00000
2015.09.07 12:14:58.783 GetDataFromDelta EURUSD,M1: i = 8; b = 101.00000
2015.09.07 12:14:58.783 GetDataFromDelta EURUSD,M1: i = 7; b = 0.00000
2015.09.07 12:14:58.783 GetDataFromDelta EURUSD,M1: i = 6; b = 2.00000
2015.09.07 12:14:58.783 GetDataFromDelta EURUSD,M1: i = 5; b = 13.00000
2015.09.07 12:14:58.783 GetDataFromDelta EURUSD,M1: i = 4; b = 32.00000
2015.09.07 12:14:58.783 GetDataFromDelta EURUSD,M1: i = 3; b = 0.00000
2015.09.07 12:14:58.783 GetDataFromDelta EURUSD,M1: i = 2; b = 71.00000
2015.09.07 12:14:58.783 GetDataFromDelta EURUSD,M1: i = 1; b = 17.00000

У меня в коде всё верно. Значит индикатор как-то не так возвращает отрицателньые значения. В чём тут загвоздка то?

deniss
07.09.2015, 11:58
Немого изменил код пробника, вот что вышло (Копию прилагаю к посту):

У меня в коде всё верно. Значит индикатор как-то не так возвращает отрицателньые значения. В чём тут загвоздка то?

Отрицательные значения в другом буфере:



#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 DodgerBlue
#property indicator_color2 OrangeRed
#property indicator_width1 2
#property indicator_width2 2

#property indicator_level1 0.0
#property indicator_levelwidth 1
#property indicator_levelcolor Black

#include <ghttp3.mqh>

//---- input parameters
extern string Comment_Instrument="--- Futures Ticker or AUTO ";
extern string Instrument="AUTO";
extern int Update_in_sec=11;
extern string MetaTrader_GMT="AUTO";
//---- buffers

double DeltaPositive[];
double DeltaNegative[];
[...skip...]

int init()
{
string short_name="";

IndicatorDigits(0);
//---- indicator line
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexBuffer(0,DeltaPositive);
SetIndexLabel(0,"Delta");

SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexBuffer(1,DeltaNegative);
SetIndexLabel(1,"Delta");