[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 241

 

Здравствуйте уважаемые форумчане!!!

Если не трудно подскажите.

Есть такой индикатор

signalTable.mq4

расположен
https://www.mql5.com/ru/code/8179
Решил как то на досуге под себя его переделать........При компиляции постоянно выдаётся ошибка
'\end_of_program' - unbalanced left parenthesis	C:\Program Files\MetaTrader - Alpari\experts\indicators\signalTable_v1.mq4 (114, 1)

114 строка - это понятно, НО ПЕРВОЕ ЗНАКОМЕСТО как то не очень

Может кто вразумительное подскажет.......

Сам код ниже. (решил заменить SAR на MACD)

//----
#property indicator_chart_window
extern int scaleX=20,
           scaleY=20,
           offsetX=35,
           offsetY=20,
           fontSize=20,
           corner=2,
           symbolCodeBuy=67,
           symbolCodeSell=68,
           symbolCodeNoSignal=73;
extern color signalBuyColor=Gold,
             signalSellColor=MediumPurple,
             noSignalColor=WhiteSmoke,
             textColor=Gold;
int period[]={1,5,15,30,60,240,1440,10080,43200};
string periodString[]={"M1","M5","M15","M30","H1","H4","D1","W1","MN1"},
       // создаем еще один массив с названиями индикаторов
       signalNameString[]={"MA","WPR","MACD"};
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   // таблица сигналов
   for(int x=0;x<9;x++)
      for(int y=0;y<3;y++)
        {
         ObjectCreate("signal"+x+y,OBJ_LABEL,0,0,0,0,0);
         // изменяем угол привязки
         ObjectSet("signal"+x+y,OBJPROP_CORNER,corner);
         ObjectSet("signal"+x+y,OBJPROP_XDISTANCE,x*scaleX+offsetX);
         ObjectSet("signal"+x+y,OBJPROP_YDISTANCE,y*scaleY+20);
         ObjectSetText("signal"+x+y,CharToStr(symbolCodeNoSignal),
                       fontSize,"Wingdings",noSignalColor);
        }
   // названия таймфреймов    
   for(x=0;x<9;x++)
     {
      ObjectCreate("textPeriod"+x,OBJ_LABEL,0,0,0,0,0);
      // изменяем угол привязки      
      ObjectSet("textPeriod"+x,OBJPROP_CORNER,corner);
      ObjectSet("textPeriod"+x,OBJPROP_XDISTANCE,x*scaleX+offsetX);
      ObjectSet("textPeriod"+x,OBJPROP_YDISTANCE,offsetY-10);
      ObjectSetText("textPeriod"+x,periodString[x],8,"Tahoma",textColor);
     }
   // названия индикаторов 
   for(y=0;y<3;y++)
     {
      ObjectCreate("textSignal"+y,OBJ_LABEL,0,0,0,0,0);
      // изменяем угол привязки      
      ObjectSet("textSignal"+y,OBJPROP_CORNER,corner);
      ObjectSet("textSignal"+y,OBJPROP_XDISTANCE,offsetX-25);
      ObjectSet("textSignal"+y,OBJPROP_YDISTANCE,y*(scaleY)+offsetY+8);
      ObjectSetText("textSignal"+y,signalNameString[y],8,"Tahoma",textColor);
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   for(int x=0;x<9;x++)
     {
      // сигнал на покупку
      if(iMA(Symbol(),period[x],13,0,0,0,0)>iMA(Symbol(),period[x],24,0,0,0,0))
         ObjectSetText("signal"+x+"0",CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor);
      // сигнал на продажу   
      else if(iMA(Symbol(),period[x],13,0,0,0,0)<iMA(Symbol(),period[x],24,0,0,0,0))
          ObjectSetText("signal"+x+"0",CharToStr(symbolCodeSell),fontSize,"Wingdings",signalSellColor);
     }
   for(x=0;x<9;x++)
     {
      // сигнал на покупку
      if(MathAbs(iWPR(Symbol(),period[x],13,0))<20.0)
         ObjectSetText("signal"+x+"1",CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor);
      // сигнал на продажу   
      else if(MathAbs(iWPR(Symbol(),period[x],13,0))>80.0)
            ObjectSetText("signal"+x+"1",CharToStr(symbolCodeSell),fontSize,"Wingdings",signalSellColor);
      // нет сигнала
      else
           ObjectSetText("signal"+x+"1",CharToStr(symbolCodeNoSignal),fontSize,"Wingdings",noSignalColor);
     }
   for(x=0;x<9;x++)
     {
      // сигнал на покупку
      if(iMACD(Symbol(),period[x],(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<Close[0])
         ObjectSetText("signal"+x+"2",CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor);
      // сигнал на продажу   
      else if(iMACD(Symbol(),period[x],(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>Close[0])
         ObjectSetText("signal"+x+"2",CharToStr(symbolCodeSell),fontSize,"Wingdings",signalSellColor);
     }
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   // при удалении нашего индикатора нужно удалить все объекты,
   // которые мы уже создали
   ObjectsDeleteAll();
   return(0);
  }
//+------------------------------------------------------------------+
 
dmmikl86 >>:

подскажите как присваивать имена для буферов в пользовательских индикаторах?


SetIndexLabel(int index, string label);

 
igrok2008 >>:

Здравствуйте уважаемые форумчане!!!

Если не трудно подскажите.

Есть такой индикатор

расположен Решил как то на досуге под себя его переделать........При компиляции постоянно выдаётся ошибка

114 строка - это понятно, НО ПЕРВОЕ ЗНАКОМЕСТО как то не очень

Может кто вразумительное подскажет.......

Сам код ниже. (решил заменить SAR на MACD)

      if(iMACD(Symbol(),period[x],(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<Close[0]))
         ObjectSetText("signal"+x+"2",CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor);
      // сигнал на продажу   
      else if(iMACD(Symbol(),period[x],(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>Close[0]))
         ObjectSetText("signal"+x+"2",CharToStr(symbolCodeSell),fontSize,"Wingdings",signalSellColor);

в первой и третьей строке обратите внимание на последнюю закрывающую скобку - их у вас и не хватает

 

Большое спасибо alsu, но 114 строка это

      if(MathAbs(iWPR(Symbol(),period[x],13,0))<20.0)
         ObjectSetText("signal"+x+"1",CharToStr(symbolCodeBuy),fontSize,"Wingdings",signalBuyColor);
      // сигнал на продажу   
      else if(MathAbs(iWPR(Symbol(),period[x],13,0))>80.0)
            ObjectSetText("signal"+x+"1",CharToStr(symbolCodeSell),fontSize,"Wingdings",signalSellColor);
      // нет сигнала
      else                                      это114 строка
           ObjectSetText("signal"+x+"1",CharToStr(symbolCodeNoSignal),fontSize,"Wingdings",noSignalColor);
так вот при компиляции ссылка идё именно на эту строку, вот в чём загвоздка.........................................
 

Приветствую всех!

Голову сушил долго, решил обратитс за помощью к знатокам.

Тем более вопрос у меня пустяковый, как я поглядел.

Думаю справитесь. :)

Дело вот в чем.

Есть exel-файл. В ячейках данные. (буду пытаться выражаться как можно грамотнее).

kolo/6895.jpg

kolo/6896.jpg

kolo/6897.jpg

kolo/7353.jpg

kolo/8899.jpg

....

и т.д.

Как можно придумать при помощи Найти/Заменить что бы получилось:

kolo/6895.jpg,kolo/6895.jpg,kolo/6895.jpg

kolo/6896.jpg,kolo/6896.jpg,kolo/6896.jpg

kolo/7353.jpg,kolo/7353.jpg,kolo/7353.jpg

kolo/8898.jpg,kolo/8898.jpg,kolo/8898.jpg

kolo/6899.jpg,kolo/6899.jpg,kolo/6899.jpg

писанины-то НЕМЕРЯНО..... :)

Спасибо огромное за дельный совет!


 
Sokil >>:

Приветствую всех!

Голову сушил долго, решил обратитс за помощью к знатокам.

Тем более вопрос у меня пустяковый, как я поглядел.

Думаю справитесь. :)

Дело вот в чем.

Есть exel-файл. В ячейках данные. (буду пытаться выражаться как можно грамотнее).

kolo/6895.jpg

kolo/6896.jpg

kolo/6897.jpg

kolo/7353.jpg

kolo/8899.jpg

....

и т.д.

Как можно придумать при помощи Найти/Заменить что бы получилось:

kolo/6895.jpg,kolo/6895.jpg,kolo/6895.jpg

kolo/6896.jpg,kolo/6896.jpg,kolo/6896.jpg

kolo/7353.jpg,kolo/7353.jpg,kolo/7353.jpg

kolo/8898.jpg,kolo/8898.jpg,kolo/8898.jpg

kolo/6899.jpg,kolo/6899.jpg,kolo/6899.jpg

писанины-то НЕМЕРЯНО..... :)

Спасибо огромное за дельный совет!



Ну насчет найти-заменить не обещаю, насколько я понял нужно продублировать содержимое три раза и через запятую, проще всего это сделать формулой к примеру =RC[-1]&","&RC[-1]&","&RC[-1]

Затем можно скопировать ячейки и вставить содержимое как значения.

 
Спасибо, это уже мысль!
 

А если усложнить задание?

Есть: kolo/6895.jpg

Сделать: kolo/6895.jpg,kolo/6895.jpg,kolo/6895_.jpg

=RC[-1]&","&RC[-1]&","&RC[-1] тут уже не поможет, насколько я понимаю

 
По некоторым инструментам, например EUR/USD котировки идут с 5 знаками после запятой. А у меня в переменных окружения значения содержат только 4 знака. Как получить полное значение переменных окружения?
 
Sokil >>:

А если усложнить задание?

Есть: kolo/6895.jpg

Сделать: kolo/6895.jpg,kolo/6895.jpg,kolo/6895_.jpg

=RC[-1]&","&RC[-1]&","&RC[-1] тут уже не поможет, насколько я понимаю


А в чем усложнение?

Как минимум есть два варианта, первый заменой убрать ".jpg" а потом его в формуле добавлять, второй в более длинной формуле типа =RC[-1]&","&RC[-1]&","&ЛЕВСИМВ(RC[-1]; ДЛСТР(RC[-1])-4)&"_"&ПРАВСИМВ(RC[-1];4), если нужно можно искать разделитель через найти, либо вообще через VBA делается элементарный цикл.

Для каждой задачи найдется решение, только вот задача должна быть точно поставлена.

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