Функции от eevviill

eevviill

Заблокирован
Пересчёт баров (для индикаторов)

PHP:
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;
}

  }
 
Последнее редактирование модератором:

viplert

Активный участник
Не подскажите как для тестера изменить спред, может у вас какой скрипт есть, пробовал найденные в интернете скрипты не работают под новый билд...
 

abuuuuuu

Местный знаток
как будет код закрытие ордеров в советнике в новых билдах ? заранее благодарен
 

eevviill

Заблокирован
Alert и Sound вместе

Через разработчиков приходится извращатся.
PHP:
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);}
}
 
Последнее редактирование:

eevviill

Заблокирован
Функция string or double

Функция узнаёт параметр типа string или double.
Нужная функция например для советника который будет тестить стрелочные индикаторы.


PHP:
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);
 

eevviill

Заблокирован
Включено, отключено вместо true,false

PHP:
enum bools 
  {
   fal=0,     // Отключено
   tru=1,     // Включено
  };

extern bools use_chek_way = true; //Проверка направления

Такое оформление даёт возможность в настройках программы видеть
 

Вложения

  • bools.jpg
    bools.jpg
    7,7 КБ · Просмотры: 38

eevviill

Заблокирован
Функция удаления объектов при вызове других индикаторов

Функция будет полезна если вы из советника или индикатора вызываете другой индикатор, который рисует объекты на графике. При таком вызове объекты нарисуются на графике. Функцию надо вставлять после места в коде где идёт обращение к другим индикаторам.

PHP:
///////////////////////////////////////////////////////
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;}
}
}


}
 
Последнее редактирование:

eevviill

Заблокирован
Проверка свободных средств при открытии ордера.

PHP:
if(AccountFreeMargin()<MarketInfo(Symbol(),MODE_MARGINREQUIRED)*Lotss) 
{Alert("Not enough money to open order!");return;}
 

eevviill

Заблокирован
Время экспирации ордера для бинарных опционов.

PHP:
extern int expir_minutes = 5;

OrderSend(OrderSend(Symbol(),OP_BUY,0.1,Ask,Slippage,0,0,"BO exp:"+string(expir_minutes*60))
 
Верх