Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1172

 
всем привет, может у кого то есть .exe файл на metatrader 4? Именно от разработчиков, не привязанный ни к какому дц
 
a.lxrn:
всем привет, может у кого то есть .exe файл на metatrader 4? Именно от разработчиков, не привязанный ни к какому дц

файл не привязан, берите от любого дц метатрейдер.ехе и метаедиторю.ехе и запустите из отдельной папки и настройте счет. На сайте установочника 4ки нет. Только зачем это?

 
Igor Makanu:

бросьте на чарт индикатор фрактал и тестовый советник с этой функцией

и распринтуйте найденные значения  передавая в мою функцию MODE_UPPER и   MODE_LOWER 

Вам нужно запоминать время бара, пи появлении нового бара нумерация будет изменяться, а время открытия бара всегда постоянное

т.е. запустили мой код, запомнили время бара на котором был обнаружен фрактал, затем опять запустили - нашли бар и сравните время этого бара с запомненным - отличается время, значит это новый фрактал

Сделал так:

if((Hour()>=9 && Minute()==15) && Hour()<23)
   {
    Fun_New_Bar();
    if(New_Bar)      
     {
     barfrup_1 = GetLastFractals(1,MODE_UPPER);Alert("barfrup_1 = ",barfrup_1);
     barfrup_2 = GetLastFractals(barfrup_1+1,MODE_UPPER);Alert("barfrup_2 = ",barfrup_2);
     if(barfrup_1==3)
     {
      secondtime1=iTime(NULL,0,barfrup_1);;Alert("secondtime1 = ",secondtime1);
      secondprice1=iHigh(NULL,0,barfrup_1);Alert("secondprice1 = ",secondprice1);
      firsttime1=iTime(NULL,0,barfrup_2);Alert("firsttime1 = ",firsttime1);
      firstprice1=iHigh(NULL,0,barfrup_2);Alert("firstprice1 = ",firstprice1);
      //рисуем трендовую линию High
      ObjectCreate("HighLine",OBJ_TREND,0,firsttime1,firstprice1,secondtime1,secondprice1);
     }}}

Рисует одну линию. Если добавляю:

if(barfrup_1>3)  ObjectsDeleteAll();

то стирает эту линию и всё. Что не так?

 
novichok2018:

Сделал так:

Рисует одну линию. Если добавляю:

то стирает эту линию и всё. Что не так?

В одном из предыдущих сообщений вы сетовали на то, что вам не отвечают. А вспомните пожалуйста сколько раз вас посылали читать документацию и элементарные вопросы сами собой пропадут. Вот этот вопрос опять из серии «курите документацию», курите внимательно не пропуская слов и тем более не пропуская предложений.

Как вы думаете, у вас есть полный тёзка? До того полный, что и год, и день рождения совпадут, не говоря уже о фамилии, имени и отчестве.

ObjectCreate - Графические объекты - Справочник MQL4
ObjectCreate - Графические объекты - Справочник MQL4
  • docs.mql4.com
[in]  Индекс окна, в которое будет добавлен объект. Окно должно существовать (индекс окна должен быть большим или равным 0 и меньшим, чем WindowsTotal()), иначе функция возвратит false. При использовании функции на собственном графике осуществляется прямой доступ к графику (как это всегда было в MQL4) и возврат true означает успешное создание...
 
novichok2018:

Сделал так:

Рисует одну линию. Если добавляю:

то стирает эту линию и всё. Что не так?

читайте первое мое сообщение, имя линии кто будет другое давать? или перемещайте линию

набросал, на скорую руку, что то рисует, не разбирался, попробуйте из этого кода под свою задачу сделать

//+------------------------------------------------------------------+
//|                                                 FractalTrend.mq4 |
//|                                                            IgorM |
//|                              https://www.mql5.com/ru/users/igorm |
//+------------------------------------------------------------------+
#property copyright "IgorM"
#property link      "https://www.mql5.com/ru/users/igorm"
#property version   "1.00"
#property strict
#include <ChartObjects\ChartObjectsLines.mqh>
CChartObjectTrend *UPLine, *DNLine;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   delete UPLine;
   delete DNLine;
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   static datetime bar1 = 0;
   if(bar1 != Time[1])
   {
      delete UPLine;
      delete DNLine;
      int last_fractal = GetLastFractals(0, MODE_UPPER);
      int prev_fractal = GetLastFractals(last_fractal + 1, MODE_UPPER);
      UPLine = DrawTrendLine(MODE_UPPER, "UPLineFractal", prev_fractal, last_fractal, clrRed);
  
      last_fractal = GetLastFractals(0, MODE_LOWER);
      prev_fractal = GetLastFractals(last_fractal + 1, MODE_LOWER);
      DNLine = DrawTrendLine(MODE_LOWER, "DNLineFractal", prev_fractal, last_fractal, clrYellowGreen);
      bar1 = Time[1];
   }

}
//_______________________________________________________________________
CChartObjectTrend* DrawTrendLine(const int MODE, const string obj_name, const int bar2, const int bar1, const color clr)
{
   CChartObjectTrend *obj = new CChartObjectTrend;
   obj.Create(0, obj_name, 0, Time[bar2], MODE == MODE_UPPER ? High[bar2] : Low[bar2], Time[bar1], MODE == MODE_UPPER ? High[bar1] : Low[bar1]);
   obj.Color(clr);
   return obj;
}
//_______________________________________________________________________
int GetLastFractals(int bar, int mode) // bar - с какого бара начинать поиск, mode = MODE_UPPER или MODE_LOWER , результат № бара где найден фрактал
{
   int i = bar;
   while(i < Bars && iFractals(NULL, 0, mode, i) < _Point) i++;
   return(i);
}
//_______________________________________________________________________
 
Alexey Viktorov:

В одном из предыдущих сообщений вы сетовали на то, что вам не отвечают. А вспомните пожалуйста сколько раз вас посылали читать документацию и элементарные вопросы сами собой пропадут. Вот этот вопрос опять из серии «курите документацию», курите внимательно не пропуская слов и тем более не пропуская предложений.

Как вы думаете, у вас есть полный тёзка? До того полный, что и год, и день рождения совпадут, не говоря уже о фамилии, имени и отчестве.

Да я уже с первых ваших "советов" на мои вопросы давно понял, что вы здесь самый крутой, и опускаться до объяснений того, что вам кажется элементарным, для вас "не по чину". Но удержаться от распушения хвоста вы просто не в силах. Где ж еще, как не в ветке для новичков!

 
Igor Makanu:

читайте первое мое сообщение, имя линии кто будет другое давать? или перемещайте линию

набросал, на скорую руку, что то рисует, не разбирался, попробуйте из этого кода под свою задачу сделать

Спасибо! Буду рыться дальше.

 
novichok2018:

Да я уже с первых ваших "советов" на мои вопросы давно понял, что вы здесь самый крутой, и опускаться до объяснений того, что вам кажется элементарным, для вас "не по чину". Но удержаться от распушения хвоста вы просто не в силах. Где ж еще, как не в ветке для новичков!

Слушай-ка ну не до такой-же степени можно быть невежей, что даже этих слов

Уникальное имя объекта.

в документации не увидеть или не понять. Именно это я и пытался донести до вас. Но, видимо бесполезно. В следующий раз изо всех сил постараюсь сказать, всё что о вас думаю, шёпотом. Некоторые новички остаются новичками навечно. Это видимо ваша участь. Пилите Шура, пилите...

 

Господа-товарищи @novichok2018 и @Alexey Viktorov, не надо излишних эмоций! Они пагубно влияют на конструктивность диалога!....

Во завернул )))))))))))

 
Igor Makanu:

читайте первое мое сообщение, имя линии кто будет другое давать? или перемещайте линию

набросал, на скорую руку, что то рисует, не разбирался, попробуйте из этого кода под свою задачу сделать

Сделал так:

Fun_New_Bar();
    if(New_Bar)      
     {
     barfrup_1 = GetLastFractals(1,MODE_UPPER);Alert("barfrup_1 = ",barfrup_1);
     barfrup_2 = GetLastFractals(barfrup_1+1,MODE_UPPER);Alert("barfrup_2 = ",barfrup_2);
     if(barfrup_1==3)
     {
      secondtime1=iTime(NULL,0,barfrup_1);
      secondprice1=iHigh(NULL,0,barfrup_1);
      firsttime1=iTime(NULL,0,barfrup_2);
      firstprice1=iHigh(NULL,0,barfrup_2);
      //рисуем трендовую линию High
      ObjectCreate("HighLine",OBJ_TREND,0,firsttime1,firstprice1,secondtime1,secondprice1);
     }
      if(barfrup_1>3)  ObjectsDeleteAll();
      if(TimeCurrent()>secondtime1)
      {
      datetime Nsecondtime1=iTime(NULL,0,barfrup_1);
      double  Nsecondprice1=iHigh(NULL,0,barfrup_1);
      datetime Nfirsttime1=iTime(NULL,0,barfrup_2);
      double  Nfirstprice1=iHigh(NULL,0,barfrup_2);
      //рисуем новую трендовую линию High
      ObjectCreate("HighLine",OBJ_TREND,0,Nfirsttime1,Nfirstprice1,Nsecondtime1,Nsecondprice1);
      }
      }
 

По-моему, получилось проще. На истории работает нормально. Проверю онлайн на демо, думаю тоже будет работать. С вашего опыта - будет ли работать на реале? 

Причина обращения: