Ваши вопросы по языку MQL4

ikaika

Гуру форума
Вот тебе кусок кода, чтобы сделать аналогичный MTF.
for(i=depth;i>0;i--)
{
tCCI_TF1=iCCI(Symbol(),PERIOD_M5,perCCI,PRICE_CLOSE,i)/333.3333;
tSTO_TF1=(iStochastic(Symbol(),PERIOD_M5,perSTO,3,3,MODE_LWMA,0,MODE_MAIN,i)-50.0)/50.0;
tRSI_TF1=(iRSI(Symbol(),PERIOD_M5,perRSI,PRICE_CLOSE,i)-50.0)/50.0;

tCCI_TF2=iCCI(Symbol(),PERIOD_M15,perCCI,PRICE_CLOSE,i)/333.3333;
tSTO_TF2=(iStochastic(Symbol(),PERIOD_M15,perSTO,3,3,MODE_LWMA,0,MODE_MAIN,i)-50.0)/50.0;
tRSI_TF2=(iRSI(Symbol(),PERIOD_M15,perRSI,PRICE_CLOSE,i)-50.0)/50.0;
}

int ii;
for(i=depth;i>=0;i--)
{
ii=iBarShift(Symbol(),PERIOD_M5,Time);
CCI_TF1=tCCI_TF1[ii];
STO_TF1=tSTO_TF1[ii];
RSI_TF1=tRSI_TF1[ii];
ii=iBarShift(Symbol(),PERIOD_M15,Time);
CCI_TF2=tCCI_TF2[ii];
STO_TF2=tSTO_TF2[ii];
RSI_TF2=tRSI_TF2[ii];
}
спс ... да индюка бы кинул сразу )
 

funny59

Гуру форума
1576216189813.png
Это просто кусок кода - без задания буферов индикатора, переменных для задания периодов, и прочего необходимого ничего не будет работать. Через часок скину сюда проект индюка ...
 

ikaika

Гуру форума
string sTfTable[] = {"M1","M5","M15","M30","H1","H4","D1","W1","MN"};
int iTfTable[] = {1,5,15,30,60,240,1440,10080,43200};

string timeFrameToString(int tf)
{
for (int i=ArraySize(iTfTable)-1; i>=0; i--)
if (tf==iTfTable) return(sTfTable);
return("");
}

добавил , наверно не туда затулил ))
 

freshwind

Новичок форума
Добрый день,

подскажите алгоритм явного контроля баров, что-бы при тестировании стратегии по этому методу "Open prices only (quick method on completed bars only for expert advisors that explicitly control bar opening)" - была нормальная точность.

Спасибо
 

st2050

Гуру форума
Здравствуйте, коллеги!
Поделитесь пожалуйста работающим кодом, масштабирующим главное окно по вертикали.

Хочу чуть меньше вертикальный масштаб. Смотрел-трогал CHART_SCALE_PT_PER_BAR и CHART_POINTS_PER_BAR, но не получилось.
 

vladradon

Программист
Хочу чуть меньше вертикальный масштаб.

C#:
//Считываем текущее состояние максимума и минимума окна
double Max=ChartGetDouble(0,CHART_PRICE_MAX);
double Min=ChartGetDouble(0,CHART_PRICE_MIN);
//Здесь меняем значения  Max и Min окна с учетом их ценовой шкалы Max=... Min=...
// и далее смена каждого предела по вертикали
ChartSetInteger(0,CHART_SCALEFIX,true);
ChartSetDouble(0,CHART_FIXED_MAX,Max);
ChartSetDouble(0,CHART_FIXED_MIN,Min);
ChartRedraw();
 

st2050

Гуру форума
vladradon, вот прям спасибо!
Надеюсь получится заточить и при листании графика.

Ох уж эти костыли. Песня: костыли вы мои, костыли ...
Вот мем в благодарность запилил.
NgZ_Gn_wJBw.jpg
 
Последнее редактирование:

vladradon

Программист
Надеюсь получится заточить и при листании графика.
Я тут недавно в "Доработке" экспериментировал с одним индюком - может пригодится. Там график индюка сильно сужал сам ценовой график.
 

Вложения

  • CCI_Chart_Cut+.mq4
    4,7 КБ · Просмотры: 23

Slava78

Элитный участник
Уважаемые прогеры, пожалуйста помогите. Хочу добавить в советник защиту с триалом.
 

Вложения

  • Stoha2 (2).mq4
    25,7 КБ · Просмотры: 18

vladradon

Программист
Хочу добавить в советник защиту с триалом
Защита и триал - две разные вещи. Защит можно много придумать и мало кто будет ими делиться. Триал - просто сделай проверку на текущее время с заранее заданным и еще желательно, чтобы была проверка на наличие в торгах ордеров - правильно, если сов не будет останавливать торговлю до отрабатывания всех текущих позиций, если триал закончился. Т.е. проверяешь, есть ли открытые ордера, и если нет, делаешь проверку
C#:
if(TimeCurrent()>StringToTime("yyyy.mm.dd hh:mi")) {Print("Триал закончил работу"); ExpertRemove();}
yyyy.mm.dd hh:mi - стандартный стринговый формат ввода даты и времени (окончания действия триала) - можешь в документации по StringToTime посмотреть или еще где.
А проверку делаешь в начале функции OnTick().
 
Последнее редактирование:

Slava78

Элитный участник
Защита и триал - две разные вещи. Защит можно много придумать и мало кто будет ими делиться. Триал - просто сделай проверку на текущее время с заранее заданным и еще желательно, чтобы была проверка на наличие в торгах ордеров - правильно, если сов не будет останавливать торговлю до отрабатывания всех текущих позиций, если триал закончился. Т.е. Проверяешь, есть ли открытые ордера и если нет, делаешь проверку
C#:
if(TimeCurrent()>StringToTime("yyyy.mm.dd hh:mi") {Print("Триал закончил работу"); ExpertRemove();}
yyyy.mm.dd hh:mi - стандартный стринговый формат ввода даты и времени (окончания действия триала) - можешь в документации по StringToTime посмотреть или еще где.
Большое спасибо, буду дальше учиться. А куда именно это вставить( какой строкой?)
 

AlexeNP

Гуру форума
Уважаемые прогеры, пожалуйста помогите. Хочу добавить в советник защиту с триалом, пытался сам найти и на официальном сайте mql5 Защищайтесь, господа разработчики! (ссылка создана не в целях рекламы, уважаемые админы если запрещено удалите пожалуйста)
ну вот так проще всего
PHP:
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   datetime trial=D'31.01.2020';
   if(TimeCurrent()>trial)
     {
      Alert("Nicht schießen!");
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
 

Slava78

Элитный участник
ну вот так проще всего
PHP:
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   datetime trial=D'31.01.2020';
   if(TimeCurrent()>trial)
     {
      Alert("Nicht schießen!");
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
Большое спасибо
 
Верх