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

 
Summus_Digitus:
Привет всем. Дело серьезное и неотложное и я как говорится весь инет облазил... В общем решил я перейти на МТ4 попользовался им довольно долго, вот уже 3 дня. И тут в доме вырубили свет, включаю позже комп и он как будто первый раз меня видит настройки программ сбились и браузер забыл посещенные сайты! Ниче серьезного подумал я, а тут бы неожиданно захожу в мт, там открыты 4 графика Н4 с набросаннной системой причем вообще показывающий неправильную всегда одну цену сверял со StartFX 2, хочу открыть временной интервал Н1 и Д1 и жду... Час жду, второй а он не по дням а по годам обновлятся собрался, в общем не в какую обновление не случается. "Ну че переустанови и все" - скажите вы, а я вам отвечу "Хрен бы там". "Ну так скачай индикатор какого то програмного обновления с фиг знает какого сайта" - спросите вы, а я вам отвечу "Хрен бы там дважды". Очень хочу продолжить делать деньги и задушить комп помогите с 1 а там посмотрим :-)

Рыдалъ! Честно - читал и скупая слеза катилась по моей трясущейся от хохота морде...
 
VladTch:

Всем доброго дня!

Вопрос мой, видимо, простой, но я перелопатил все статьи, но так и не смог найти на него ответ - как работает оператор return(-1). Куда он передает управление? Вот в этом коде, например:

else return(0);

С нулем в скобках, без скобок - вроде все ясно. А вот (-1)?

Спасибо за ответ. :) 

Специальные функции это обычные функции. Могут быть вызваны, как пользовательские функции. Но есть одна особенность. При системном вызове параметры и возвращаемое значение не передаются.

 
Summus_Digitus:
Привет всем. Дело серьезное и неотложное и я как говорится весь инет облазил... В общем решил я перейти на МТ4 попользовался им довольно долго, вот уже 3 дня. И тут в доме вырубили свет, включаю позже комп и он как будто первый раз меня видит настройки программ сбились и браузер забыл посещенные сайты! Ниче серьезного подумал я, а тут бы неожиданно захожу в мт, там открыты 4 графика Н4 с набросаннной системой причем вообще показывающий неправильную всегда одну цену сверял со StartFX 2, хочу открыть временной интервал Н1 и Д1 и жду... Час жду, второй а он не по дням а по годам обновлятся собрался, в общем не в какую обновление не случается. "Ну че переустанови и все" - скажите вы, а я вам отвечу "Хрен бы там". "Ну так скачай индикатор какого то програмного обновления с фиг знает какого сайта" - спросите вы, а я вам отвечу "Хрен бы там дважды". Очень хочу продолжить делать деньги и задушить комп помогите с 1 а там посмотрим :-)

В Анналы!!!
 

Почему не получаеться покрасить цифру?

 #property indicator_chart_window
void start()
   {
string spred=DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD), 0);
   string lot=AccountFreeMargin()/(Bid)*0.002;
   string lots=StringSubstr(lot, 4, 1);
 
SetLabel("ЧИСЛО",   lots , ColorOnSign(lots), 5, 7, 1);}
  
   color ColorOnSign(double nu){
      color lcColor=Navy;
         if (nu<4) lcColor=Green;
         if (nu>6) lcColor=Red;
      return(lcColor);}
     
   void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
      if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
         ObjectSetText(nm, tx, fs);
         ObjectSet(nm, OBJPROP_COLOR    , cl);
         ObjectSet(nm, OBJPROP_XDISTANCE, xd);
         ObjectSet(nm, OBJPROP_YDISTANCE, yd);
         ObjectSet(nm, OBJPROP_CORNER   , cr);
         ObjectSet(nm, OBJPROP_FONTSIZE , 18);
      return(0);}

Почему не получаеться покрасить цифру?

 

Странно. вроде был вопрос:(

Компелируеться!

 
Elektronik:

Почему не получаеться покрасить цифру?

 #property indicator_chart_window
void start()
   {
string spred=DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD), 0);
   string lot=AccountFreeMargin()/(Bid)*0.002;
   string lots=StringSubstr(lot, 4, 1);
 
SetLabel("ЧИСЛО",   lots , ColorOnSign(lots), 5, 7, 1);}
  
   color ColorOnSign(double nu){
      color lcColor=Navy;
         if (nu<4) lcColor=Green;
         if (nu>6) lcColor=Red;
      return(lcColor);}
     
   void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
      if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
         ObjectSetText(nm, tx, fs);
         ObjectSet(nm, OBJPROP_COLOR    , cl);
         ObjectSet(nm, OBJPROP_XDISTANCE, xd);
         ObjectSet(nm, OBJPROP_YDISTANCE, yd);
         ObjectSet(nm, OBJPROP_CORNER   , cr);
         ObjectSet(nm, OBJPROP_FONTSIZE , 18);
      return(0);}

Почему не получаеться покрасить цифру?

Вы ж покрасили, а для смены цвета надо создать другой такой же объект, но другого цвета! И меняйте объекты, тогда зрительно будет меняться цвет! Это, как  я понимаю! А может, есть другое мнение? Я сам только менял цвета у Машки таким образом.
 

Я думаю, что тут все дело в числе

lots=StringSubstr(lot, 4, 1); 

может программа и понимает его как одну цифру 

 
Elektronik:

Странно. вроде был вопрос:(

Компелируеться!

Да,  хотел дополнить и случйно удалил. Восстанавливать не стал.

Цвет надо менять этим:

ObjectSet(nm, OBJPROP_COLOR, cl);

 По Вашему коду не видно, где меняете цвет.

============

Разобрался где...

 Надо так:

   void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9)
    {
     ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
     ObjectSetText(nm, tx, fs);
     ObjectSet(nm, OBJPROP_COLOR    , cl);
     ObjectSet(nm, OBJPROP_XDISTANCE, xd);
     ObjectSet(nm, OBJPROP_YDISTANCE, yd);
     ObjectSet(nm, OBJPROP_CORNER   , cr);
     ObjectSet(nm, OBJPROP_FONTSIZE , 18);
    }

Не бойтесь создавать объект заново. Это оптимизировано. Если объект создан, то он только меняет свойства, которые меняются. Т.е. заново он не пересоздаётся.

Фигурные скобки ставте на одном уровне, а то сразу не понять, что написано, где блоки начинаются и кончаются.

Наверняка, проблемы с параметром ColorOnSign(). Параметр double, а вставляете string.

SetLabel("ЧИСЛО", lots, ColorOnSign(StrToDouble(lots)), 5, 7, 1);

 или

color ColorOnSign(string sLots)
 {
  double nu = StrToDouble(sLots);
  color lcColor=Navy;
  if (nu<4) lcColor=Green;
  if (nu>6) lcColor=Red;
  return(lcColor);
 }
 

Доброго времени суток! Помогите разобраться, а если можно подскажите кодом.

Имею следующий трал в сове ->

        for ( int v = OrdersTotal() - 1; v >= 0; v -- ){       
                if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES)){           
                        if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){ 
                                //+=================================================================================+
                                ///+================================Обычный трал ====================================+
                                if (TralSimple){
                                        if(OrderType() == OP_SELL){
                                                if((OrderOpenPrice()-Ask) > (Point*TrailingStop)){ 
                                                        if((OrderStopLoss() > (Ask+Point*TrailingStop)) || (OrderStopLoss()==0)){
                                                                OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                                                        }
                                                }
                                        }
                                        //+=================================================================================+
                                        if(OrderType() == OP_BUY){
                                                if((Bid-OrderOpenPrice()) > (Point*TrailingStop)){
                                                        if(OrderStopLoss() < Bid-Point*TrailingStop || (OrderStopLoss()==0)){
                                                                OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Blue);  
                                                        }
                                                }
                                        }
                                }                                  
--------------------------------------------

Сейчас трал передвигает стоп после каждого положительного тика. Хочу сделать следующим образом:

первый проход - при положительном тике трал переставит стоп на 1 пункт, и на сколько пара ушла вверх.

второй проход - возьмем некую переменную х которая будет при кожно проходе увеличиваться на 1. и зададим некий шаг (5). и при каждом проходе (шаг)*х

и тд.

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

 
berezhnuy:

Доброго времени суток! Помогите разобраться, а если можно подскажите кодом.

Имею следующий трал в сове ->

Сейчас трал передвигает стоп после каждого положительного тика. Хочу сделать следующим образом:

первый проход - при положительном тике трал переставит стоп на 1 пункт, и на сколько пара ушла вверх.

второй проход - возьмем некую переменную х которая будет при кожно проходе увеличиваться на 1. и зададим некий шаг (5). и при каждом проходе (шаг)*х

и тд.

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


Делаете что-то типа параболика, расчет относительно базовой точки - цена и время открытия