[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 105

 

Привет всем,

Сделал индюк,чертает две линии под 45 градуса.Когда пересекается хочу поставить горизонталная.

Так как вычислить пересечения? 

Чертает с Лоу/Хай предного дня,через одну точку.

Чтоб получилас такая линия чертаю-с точки до начала дня и в другую сторону с точки луч .

Как написат код для самое пересчния ? Пока такого не делал. Картинка:

 

Вот начну искат как цена двигается-толко надо увидет ее-первая ест,но вторая 0:
price1 = NormalizeDouble(ObjectGet("Dn",OBJPROP_PRICE1),Digits);
price2 = NormalizeDouble(ObjectGet("Dn",OBJPROP_PRICE2),Digits);
Time_start - ето синяя вертикалная линия
double b3=iBarShift(Symbol(),0,Time_start);      
double b4=iBarShift(Symbol(),0,TimeCurrent());
ну и цикл поиска
for(int j = b4;j <= b3;j++){
Ну що искат,если я не вижу то,что ищу?
Застрял.
 
bond007:
....и как они это могут узнать??)
просто не понятно....одни говорят что торговать можно при помощи советников,другие что нельзя-а если к примеру ДЦ разрешает использовать советник то тогда как??меня интересует код советника они узнают??

код советника дц увидеть ни как не сможет.... они лишь видят интенсивность расстановки ордеров и коменты в ордерах ... есть некоторые дц в которых работа  экспертов в терминале запрещена ... то есть когды вы приклепляете советника к чарту он просто не торгует ... запрещено настройками сервера дц будет давать ошибку xxx. или что то типа 2013.01.18 22:45:03    '30xxxxx': trading by experts is prohibited



П.С. почему все так тресутся за код ?

 
hoz:

Благодарю, теперь видать и аппетит появится :)
Рад за Вас, и постепенно от простого к сложному запрограммируете своё понимание, что и нужно для написания любой программы. Успехов!
 
mario065:

Привет всем,

Сделал индюк,чертает две линии под 45 градуса.Когда пересекается хочу поставить горизонталная.

Так как вычислить пересечения? 

Чертает с Лоу/Хай предного дня,через одну точку.

Чтоб получилас такая линия чертаю-с точки до начала дня и в другую сторону с точки луч .

Как написат код для самое пересчния ? Пока такого не делал. Картинка:

 

 

В помощь.
 
drknn:

Что Вы имеете ввиду под термином "логарифмический график"? Приведите пожалуйста пример. Мне, например, ранее доводилось сталкиваться только с понятием логарифмической шкалы графика. В терминале МТ4 эта шкала уже реализована.
Я имею ввиду именно логарифмическую шкалу.  Как ее найти в МТ? Столько лет пользуюсь и не знаю, что там уже есть.
 
mario065:

Привет всем,

Сделал индюк,чертает две линии под 45 градуса.Когда пересекается хочу поставить горизонталная.

Так как вычислить пересечения? 

Чертает с Лоу/Хай предного дня,через одну точку.

Чтоб получилас такая линия чертаю-с точки до начала дня и в другую сторону с точки луч .

Как написат код для самое пересчния ? Пока такого не делал. Картинка:



У Игоря Кима:

Функция CrossPointOfLines()

 

Алексей,Артем спосиба Вам.

Счас разучу функции Игоря Кима. 

 

Так у меня нет две точки,ест толко одна.

Вот исам сорс:

//+------------------------------------------------------------------+
//|                                                     TRIANGLE.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2013,mario"
#property link      ""

#property indicator_chart_window
extern string   TimeStart  = "Час за начало";
extern datetime Time_start = D'17.01.2013';
extern int      Days       = 1;
bool            New_Bar    = false;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init(){return(0);}
int deinit(){
   ObjectsDeleteAll(0,OBJ_TRENDBYANGLE);
   ObjectsDeleteAll(0,OBJ_VLINE);
   Comment("");return(0);}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  { 
   datetime New_Time,time_next,time_barh,time_barl;
   time_next = Time_start + Days*86400;
   datetime new_day = iTime(Symbol(),PERIOD_D1,0);
//+------------------------------------------------------------------+
   if(New_Time != new_day)                        
           {
           New_Time = new_day;                         
           New_Bar  = true;
           }
//+------------------------------------------------------------------+ 
//Шифтвам 
   double b1=iBarShift(Symbol(),0,Time_start);      
   double b2=iBarShift(Symbol(),0,time_next);
   double min = 3,max = 0;
   for(int i = b2;i <= b1;i++){
      if(iHigh(Symbol(),0,i)>max){ max=iHigh(Symbol(),0,i);time_barh = Time[i];}
      if(iLow (Symbol(),0,i)<min){ min=iLow (Symbol(),0,i);time_barl = Time[i];}
      }
   if(New_Bar == true){ 
      ObjectsDeleteAll(0,OBJ_TRENDBYANGLE);
      ObjectsDeleteAll(0,OBJ_VLINE);
      DrawLine("Start",0,Time_start,0,Time_start,0,0,0,2,Aqua,false);
      DrawLine("Up",3,time_barh,max,0,0,315.0,0,2,DeepSkyBlue,true);
      DrawLine("Up1",3,time_barh,max,Time_start,0,315.0,0,2,DeepSkyBlue,false);
      DrawLine("Dn",3,time_barl,min,0,0,45.0,0,2,Orange,true);
      DrawLine("Dn1",3,time_barl,min,Time_start,0,45.0,0,2,Orange,false);
    }
//+------------------------------------------------------------------+
   double spead = MarketInfo(Symbol(),MODE_SPREAD);
//+------------------------------------------------------------------+ 
   Comment("\nВреме на брокера: ",TimeToStr(TimeCurrent(),TIME_SECONDS),", Локално време: "+TimeToStr(TimeLocal(),TIME_SECONDS),
           "\nТекущ спред: ",DoubleToStr(spead/10,1),
           "\n min:        ",DoubleToStr(min,Digits),
           "\n max:       ",DoubleToStr(max,Digits)
           );
   return(0);
  }
//+------------------------------------------------------------------+
void DrawLine(string name,int lines,datetime time1,double value,datetime time2,double value1,double grd,int style,int wid,color col,bool ray)
{
   ObjectCreate(name,lines,0,time1,value,time2,value1);
   ObjectSet(name,OBJPROP_ANGLE,grd);
   ObjectSet(name,OBJPROP_COLOR,col);
   ObjectSet(name,OBJPROP_STYLE,style);
   ObjectSet(name,OBJPROP_WIDTH,wid);
   ObjectSet(name,OBJPROP_RAY,ray);
}
//+------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 12.10.2007                                                     |
//|  Описание : Вычисляет координаты точки пересечения двух прямых.            |
//|             Каждая прямая задаётся парой координат своих точек.            |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    x - массив абсцисс              x[0], x[1] - первая прямая              |
//|                                    x[2], x[3] - вторая прямая              |
//|    y - массив ординат              y[0], y[1] - первая прямая              |
//|                                    y[0], y[1] - вторая прямая              |
//|    t - массив искомых координат    t[0]       - абсцисса                   |
//|                                    t[1]       - ордината                   |
//+----------------------------------------------------------------------------+
void CrossPointOfLines(double& x[], double& y[], double& t[]) {
  double z=(y[3]-y[2])*(x[1]-x[0])-(y[1]-y[0])*(x[3]-x[2]);
  ArrayResize(t, 2);
  ArrayInitialize(t, 0.0);

  if (z==0) Print("CrossPointOfLines(): Не удалось найти точку пересечения!");
  else {
    double xy1=x[1]*y[0]-x[0]*y[1];
    double xy2=x[3]*y[2]-x[2]*y[3];
    t[0]=NormalizeDouble((xy1*(x[3]-x[2])-xy2*(x[1]-x[0]))/z, 0);
    t[1]=(xy1*(y[3]-y[2])-xy2*(y[1]-y[0]))/z;
  }
}

 Сам код очен простой.Но ест толко одна точка.

 

Кто знает, почему индикатор DailyPivotPoints в тестере в визуальном режиме на всех датах показывает только сегодняшные данные?

И если возможно, что нужно добавить в него, чтобы показывал на истории, что было? Спасибо!

 
lenalebedeva:
Я имею ввиду именно логарифмическую шкалу.  Как ее найти в МТ? Столько лет пользуюсь и не знаю, что там уже есть.

Посмотрите

P.S.

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

Ранее, когда небыло компьютеров, торговцы использовали миллиметровку и наносили биржевые цены на неё чтоб предугадать тенденции и разворотные точки. Выстроенные таким образом графики на бумаге имели 2 шкалы - шкалу цен и шкалу времени. Это были две линейные шкалы. Представляяете себе какие размеры должен был бы иметь лист миллиметровой бумаги, способный вместить в себя, скажем, все пятнадцатиминутные свечки за весь прошлый год? Наверняка он был бы размером со стену комнаты (если ни больше). Поэтому при прокрутке графика на экране можете себе представить, такую модель: свечной график цен нарисован на стене. Там же есть прямоугольная (например красная) рамка - это Ваш монитор. Перемещение по графику есть ни что иное, как перемещение этого красного прямоугольника вдоль тренда. Но тогда Вы скажете, что обе шкалы в мониторе - линейные. Это верно, но лишь отчасти - обратите внимание, что при прокрутке графика свечка, которая была большая (визуально воспринималась как большая)  после небольшого сдвига становится меньше в размерах, хотя если промерять расстояние между её экстремумами, то количество пунктов останется прежнее.

Посмотрите, вот 2 скриншота одного и того же графика. Первый скрин - это просто снимок экрана. Второй - это снимок того же самого экрана, но после проворота колёсика мыши на 1 деление - график сместился в прошлое на несколько свеч. Возьмите лист бумаги, приложите его к первому скриншоту и отметьте карандашиком по краю листика цены хай и лоу той свечки, что помечена красным. Затем переместите  отмеченные риски на эту же свечку второго скриншота. Вы поймте о чём идёт речь и что такое сдвиг по логарифмической шкале (в чём тут суть неравномерности использования шкал).

 

 

А зачем Вам понадобилось вникать в нюансы логарифмических шкал? Что Вы тут надеялись найти в них?

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