eevviill2
Местный знаток
После того, как отработает ф-ция закрытия ордеров, прописать Sleep(50);
PHP:
Sleep(50);
RefreshRates();
После того, как отработает ф-ция закрытия ордеров, прописать Sleep(50);
Sleep(50);
RefreshRates();
#include <stdlib.mqh>
#import "kernel32.dll"
bool CopyFileA(string a0, string a1, bool a2);
#import
extern string Мастер = "C:\\Users\\sneg\\AppData\\Roaming\\MetaQuotes\\Terminal\\287469DEA9630EA94D0715D755974F1B\\MQL4\\Files";
extern int Периодичность = 1;
extern double Множитель = 2.0;
int g_ord_total_96 = 0;
int gia_100[];
int gia_104[];
int gia_108[];
double gda_112[];
string gsa_116[];
double gda_120[];
double gda_124[];
double gda_128[];
string gsa_132[];
int gi_unused_136 = 0;
int g_index_140;
string gsa_144[100];
string g_name_148 = "\\MasterOrders.txt";
int gia_156[];
int gia_160[];
int gia_164[];
int gia_168[];
int gi_172 = 0;
int gi_176 = 1000;
int g_slippage_180 = 5;
bool gi_184 = FALSE;
bool gi_188;
int gi_192 = 2000;
int gi_196 = 0;
Добрый день уважаемые программисты! Помогите пожалуйста справиться: как определить именно ту стрелку которую я хочу, на графике, которая была нарисована индикатором, и если её нет в объектах терминала?
Надеюсь, что речь идет о стрелке созданной как объект. На графике не может быть два объекта с одинаковым именем - вот от этого и отталкивайся. А что бы узнать, есть ли нужный объект на графике - воспользуйся ф-цией ObjectFind().
int GetArrows()
{
//Поиск стрелки на покупку с уже заданным номером
//И если она нашлась то её номер увеличиваем на 1
if(ObjectFind("Стрелка на покупку"+i))
{
i++;
}
/////////////////////////////////////////////////////////
if(ObjectFind("Стрелка на продажу"+i)) i++;
//Поиск стрелки на продажу с заданным номером
//И если её удалось найти то номер стрелки увеличиваем
//на 1
return(i);
}
Стрелка создана как объект. Но индикатором, и на графике полно стрелок с одинаковыми названиями. Как вычислить именно последнюю и сделать ихний счётчик?
Открой в терминале "Список объектов", Ctrl+B - будут все объекты и их имена. Если нужна именно последняя: если на конкретном баре - тогда контролировать только данный бар, если за несколько баров - нужно их перебирать в поиске стрелки. Если на графике будут стрелки только от одного индикатора, тогда можно не париться с именами стрелок, а вести контроль/поиск только по типу стрелки, т.е., её коду, можно и по цвету.
Всё разобрался! Спасибо за помощь!
"Он" - это кто или что?Теперь осталось разобраться почему он находит стрелки на каждом тике....
Тогда стрелки созданы не как объекты, а созданы они в буферах индикатора.(я смотрел объекты всё равно ничего не нашёл, а когда нажал на кнопку "все"
всё равно тоже ничего не нашёл...) :disappointed:
"Он" - это индикатор."Он" - это кто или что?
Спасибо за пояснение!Тогда стрелки созданы не как объекты, а созданы они в буферах индикатора.
int SearshArrows()
{
if(ObjectFind(0,"Стрелка на продажу"+y) && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_up)
{
buf_s[0]=1; ar_up=false; ar_dn=true;
buf_b[0]=0; Top=iTime(_Symbol,InputPeriod,0);
y++;
if(use_Print) Print("Стрелка на продажу = ",buf_s[0]);
}
if(ObjectFind(0,"Стрелка на покупку"+y) && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_dn)
{
buf_b[0]=1; ar_dn=false; ar_up=true;
buf_s[0]=0; Top=iTime(_Symbol,InputPeriod,0);
y++;
if(use_Print)Print("Стрелка на покупку = ",buf_b[0]);
}
return(y);
}
Добрый день! Всё, я окончательно запутался! Я хочу чтоб этот код искал стрелки на графике и при нахождении например стрелки на покупку давал сигнал на покупку и искал только стрелку на продажу и на оборот.А мой код находит стрелку условие поиска которой записана первой а следующую уже не ищет. Помогите пожалуйста разобраться!
PHP:int SearshArrows() { if(ObjectFind(0,"Стрелка на продажу"+y) && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_up) { buf_s[0]=1; ar_up=false; ar_dn=true; buf_b[0]=0; Top=iTime(_Symbol,InputPeriod,0); y++; if(use_Print) Print("Стрелка на продажу = ",buf_s[0]); } if(ObjectFind(0,"Стрелка на покупку"+y) && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_dn) { buf_b[0]=1; ar_dn=false; ar_up=true; buf_s[0]=0; Top=iTime(_Symbol,InputPeriod,0); y++; if(use_Print)Print("Стрелка на покупку = ",buf_b[0]); } return(y); }
Сперва, что ты здесь получаешь: ObjectFind(0,"Стрелка на продажу"+y)? Посмотри в справке, что возвращает данная ф-ция и что ты хочешь получить - у тебя она используется как булевая, а на самом деле, согласно справке? Задай верно условие.
int SearshArrows()
{
if(ObjectFind(0,"Стрелка на продажу"+y)==0 && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_up)
{
buf_s[0]=1; ar_up=false; ar_dn=true;
buf_b[0]=0; Top=iTime(_Symbol,InputPeriod,0);
y++;
if(use_Print) Print("Стрелка на продажу = ",buf_s[0]);
}
if(ObjectFind(0,"Стрелка на покупку"+y)==0 && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_dn)
{
buf_b[0]=1; ar_dn=false; ar_up=true;
buf_s[0]=0; Top=iTime(_Symbol,InputPeriod,0);
y++;
if(use_Print)Print("Стрелка на покупку = ",buf_b[0]);
}
return(y);
}
Вот задал вроде бы правильное условие и вообще ноль эмоций! Ничего
в экспертах и в журнале не пишет и стрелки вообще не ищет! use_Print я присвоил true!
PHP:int SearshArrows() { if(ObjectFind(0,"Стрелка на продажу"+y)==0 && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_up) { buf_s[0]=1; ar_up=false; ar_dn=true; buf_b[0]=0; Top=iTime(_Symbol,InputPeriod,0); y++; if(use_Print) Print("Стрелка на продажу = ",buf_s[0]); } if(ObjectFind(0,"Стрелка на покупку"+y)==0 && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_dn) { buf_b[0]=1; ar_dn=false; ar_up=true; buf_s[0]=0; Top=iTime(_Symbol,InputPeriod,0); y++; if(use_Print)Print("Стрелка на покупку = ",buf_b[0]); } return(y); }
Артмен, вот набросал индюка для поиска стрелок. Их можно фильтровать как по коду стрелки, так и по цвету и имени - разбирайся и сделай так как именно тебе нужно:
PS.
в 83 строке - опечатка - сам разберешься какая именно...
int SearshArrows()
{
while(s<History)
{
for(int e=ObjectsTotal()-1; e>=0; e--)
{ //Объект на нужном баре по времени
if(ObjectGetInteger(0,ObjectName(e),OBJPROP_TIME)!=Time[s])
{
if(ObjectFind(0,"Стрелка на покупку") && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_dn)
{
buf_b="найдено"; ar_dn=false; ar_up=true;
buf_s="не найдено"; Top=iTime(_Symbol,InputPeriod,0);
if(use_Print)Print("Стрелка на покупку - ",buf_b);
}
if(ObjectFind(0,"Стрелка на продажу") && (Top==0 || Top!=iTime(_Symbol,InputPeriod,0)) && ar_up)
{
buf_s="найдено"; ar_up=false; ar_dn=true;
buf_b="не найдено"; Top=iTime(_Symbol,InputPeriod,0);
if(use_Print) Print("Стрелка на продажу - ",buf_s);
}
}
}
s++;
}
return(0);
}
В индикаторе рисуют стрелки только его буфера!
Ups, я худею..., вчера разобрали вроде как, если объектов, стрелок, нет в "Список объектов" - значит они созданы не как объекты. Сегодня ты снова просишь о помощи с кодом в поиске стрелок как "объекты", а тут оказывается - В индикаторе рисуют стрелки только его буфера! - да бы избежать дальнейших непоняток - предоставь сам индюк.