мой код записывает лонг-ChartID во временную Глобальную переменную.
Визуально, если нажать F3, там отображается ноль (или другое отличное значение). Это происходит потому что терминал думает что это double-значение и пытается его показать, но мы ему подсунули long - это совсем другой формат числа.
Если это значение прочитать назад как обычный дабл, там будет непонятно что. Если его прочитать моим кодом, то там снова будет лонг (тот же что и сохраняли). Если же вручную, в окне терминала, ткнуть в эту переменную, то она обнулится, потому что терминал обнаружит подмену.
Как мне результат использовать в CHART_BRING_TO_TOP ?
Подскажите где ошибка. Ситуация такая, когда вызываю обычный фрактал, стрелка ставится по условию, там где положено, когда вызываю фрактал iFreeNumFractals то условие выполнено, должна быть стрелка а её нет.Строки с iFreeNumFractals закомментированы установлены настройки как у обычного фрактала. По идее картина должна быть одинаковой, если закомментировать строки с обычным фракталом и раскоментировать iFreeNumFractals, но...
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots 2
//--- plot UP
#property indicator_label1 "UP"
#property indicator_type1 DRAW_ARROW
#property indicator_color1 clrLawnGreen
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
//--- plot DN
#property indicator_label2 "DN"
#property indicator_type2 DRAW_ARROW
#property indicator_color2 clrDeepPink
#property indicator_style2 STYLE_SOLID
#property indicator_width2 1
//--- indicator buffers
double BufferUP[];
double BufferDN[];
int dist=3;
string nameInd;
datetime timf=0;
int numf;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- indicator buffers mapping
SetIndexBuffer(0,BufferUP);
SetIndexBuffer(1,BufferDN);
//--- setting a code from the Wingdings charset as the property of PLOT_ARROW
SetIndexArrow(0,233);
SetIndexArrow(1,234);
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---
if(rates_total<2) return(0);
{
int limit=rates_total-prev_calculated;
if(limit>1)
{
limit=rates_total-2;
ArrayInitialize(BufferUP,EMPTY_VALUE);
ArrayInitialize(BufferDN,EMPTY_VALUE);
}
for(int i=limit; i>=0; i--)
{
if(fub(i))
{
BufferUP[i]=low[i]-dist*Point;
}
Comment("");
}
//--- return value of prev_calculated for next call
}
return(rates_total);
}
//+
bool fub(int ib)//
{
bool bingob=false,flag_verh_f=0;
int start_bar=0,numbarfrup=0,kfr_all=0;
double high_old=0,prfra=0,f_up=0,f_dn=0,f=0;
{
for(int i_i=ib+3; i_i<Bars-2; i_i++)
{
if(high_old<High[i_i]) high_old=High[i_i];
f_up=iFractals(Symbol(),0,MODE_UPPER,i_i);
//f_up=NormalizeDouble(iCustom(Symbol(),0,"iFreeNumFractals",1,2,2,2,2,0,i_i),Digits);
f_dn=iFractals(Symbol(),0,MODE_LOWER,i_i);
//f_dn=NormalizeDouble(iCustom(Symbol(),0,"iFreeNumFractals",1,2,2,2,2,1,i_i),Digits);
if(f_up>0 && f_up>iMA(NULL,0,33,0,MODE_SMMA,PRICE_CLOSE,i_i)+10*Point)//Если фрактал найден выше МА+10 pips
{
numbarfrup=i_i;
}
if(f_dn>0 && f_dn<iMA(NULL,0,33,0,MODE_SMMA,PRICE_CLOSE,i_i))
{
start_bar=numbarfrup;break;
}
}
for(int i_i=start_bar; i_i<Bars-2; i_i++)
{
f=iFractals(Symbol(),0,MODE_UPPER,i_i);
//f=NormalizeDouble(iCustom(Symbol(),0,"iFreeNumFractals",1,2,2,2,2,0,i_i),Digits);
if(f>0)kfr_all++;
if(f>0 && Low[ib]<f+1*_Point && Open[ib]>f //Сравнение фрактала с текущ баром
&&
high_old-f>=100*Point//от максимума до фрактала 100 пп
)
{
bingob=true;
prfra=f;
timf=Time[i_i];
break;
}
if(kfr_all==3)break;
}
}
// numfb=iBarShift(NULL,PERIOD_CURRENT,timf,true);
if(bingob)
{flag_verh_f=true;}
if(bingob==false)
flag_verh_f=false;
return(flag_verh_f);
}
//
ребят всем привет, такая ситуация имеем в рынке три ордера бай по одной цене цена идет вверх на 10 пунктов мы имеем по каждому ордеру +10 пунктов я хочу за локировать тремя ордерами сел теперь как сделать так что бы эти ордера больше не проверялись в мкл4
Подскажите где ошибка. Ситуация такая, когда вызываю обычный фрактал, стрелка ставится по условию, там где положено, когда вызываю фрактал iFreeNumFractals то условие выполнено, должна быть стрелка а её нет.Строки с iFreeNumFractals закомментированы установлены настройки как у обычного фрактала. По идее картина должна быть одинаковой, если закомментировать строки с обычным фракталом и раскоментировать iFreeNumFractals, но...
Индикаторы iFreeNumFractals с настройками как у стандартного и стандартный Fractals есть на графике?
Aleksandr Egorov: ребят всем привет, такая ситуация имеем в рынке три ордера бай по одной цене цена идет вверх на 10 пунктов мы имеем по каждому ордеру +10 пунктов я хочу за локировать тремя ордерами сел теперь как сделать так что бы эти ордера больше не проверялись в мкл4
Чтобы вас понимали - что именно вы хотите, потрудитесь использовать в своём тексте знаки препинания. А то свалили всё в одну кучу - поди разберись что имелось в виду...
так же как использовали до этого CHART_BRING_TO_TOP
Так как использовал ничего не получается. Для Вас наверное не составит большого труда все тоже самое, только в виде индикатора и довести до CHART_BRING_TO_TOP.
Чтобы вас понимали - что именно вы хотите, потрудитесь использовать в своём тексте знаки препинания. А то свалили всё в одну кучу - поди разберись что имелось в виду...
такая ситуация, имеем в рынке три ордера бай, по одной цене, цена идет вверх на 10 пунктов, мы имеем по каждому ордеру +10 пунктов, я хочу за локировать тремя ордерами сел, теперь как сделать так, что бы эти ордера больше не проверялись в мкл4
GlobalVariableCheck() - проверяет есть ли уже такая переменная, если нет, то GlobalVariableTemp() - создает временную переменную, которая сама удалится при следующем запуске.
Этот момент понятен, вопрос почему если не существует ГП создается только временная, а не постоянная через GlobalVariableSet?
мой код записывает лонг-ChartID во временную Глобальную переменную.
Визуально, если нажать F3, там отображается ноль (или другое отличное значение).
Это происходит потому что терминал думает что это double-значение и пытается его показать, но мы ему подсунули long - это совсем другой формат числа.
Если это значение прочитать назад как обычный дабл, там будет непонятно что.
Если его прочитать моим кодом, то там снова будет лонг (тот же что и сохраняли).
Если же вручную, в окне терминала, ткнуть в эту переменную, то она обнулится, потому что терминал обнаружит подмену.
Убрать инициализацию time временем в OnInit()
Спасибо.
Подскажите где ошибка. Ситуация такая, когда вызываю обычный фрактал, стрелка ставится по условию, там где положено, когда вызываю фрактал iFreeNumFractals то условие выполнено, должна быть стрелка а её нет.Строки с iFreeNumFractals закомментированы установлены настройки как у обычного фрактала. По идее картина должна быть одинаковой, если закомментировать строки с обычным фракталом и раскоментировать iFreeNumFractals, но...
Как мне результат использовать в CHART_BRING_TO_TOP ?
так же как использовали до этого CHART_BRING_TO_TOP
Спасибо.
Подскажите где ошибка. Ситуация такая, когда вызываю обычный фрактал, стрелка ставится по условию, там где положено, когда вызываю фрактал iFreeNumFractals то условие выполнено, должна быть стрелка а её нет.Строки с iFreeNumFractals закомментированы установлены настройки как у обычного фрактала. По идее картина должна быть одинаковой, если закомментировать строки с обычным фракталом и раскоментировать iFreeNumFractals, но...
Индикаторы iFreeNumFractals с настройками как у стандартного и стандартный Fractals есть на графике?
Если есть, их сигналы совпадают?
ребят всем привет, такая ситуация имеем в рынке три ордера бай по одной цене цена идет вверх на 10 пунктов мы имеем по каждому ордеру +10 пунктов я хочу за локировать тремя ордерами сел теперь как сделать так что бы эти ордера больше не проверялись в мкл4
Чтобы вас понимали - что именно вы хотите, потрудитесь использовать в своём тексте знаки препинания. А то свалили всё в одну кучу - поди разберись что имелось в виду...
так же как использовали до этого CHART_BRING_TO_TOP
Чтобы вас понимали - что именно вы хотите, потрудитесь использовать в своём тексте знаки препинания. А то свалили всё в одну кучу - поди разберись что имелось в виду...
такая ситуация, имеем в рынке три ордера бай, по одной цене, цена идет вверх на 10 пунктов, мы имеем по каждому ордеру +10 пунктов, я хочу за локировать тремя ордерами сел, теперь как сделать так, что бы эти ордера больше не проверялись в мкл4
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Любые вопросы новичков по MQL4, помощь и обсуждение по алгоритмам и кодам
Taras Slobodyanik, 2018.10.07 22:12
GlobalVariableCheck() - проверяет есть ли уже такая переменная, если нет, то
GlobalVariableTemp() - создает временную переменную, которая сама удалится при следующем запуске.
Этот момент понятен, вопрос почему если не существует ГП создается только временная, а не постоянная через GlobalVariableSet?
Индикаторы iFreeNumFractals с настройками как у стандартного и стандартный Fractals есть на графике?
Если есть, их сигналы совпадают?
Совпадают фракталы полностью.
Стрелки по обычным фракталам на скрине
по iFreeNumFractals ставит первую и последнюю, средних трёх нет.