Бета-тестирование MetaTrader 5 началось! - страница 91

 
SHOOTER777 >>:

Поразительно, но мне пришла в голову точно такая же мысль и код я использую в точности такой же)))

Видимо потому, что есть вещи естественные по жизни.

И если не выдумывать (это в пику разработчикам ;) то мысли сходятся... сами собой...

 

Скажите как получить все цены(там где стрелочки на графике) индикатора Fractals через советник?

я делаю вот так:

int handle;
double  Label1Buffer[],Label2Buffer[];

int OnInit()
  {
//---


 SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA);
SetIndexBuffer(1,Label2Buffer,INDICATOR_DATA);
   


handle =iFractals(Symbol(),PERIOD_CURRENT);


//---
   return(0);
  }
void OnTick() 
  {
ArraySetAsSeries(Label1Buffer,true);
ArraySetAsSeries(Label2Buffer,true);

CopyBuffer(handle,0,0,50,Label1Buffer);
CopyBuffer(handle,1,0,50,Label2Buffer);

double copy=Label1Buffer[4];
double copy2=Label2Buffer[4];
Comment(handle," ",GetLastError()," ",copy," ",copy2);

Комент показывает цены с множеством цифр после запятой....1,79769313486231e+308



Тобишь тут нет значений у индикатора фрактал

Label1Buffer[4];
А как мне получать все значения где есть стрелочки? 


 
Цитата из справки в разделе "Графические объекты" "Группа функций, предназначенных для работы с графическими объектами, относящимся к любому указанному графику. Эти функции нельзя использовать в индикаторах." К тому моменту, как я обратил внимание на данное ограничение, мной написано уже три индикатора и во всех прекрасно работают все функции(почти все-просто не всеми пользовался, что использовал работает) Вопрос! Что не так? 1) Я понял не правильно 2) В справке ошибка 3) Что то не сработало в коде 4) Пока работает, а в окончательном варианте не будет 5) Что-то еще
 
Куда то пропало меню форума, не могу вставить как код SRC и ссылки! Вот из справки ENUM_ARROW_ANCHORИдентификатор Описание ANCHOR_TOP Anchor on the top side ANCHOR_BOTTOM Anchor on the bottom side Понятно, что речь идет о "верх" "низ" но просьба доперевести.
 
SHOOTER777 >>:
Цитата из справки в разделе "Графические объекты" "Группа функций, предназначенных для работы с графическими объектами, относящимся к любому указанному графику. Эти функции нельзя использовать в индикаторах." К тому моменту, как я обратил внимание на данное ограничение, мной написано уже три индикатора и во всех прекрасно работают все функции(почти все-просто не всеми пользовался, что использовал работает) Вопрос! Что не так? 1) Я понял не правильно 2) В справке ошибка 3) Что то не сработало в коде 4) Пока работает, а в окончательном варианте не будет 5) Что-то еще

Графические функции включены временно, по многочисленым просьбам трудящихся.

Окончательное решение видимо пока не принято, потому и справка не редактируется в этой части.

 

Не было 1 день и перестал работать код (214 билд)

int Dl = HistoryDealsTotal();
i=0;
double Prof=0, Prof1=0;
Prof_Min = Prof_Max - Prof_Instr;

ResetLastError();
while(i < Dl)
{
ulong Tik_D = HistoryDealGetTicket(i);
if(HistoryDealSelect(Tik_D, 1000) == false)
{Print("Не удалось выбрать сделку с тикетом = ", Tik_D, "в OnInit() = ", _LastError); return;}

2009.11.03 13:59:33 R002 (USDCHF,M1) Не удалось выбрать сделку с тикетом = 80652 в OnTrade() = 4757

Сделка с тикетом 80652 точно есть (не умею скопировать). Что-то изменилось?

 
SHOOTER777 >>:
Куда то пропало меню форума, не могу вставить как код SRC и ссылки! Вот из справки ENUM_ARROW_ANCHORИдентификатор Описание ANCHOR_TOP Anchor on the top side ANCHOR_BOTTOM Anchor on the bottom side Понятно, что речь идет о "верх" "низ" но просьба доперевести.

Сделано

 
Erm955 >>:

Не было 1 день и перестал работать код (214 билд)

int Dl = HistoryDealsTotal();
i=0;
double Prof=0, Prof1=0;
Prof_Min = Prof_Max - Prof_Instr;

ResetLastError();
while(i < Dl)
{
ulong Tik_D = HistoryDealGetTicket(i);
if(HistoryDealSelect(Tik_D, 1000) == false)
{Print("Не удалось выбрать сделку с тикетом = ", Tik_D, "в OnInit() = ", _LastError); return;}

2009.11.03 13:59:33 R002 (USDCHF,M1) Не удалось выбрать сделку с тикетом = 80652 в OnTrade() = 4757

Сделка с тикетом 80652 точно есть (не умею скопировать). Что-то изменилось?

Попробуйте предварительно вызвать HistorySelect().

 

input datetime Dat_Ot = D'2009.10.01'; // Дата ОТ
input datetime Dat_Do = D'2009.12.01'; // Дата ДО

ResetLastError();
if(HistorySelect(Dat_Ot, Dat_Do)); else Print("Ошибка получения истории сделок = ", _LastError);

int Dl = HistoryDealsTotal();
i=0;
double Prof=0, Prof1=0;
Prof_Min = Prof_Max - Prof_Instr;

ResetLastError();
while(i < Dl)
{
ulong Tik_D = HistoryDealGetTicket(i);
if(HistoryDealSelect(Tik_D, 1000) == false)
{Print("Не удалось выбрать сделку с тикетом = ", Tik_D, "в OnInit() = ", _LastError); return;}

2009.11.03 14:47:39 R002 (USDCHF,M1) Не удалось выбрать сделку с тикетом = 80869 в OnTrade() = 4757

Всё есть и было.

if(HistorySelect(Dat_Ot, Dat_Do)==false) Print("Ошибка получения истории сделок OnTrade = ", _LastError);
double Prof=0;
int Dl = HistoryDealsTotal(); Print("Dl = ", Dl);
if(Dl<=0) return;
ulong Tik_D = HistoryDealGetTicket(Dl-1); Print("Tik_D = ", Tik_D);
ResetLastError();
if(HistoryDealSelect(Tik_D, 1000) == false)
{Print("Не удалось выбрать сделку с тикетом = ", Tik_D, "в OnTrade() = ", _LastError); return;}

2009.11.03 14:57:32 R002 (USDCHF,M1) Не удалось выбрать сделку с тикетом = 80936 в OnTrade() = 4757
2009.11.03 14:57:31 R002 (USDCHF,M1) Tik_D = 80936
2009.11.03 14:57:31 R002 (USDCHF,M1) Dl = 93

 
Erm955 >>:

input datetime Dat_Ot = D'2009.10.01'; // Дата ОТ
input datetime Dat_Do = D'2009.12.01'; // Дата ДО

ResetLastError();
if(HistorySelect(Dat_Ot, Dat_Do)); else Print("Ошибка получения истории сделок = ", _LastError);

int Dl = HistoryDealsTotal();
i=0;
double Prof=0, Prof1=0;
Prof_Min = Prof_Max - Prof_Instr;

ResetLastError();
while(i < Dl)
{
ulong Tik_D = HistoryDealGetTicket(i);
if(HistoryDealSelect(Tik_D, 1000) == false)
{Print("Не удалось выбрать сделку с тикетом = ", Tik_D, "в OnInit() = ", _LastError); return;}

2009.11.03 14:47:39 R002 (USDCHF,M1) Не удалось выбрать сделку с тикетом = 80869 в OnTrade() = 4757

Всё есть и было.

Попробуйте обратиться в техподдержку, код указывает на превышение таймаута. Кроме того, в случае неудачного результата функции HistoryDealSelect() можно вывести в лог все сделки для ручной проверки.

Причина обращения: