extern int Bars_To_Count = 400; //Подсчёт баров при прикреплении индикатора
extern int Bars_To_Recount = 4; //Пересчёт баров после прикрепления на каждом тике
int BarsCount;
bool count_chek;
int OnInit()
{
BarsCount=Bars_To_Count;
}
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[])
{
for(int i=BarsCount;i>=0;i--)
{
if(i>Bars-20) i=Bars-20;
}
if(!count_chek)
{
count_chek=true;
BarsCount=Bars_To_Recount;
}
}
Да. Зайти в тестер и выбрать спред.Не подскажите как для тестера изменить спред, может у вас какой скрипт есть, пробовал найденные в интернете скрипты не работают под новый билд...
Да. Зайти в тестер и выбрать спред.
Дык. Так как и в старых.как будет код закрытие ордеров в советнике в новых билдах ? заранее благодарен
Думаю что не часто.Как часто планируете обновлять тему?
extern string al_set = "Alerts settings";
extern bool use_alert = false;
extern string up_alert = "UP";
extern string down_alert = "DOWN";
extern bool use_sound = false;
extern string up_sound = "nigniy alert karol";
extern string down_sound = "nigniy alert karol";
bool al_pl=false;
bool so_pl=false;
datetime al_time;
//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 ((!use_sound || !use_alert || (use_alert && use_sound && al_pl && so_pl) || (use_alert && use_sound && !al_pl)) && Time[0] == prevtime) {al_pl=false;so_pl=false;return(rates_total);}
prevtime = Time[0];
//Alerts
if(use_alert)
{
if(up[1]!=EMPTY_VALUE && !al_pl) {al_time=TimeCurrent();al_pl=true;Alert(Symbol()," ",Period()," ",up_alert);}
if(down[1]!=EMPTY_VALUE && !al_pl) {al_time=TimeCurrent();al_pl=true;Alert(Symbol()," ",Period()," ",down_alert);}
}
if(use_sound)
{
if(up[1]!=EMPTY_VALUE && !so_pl && TimeCurrent()>=al_time+1) {so_pl=true;PlaySound(up_sound);}
if(down[1]!=EMPTY_VALUE && !so_pl && TimeCurrent()>=al_time+1) {so_pl=true;PlaySound(down_sound);}
}
Но можно и так если не надо тырлинькания алерта.Через разработчиков приходится извращатся...
extern string parametr1 = "3.4";
bool string_ = true;
string sub_str="";
sub_str=StringSubstr(parametr1,0,1);
for(int g=0;g<10;g++)
{
if(StringFind(sub_str,string(g))!=-1)
{
string_=false;
break;
}
}
string new_par1=parametr1;
if(!string_) double new_par1=StringToDouble(parametr1);
///////////////////////////////////////////////////////
void del_no_need_labels()
{
string buf_names[4]={"lDirection","ltrend","lCandleclosesin","lCurrentTime"};
string name_delete;
for(int i=ObjectsTotal()-1;i>=0;i--)
{
name_delete=ObjectName(i);
for(int y=0;y<ArraySize(buf_names);y++)
{
if(StringFind(name_delete,buf_names[y])!=-1) {ObjectDelete(name_delete);break;}
}
}
}