Новые сообщения · Участники · Правила форума · Поиск · RSS · Вход · Регистрация ·

Страница 14 из 19«1212131415161819»
Форум трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » Доработка советника.
Доработка советника.

Иван1946Дата: Четверг, 19.11.2015, 19:58 | Сообщение # 131
Трейдер - Майор
Группа: Пользователи
Сообщений: 81
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

т.е. больше ничего придумать нельзя?

 
Сообщениет.е. больше ничего придумать нельзя?

Автор - Иван1946
Дата добавления - 19.11.2015 в 19:58

expforexДата: Четверг, 19.11.2015, 20:16 | Сообщение # 132
Главный Администартор
Группа: Администраторы
Сообщений: 9037
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

если честно я не понимаю в чем проблема попробовал у себя - да оно движется не одновременно, но спустя пол секунды линия движется чем это не устраивает? может ВЫ бы подробно объяснили для чего а я бы подумал как



Программирование на заказ || Наши Разработки

 
Сообщениеесли честно я не понимаю в чем проблема попробовал у себя - да оно движется не одновременно, но спустя пол секунды линия движется чем это не устраивает? может ВЫ бы подробно объяснили для чего а я бы подумал как

Автор - expforex
Дата добавления - 19.11.2015 в 20:16

Иван1946Дата: Пятница, 20.11.2015, 09:24 | Сообщение # 133
Трейдер - Майор
Группа: Пользователи
Сообщений: 81
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Цитата expforex ()
если честно я не понимаю в чем проблема попробовал у себя - да оно движется не одновременно, но спустя пол секунды линия движется чем это не устраивает? может ВЫ бы подробно объяснили для чего а я бы подумал как
Доброе утро! Это нужно при откате. Что бы не терять пункты, нужно двигать линию вплотную за текущей ценой, не пересекая её. А так не очень удобно. Но если больше ничего не сделаете, всё равно Большое Спасибо!

 
Сообщение
Цитата expforex ()
если честно я не понимаю в чем проблема попробовал у себя - да оно движется не одновременно, но спустя пол секунды линия движется чем это не устраивает? может ВЫ бы подробно объяснили для чего а я бы подумал как
Доброе утро! Это нужно при откате. Что бы не терять пункты, нужно двигать линию вплотную за текущей ценой, не пересекая её. А так не очень удобно. Но если больше ничего не сделаете, всё равно Большое Спасибо!

Автор - Иван1946
Дата добавления - 20.11.2015 в 09:24

expforexДата: Пятница, 20.11.2015, 10:47 | Сообщение # 134
Главный Администартор
Группа: Администраторы
Сообщений: 9037
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

Иван1946, я имею ввиду у Вас советник который реагирует на линию или как?



Программирование на заказ || Наши Разработки

 
СообщениеИван1946, я имею ввиду у Вас советник который реагирует на линию или как?

Автор - expforex
Дата добавления - 20.11.2015 в 10:47

Иван1946Дата: Пятница, 20.11.2015, 10:57 | Сообщение # 135
Трейдер - Майор
Группа: Пользователи
Сообщений: 81
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Я поменял линии отступа и основные линии местами (и алерты тоже) и проблема вроде бы решилась.

 
СообщениеЯ поменял линии отступа и основные линии местами (и алерты тоже) и проблема вроде бы решилась.

Автор - Иван1946
Дата добавления - 20.11.2015 в 10:57

expforexДата: Пятница, 20.11.2015, 11:15 | Сообщение # 136
Главный Администартор
Группа: Администраторы
Сообщений: 9037
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

Иван1946, алертов на доп линии нет.



Программирование на заказ || Наши Разработки

 
СообщениеИван1946, алертов на доп линии нет.

Автор - expforex
Дата добавления - 20.11.2015 в 11:15

expforexДата: Пятница, 20.11.2015, 11:16 | Сообщение # 137
Главный Администартор
Группа: Администраторы
Сообщений: 9037
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

попробуйте еще в конце старта поставить ChartRedraw();



Программирование на заказ || Наши Разработки

 
Сообщениепопробуйте еще в конце старта поставить ChartRedraw();

Автор - expforex
Дата добавления - 20.11.2015 в 11:16

Иван1946Дата: Пятница, 20.11.2015, 13:12 | Сообщение # 138
Трейдер - Майор
Группа: Пользователи
Сообщений: 81
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Цитата expforex ()
попробуйте еще в конце старта поставить ChartRedraw();
Не меняется. Я сделал так.//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, www.trading-go.ru Project."
#property link      "http://www.trading-go.ru"
#property version   "2.00"
#property description "Индикатор отрисовывает три уровня  верхний , нижний, и временной."
#property description "Уровни редактируются на графике в ручном режиме."
#property description "В случае пересечения уровней ценой, терминал выводит сообщение на экран, и издает звуковой сигнал (Alert)."

#property description "Indicator draws three levels of upper, lower, and the time."
#property description "Levels are edited on the chart manually."
#property description "In the case of the level-crossing costs, terminal displays a message on screen and beep (Alert)."
//====================================================================//
//====================================================================// 
#property strict
#property indicator_chart_window

enum fn{Off,On};
extern fn    LinesUR=true;  // Включение горизонтальных уровней
extern fn    LinesTM=false;  // Включение уровня времени
extern int    Otstup=0;
extern int   widch=1;  // Ширина линий
extern color LineUPOtstup=clrYellowGreen;
extern color LineUP=clrYellowGreen;  // Цвет верхнего уровня
extern color LineDWOtstup=BurlyWood;
extern color LineDW=BurlyWood;  // Цвет Нижнего  уровня
extern color LineTM  = clrBlue; // Цвет уровня времени
extern int   intervalSEK=3600;  // Интервал звукового сигнала в секундах
datetime tim=0; string typ="";
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   Comment("");
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void deinit()
  {
   ObjectDelete("upOtstup");
   ObjectDelete("dwOtstup");
   ObjectDelete("up");
   ObjectDelete("dw");
   ObjectDelete("tm");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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(LinesUR==true)
     {
     if(ObjectFind("upOtstup")==-1)
        {
         ObjectCreate("upOtstup",OBJ_HLINE,0,0,Close[1]+NormalizeDouble(300*Point,Digits)+Otstup*Point);
         ObjectSet("upOtstup",OBJPROP_COLOR,LineUP);
         ObjectSet("upOtstup",OBJPROP_STYLE,STYLE_DOT);
        }
      if(ObjectFind("dwOtstup")==-1)
        {
         ObjectCreate("dwOtstup",OBJ_HLINE,0,0,Close[1]-NormalizeDouble(300*Point,Digits)-Otstup*Point);
         ObjectSet("dwOtstup",OBJPROP_COLOR,LineDW);
         ObjectSet("dwOtstup",OBJPROP_STYLE,STYLE_DOT);
        }
      if(ObjectFind("up")==-1)
        {
         ObjectCreate("up",OBJ_HLINE,0,0,Close[1]+NormalizeDouble(300*Point,Digits));         
         ObjectSet("up",OBJPROP_COLOR,LineUP);
         ObjectSet("up",OBJPROP_STYLE,STYLE_DOT);
        }
      if(ObjectFind("dw")==-1)
        {
         ObjectCreate("dw",OBJ_HLINE,0,0,Close[1]-NormalizeDouble(300*Point,Digits));
         ObjectSet("dw",OBJPROP_COLOR,LineDW);
         ObjectSet("dw",OBJPROP_STYLE,STYLE_DOT);
        }

      if(ObjectFind("upOtstup")!=-1)
        {
         ObjectSet("upOtstup",OBJPROP_PRICE1,ObjectGet("up",OBJPROP_PRICE1)+Otstup*Point);
        }
      if(ObjectFind("dwOtstup")!=-1)
        {
         ObjectSet("dwOtstup",OBJPROP_PRICE1,ObjectGet("dw",OBJPROP_PRICE1)-Otstup*Point);
        }

     }
   if(LinesTM==true)
     {
      if(ObjectFind("tm")==-1)
        {
         ObjectCreate("tm",OBJ_VLINE,0,Time[0]+Period()*60*5,0);
         ObjectSet("tm",OBJPROP_WIDTH,widch);
         ObjectSet("tm",OBJPROP_COLOR,LineTM);
        }
     }
   if(Ask>ObjectGet("upOtstup",OBJPROP_PRICE1) && ObjectFind("up")==0)
     {
      typ=StringConcatenate(Symbol(),"   ","Цена выше заданного уровня !!! ",DoubleToStr(Ask,_Digits));
      alert(typ);
     }
   if(Bid<ObjectGet("dwOtstup",OBJPROP_PRICE1) && ObjectFind("dw")==0)
     {
      typ=StringConcatenate(Symbol(),"   ","Цена ниже заданного уровня !!! ",DoubleToStr(Bid,_Digits));
      alert(typ);
     }
   if(TimeCurrent()>=ObjectGet("tm",OBJPROP_TIME1) && ObjectFind("tm")==0)
     {
      typ=StringConcatenate(Symbol(),"   ","Текущее время больше заданного !!!");
      alert(typ);
     }
   return 0;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void alert(string txt)
  {
   if(TimeCurrent()>(tim+intervalSEK))
     {
      tim=TimeCurrent();
      Alert(txt);
     }
  }
//+------------------------------------------------------------------+

 
Сообщение
Цитата expforex ()
попробуйте еще в конце старта поставить ChartRedraw();
Не меняется. Я сделал так.//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, www.trading-go.ru Project."
#property link      "http://www.trading-go.ru"
#property version   "2.00"
#property description "Индикатор отрисовывает три уровня  верхний , нижний, и временной."
#property description "Уровни редактируются на графике в ручном режиме."
#property description "В случае пересечения уровней ценой, терминал выводит сообщение на экран, и издает звуковой сигнал (Alert)."

#property description "Indicator draws three levels of upper, lower, and the time."
#property description "Levels are edited on the chart manually."
#property description "In the case of the level-crossing costs, terminal displays a message on screen and beep (Alert)."
//====================================================================//
//====================================================================// 
#property strict
#property indicator_chart_window

enum fn{Off,On};
extern fn    LinesUR=true;  // Включение горизонтальных уровней
extern fn    LinesTM=false;  // Включение уровня времени
extern int    Otstup=0;
extern int   widch=1;  // Ширина линий
extern color LineUPOtstup=clrYellowGreen;
extern color LineUP=clrYellowGreen;  // Цвет верхнего уровня
extern color LineDWOtstup=BurlyWood;
extern color LineDW=BurlyWood;  // Цвет Нижнего  уровня
extern color LineTM  = clrBlue; // Цвет уровня времени
extern int   intervalSEK=3600;  // Интервал звукового сигнала в секундах
datetime tim=0; string typ="";
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   Comment("");
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void deinit()
  {
   ObjectDelete("upOtstup");
   ObjectDelete("dwOtstup");
   ObjectDelete("up");
   ObjectDelete("dw");
   ObjectDelete("tm");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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(LinesUR==true)
     {
     if(ObjectFind("upOtstup")==-1)
        {
         ObjectCreate("upOtstup",OBJ_HLINE,0,0,Close[1]+NormalizeDouble(300*Point,Digits)+Otstup*Point);
         ObjectSet("upOtstup",OBJPROP_COLOR,LineUP);
         ObjectSet("upOtstup",OBJPROP_STYLE,STYLE_DOT);
        }
      if(ObjectFind("dwOtstup")==-1)
        {
         ObjectCreate("dwOtstup",OBJ_HLINE,0,0,Close[1]-NormalizeDouble(300*Point,Digits)-Otstup*Point);
         ObjectSet("dwOtstup",OBJPROP_COLOR,LineDW);
         ObjectSet("dwOtstup",OBJPROP_STYLE,STYLE_DOT);
        }
      if(ObjectFind("up")==-1)
        {
         ObjectCreate("up",OBJ_HLINE,0,0,Close[1]+NormalizeDouble(300*Point,Digits));         
         ObjectSet("up",OBJPROP_COLOR,LineUP);
         ObjectSet("up",OBJPROP_STYLE,STYLE_DOT);
        }
      if(ObjectFind("dw")==-1)
        {
         ObjectCreate("dw",OBJ_HLINE,0,0,Close[1]-NormalizeDouble(300*Point,Digits));
         ObjectSet("dw",OBJPROP_COLOR,LineDW);
         ObjectSet("dw",OBJPROP_STYLE,STYLE_DOT);
        }

      if(ObjectFind("upOtstup")!=-1)
        {
         ObjectSet("upOtstup",OBJPROP_PRICE1,ObjectGet("up",OBJPROP_PRICE1)+Otstup*Point);
        }
      if(ObjectFind("dwOtstup")!=-1)
        {
         ObjectSet("dwOtstup",OBJPROP_PRICE1,ObjectGet("dw",OBJPROP_PRICE1)-Otstup*Point);
        }

     }
   if(LinesTM==true)
     {
      if(ObjectFind("tm")==-1)
        {
         ObjectCreate("tm",OBJ_VLINE,0,Time[0]+Period()*60*5,0);
         ObjectSet("tm",OBJPROP_WIDTH,widch);
         ObjectSet("tm",OBJPROP_COLOR,LineTM);
        }
     }
   if(Ask>ObjectGet("upOtstup",OBJPROP_PRICE1) && ObjectFind("up")==0)
     {
      typ=StringConcatenate(Symbol(),"   ","Цена выше заданного уровня !!! ",DoubleToStr(Ask,_Digits));
      alert(typ);
     }
   if(Bid<ObjectGet("dwOtstup",OBJPROP_PRICE1) && ObjectFind("dw")==0)
     {
      typ=StringConcatenate(Symbol(),"   ","Цена ниже заданного уровня !!! ",DoubleToStr(Bid,_Digits));
      alert(typ);
     }
   if(TimeCurrent()>=ObjectGet("tm",OBJPROP_TIME1) && ObjectFind("tm")==0)
     {
      typ=StringConcatenate(Symbol(),"   ","Текущее время больше заданного !!!");
      alert(typ);
     }
   return 0;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void alert(string txt)
  {
   if(TimeCurrent()>(tim+intervalSEK))
     {
      tim=TimeCurrent();
      Alert(txt);
     }
  }
//+------------------------------------------------------------------+

Автор - Иван1946
Дата добавления - 20.11.2015 в 13:12

expforexДата: Пятница, 20.11.2015, 13:58 | Сообщение # 139
Главный Администартор
Группа: Администраторы
Сообщений: 9037
Награды: 29
Статус: Offline


[Бонусы за сообщения ]

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

Код
if(ObjectFind("upOtstup")!=-1)
        {
         ObjectSet("upOtstup",OBJPROP_PRICE1,ObjectGet("up",OBJPROP_PRICE1)+Otstup*Point);
        }
      if(ObjectFind("dwOtstup")!=-1)
        {
         ObjectSet("dwOtstup",OBJPROP_PRICE1,ObjectGet("dw",OBJPROP_PRICE1)-Otstup*Point);
        }

и он остался на прежнем месте



Программирование на заказ || Наши Разработки

 
Сообщениеда но тут от перемены мест слагаемых сумма не меняется.
тут главный блок это:
 
Код
if(ObjectFind("upOtstup")!=-1)
        {
         ObjectSet("upOtstup",OBJPROP_PRICE1,ObjectGet("up",OBJPROP_PRICE1)+Otstup*Point);
        }
      if(ObjectFind("dwOtstup")!=-1)
        {
         ObjectSet("dwOtstup",OBJPROP_PRICE1,ObjectGet("dw",OBJPROP_PRICE1)-Otstup*Point);
        }

и он остался на прежнем месте

Автор - expforex
Дата добавления - 20.11.2015 в 13:58

Иван1946Дата: Четверг, 03.12.2015, 08:13 | Сообщение # 140
Трейдер - Майор
Группа: Пользователи
Сообщений: 81
Награды: 0
Статус: Offline


[Бонусы за сообщения ]

Здравствуйте! Автолот считает риск от свободной маржи, а не от баланса. Подскажите пожалуйста что изменить, что бы считал от баланса. Спасибо!

//+----------------------------------------------------------------------------+
double lastlot;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

  
  double GetSizeLotStopLoss(double StopLosssd=1) //Функция возвращает значение лотов, 
  {
   string Autor=" Автор функции для шаблона : www.expforex.com";
   string Valdepo=AccountCurrency();
//если включен ММ то значение лотов, 
   double MinLots;
   int lotdig;
   if(MarketInfo(Symbol(),MODE_LOTSTEP)==0.01)lotdig=2; else lotdig=1;
   double Free=AccountFreeMargin();
   double LotVal=MarketInfo(Symbol(),MODE_TICKVALUE);//стоимость 1 пункта для 1 лота
   double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT);
   double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT);
   double Step=MarketInfo(Symbol(),MODE_LOTSTEP);
   double Lot;if(LotBalancePcnt!=0 && StopLosssd!=0)Lot =MathFloor((Free*LotBalancePcnt/100)/(StopLosssd*LotVal)/Step)*Step;
   if(LotBalancePcnt==0 || StopLosssd==0)Lot=Lots;
   MinLots=MarketInfo(Symbol(),MODE_MINLOT);

   if(Lot<MinLots) Lot=MinLots;

   return(NormalizeDouble(Lot,lotdig));
  }

 
СообщениеЗдравствуйте! Автолот считает риск от свободной маржи, а не от баланса. Подскажите пожалуйста что изменить, что бы считал от баланса. Спасибо!

//+----------------------------------------------------------------------------+
double lastlot;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

  
  double GetSizeLotStopLoss(double StopLosssd=1) //Функция возвращает значение лотов, 
  {
   string Autor=" Автор функции для шаблона : www.expforex.com";
   string Valdepo=AccountCurrency();
//если включен ММ то значение лотов, 
   double MinLots;
   int lotdig;
   if(MarketInfo(Symbol(),MODE_LOTSTEP)==0.01)lotdig=2; else lotdig=1;
   double Free=AccountFreeMargin();
   double LotVal=MarketInfo(Symbol(),MODE_TICKVALUE);//стоимость 1 пункта для 1 лота
   double Min_Lot =MarketInfo(Symbol(),MODE_MINLOT);
   double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT);
   double Step=MarketInfo(Symbol(),MODE_LOTSTEP);
   double Lot;if(LotBalancePcnt!=0 && StopLosssd!=0)Lot =MathFloor((Free*LotBalancePcnt/100)/(StopLosssd*LotVal)/Step)*Step;
   if(LotBalancePcnt==0 || StopLosssd==0)Lot=Lots;
   MinLots=MarketInfo(Symbol(),MODE_MINLOT);

   if(Lot<MinLots) Lot=MinLots;

   return(NormalizeDouble(Lot,lotdig));
  }

Автор - Иван1946
Дата добавления - 03.12.2015 в 08:13
Форум трейдеров » Скрипты Советники Индикаторы для Metatrader4/Metatrader5 » MT 4 MQL программирование, помощь. » Доработка советника.
Страница 14 из 19«1212131415161819»
Поиск:


WebMoney Яндекс цитирования.