Ответ
 
Опции темы
Старый 16.09.2012, 16:53   #381 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3645
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,113
Поблагодарили 3,649 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от hoz Посмотреть сообщение
AlexeyVik, видимо это с опытом приходит. На данный момент я вот уже почти начал понимать что да как, перед тем как начать программировать. Потому и вопросы бывают не такие логичные.

Я попутно смотрю на функцию Кима:
PHP код:
void SimpleTrailing(string sy=""int op=-1int mn=-1) {
  
double popp;
  
int    ik=OrdersTotal();

  if (
sy=="0"sy=Symbol();
  for (
i=0i<ki++) {
    if (
OrderSelect(iSELECT_BY_POSMODE_TRADES)) {
      if ((
OrderSymbol()==sy || sy=="") && (op<|| OrderType()==op)) {
        
po=MarketInfo(OrderSymbol(), MODE_POINT);
        if (
mn<|| OrderMagicNumber()==mn) {
          if (
OrderType()==OP_BUY) {
            
pp=MarketInfo(OrderSymbol(), MODE_BID);
            if (!
TSProfitOnly || pp-OrderOpenPrice()>TStop.Buy*po) {
              if (
OrderStopLoss()<pp-(TStop.Buy+TrailingStep-1)*po) {
                
ModifyOrder(-1pp-TStop.Buy*po, -1);
              }
            }
          }
          if (
OrderType()==OP_SELL) {
            
pp=MarketInfo(OrderSymbol(), MODE_ASK);
            if (!
TSProfitOnly || OrderOpenPrice()-pp>TStop.Sell*po) {
              if (
OrderStopLoss()>pp+(TStop.Sell+TrailingStep-1)*po || OrderStopLoss()==0) {
                
ModifyOrder(-1pp+TStop.Sell*po, -1);
              }
            }
          }
        }
      }
    }
  }

Тут у меня вопрос появился.

В данном участке кода:
PHP код:
if (!TSProfitOnly || pp-OrderOpenPrice()>TStop.Buy*po)
              { if (
OrderStopLoss()<pp-(TStop.Buy+TrailingStep-1)*po
!TSProfitOnly означает, что если режим траал только после достижения безубыточности т.е. это траал только в профитной зоне.
Но тут идёт вариант TSProfitOnly со знаком !, т.е. наоборот выходит, что эта функция не включена. А дальше условие, которое как-раз должно соблюдаться, чтоб TSProfitOnly было в TRUE.
Смысл в том, что получается, что переменная TSProfitOnly. А условие с этой переменной есть только для варианта FALSE, а для TRUE условия нет.
Для меня читать код Кима всё-равно что читать декомпил. Мне кажется, что ты здесь чуток запутался. Восклицательный знак перед булевой переменной означает, что эта переменная false.
Поэтому эта часть кода относится только к варианту TSProfitOnly= false; или вторая часть условия. А для случая когда TSProfitOnly=true видимо есть другая функция.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (16.09.2012)
Старый 16.09.2012, 17:59   #382 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от AlexeyVik Посмотреть сообщение
Для меня читать код Кима всё-равно что читать декомпил. Мне кажется, что ты здесь чуток запутался. Восклицательный знак перед булевой переменной означает, что эта переменная false.
Поэтому эта часть кода относится только к варианту TSProfitOnly= false; или вторая часть условия. А для случая когда TSProfitOnly=true видимо есть другая функция.
! - инверсия, а не false.
У вас проблемы с логикой. Там всего лишь логическое выражение. Чё не заметили далее || - ИЛИ?

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 16.09.2012, 19:02   #383 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от Ugar Посмотреть сообщение
! - инверсия, а не false.
У вас проблемы с логикой. Там всего лишь логическое выражение. Чё не заметили далее || - ИЛИ?
Так с 2 сторон по сути тоже самое по логике. Если TSProfitOnly= false то траалит только в профитной зоне, ИЛИ опять вторая правая часть строки опять же означает траалить в профите.
Вроде бы нет смысла такое писать.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 16.09.2012, 20:10   #384 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от hoz Посмотреть сообщение
Так с 2 сторон по сути тоже самое по логике. Если TSProfitOnly= false то траалит только в профитной зоне, ИЛИ опять вторая правая часть строки опять же означает траалить в профите.
Вроде бы нет смысла такое писать.
Точно с логикой плохо. А её надо подтянуть, это важно для программирования.
Попробуем так.
TSProfitOnly - тралить только в профите.
!TSProfitOnly - можно тралить и не в профите.
!TSProfitOnly || pp-OrderOpenPrice()>TStop.Buy*po
Конкретно получается
будем тралить если можно тралить и не в профите или уровень для трала находится в профите.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 16.09.2012, 20:13   #385 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3645
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,113
Поблагодарили 3,649 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от Ugar Посмотреть сообщение
! - инверсия, а не false.
У вас проблемы с логикой. Там всего лишь логическое выражение. Чё не заметили далее || - ИЛИ?
А ты видимо не внимательно читал.
Определение ! было дано для конкретного случая, для БУЛЕВОЙ ПЕРЕМЕННОЙ и дальше написано ИЛИ вторая часть условия.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 17.09.2012, 09:09   #386 (permalink)
Интересующийся
 
Аватар для Rockvik
 
Регистрация: 30.07.2011
Адрес: Ейск
Сообщений: 7
Репутация: 4
Rockvik
Сказал(а) спасибо: 32
Поблагодарили 3 раз(а) в 3 сообщениях
Поинты: 0

По умолчанию Помогите с индикатором


Господа программисты как сделать так чтоб высвечивались только точки мах и min свечей одного цвета
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 DarkTurquoise
#property indicator_color2 Gold
#property indicator_color3 Red
#property indicator_color4 Green

extern color color1 = DarkTurquoise;
extern color color2 = Gold;
extern color color3 = Red;
extern color color4 = Green;
double g_ibuf_92[];
double g_ibuf_96[];
double g_ibuf_100[];
double g_ibuf_104[];
int gi_108 = 0;

int init() {
SetIndexStyle(0,DRAW_SECTION);
SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 1, color2);
SetIndexBuffer(1, g_ibuf_92);
SetIndexStyle(1,DRAW_ARROW);
SetIndexStyle(2, DRAW_HISTOGRAM, STYLE_SOLID, 3, color3);
SetIndexBuffer(2, g_ibuf_100);
SetIndexStyle(3, DRAW_HISTOGRAM, STYLE_SOLID, 3, color4);
SetIndexBuffer(3, g_ibuf_104);
SetIndexArrow(1,172);
SetIndexDrawBegin(2, 10);
SetIndexDrawBegin(3, 10);
SetIndexBuffer(0, g_ibuf_92);
SetIndexBuffer(1, g_ibuf_96);
SetIndexBuffer(2, g_ibuf_100);
SetIndexBuffer(3, g_ibuf_104);
SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);
return (0);
}

int deinit() {
return (0);
}

int start() {
double ld_0;
double ld_8;
double ld_16;
double ld_24;
if (Bars <= 10) return (0);
gi_108 = IndicatorCounted();
if (gi_108 < 0) return (-1);
if (gi_108 > 0) gi_108--;
for (int li_32 = Bars - gi_108 - 1; li_32 >= 0; li_32--) {
ld_0 = (g_ibuf_100[li_32 + 1] + (g_ibuf_104[li_32 + 1])) / 2.0;
ld_24 = (Open[li_32] + High[li_32] + Low[li_32] + Close[li_32]) / 4.0;
ld_8 = MathMax(High[li_32], MathMax(ld_0, ld_24));
ld_16 = MathMin(Low[li_32], MathMin(ld_0, ld_24));
if (ld_0 < ld_24) {
g_ibuf_92[li_32] = ld_16;
g_ibuf_96[li_32] = ld_8;
} else {
g_ibuf_92[li_32] = ld_8;
g_ibuf_96[li_32] = ld_16;
}
g_ibuf_100[li_32] = ld_0;
g_ibuf_104[li_32] = ld_24;
}
return (0);
}
PipHMA.mq4
Rockvik вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 19.09.2012, 13:46   #387 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Rockvik, ты ошибся разделом. Тут задают вопросы по программированию на mql, а не дорабатывают советники и индюки.

Сообщение от Ugar Посмотреть сообщение
Точно с логикой плохо. А её надо подтянуть, это важно для программирования.
Попробуем так.
TSProfitOnly - тралить только в профите.
!TSProfitOnly - можно тралить и не в профите.
!TSProfitOnly || pp-OrderOpenPrice()>TStop.Buy*po
Конкретно получается
будем тралить если можно тралить и не в профите или уровень для трала находится в профите.
Если взять 2 случая:
При !TSProfitOnly:
PHP код:
if (!TSProfitOnly || pp-OrderOpenPrice()>TStop.Buy*po)
              { if (
OrderStopLoss()<pp-(TStop.Buy+TrailingStep-1)*po
Траалим в профитной зоне И не в профитной || Траалим только в профите, т.к. согласно второго выражения.

При TSProfitOnly
PHP код:
if (TSProfitOnly || pp-OrderOpenPrice()>TStop.Buy*po)
              { if (
OrderStopLoss()<pp-(TStop.Buy+TrailingStep-1)*po
Траалим только в профитной зное || Траалим только в профитной зоне.
Верно?
Так получается, что при !TSProfitOnly траал будет в любом случае.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 19.09.2012, 14:53   #388 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от hoz Посмотреть сообщение
Если взять 2 случая:
При !TSProfitOnly:
PHP код:
if (!TSProfitOnly || pp-OrderOpenPrice()>TStop.Buy*po)
              { if (
OrderStopLoss()<pp-(TStop.Buy+TrailingStep-1)*po
Траалим в профитной зоне И не в профитной || Траалим только в профите, т.к. согласно второго выражения.
Если !TSProfitOnly=true
то выражение if (!TSProfitOnly || pp-OrderOpenPrice()>TStop.Buy*po) всегда возвращает true.
То есть работает следующее условие трейлинга if (OrderStopLoss()<pp-(TStop.Buy+TrailingStep-1)*po) . Которое тралит в любом случае, в профите стоп или нет.
Если !TSProfitOnly=false
то выражение if (!TSProfitOnly || pp-OrderOpenPrice()>TStop.Buy*po) возвращает true только когда уровень на который будет подтянут стоп находится в профите. Только в этом случае будет работать следующее условие трейлинга.

Сообщение от hoz Посмотреть сообщение
При TSProfitOnly
PHP код:
if (TSProfitOnly || pp-OrderOpenPrice()>TStop.Buy*po)
              { if (
OrderStopLoss()<pp-(TStop.Buy+TrailingStep-1)*po
Траалим только в профитной зное || Траалим только в профитной зоне.
Верно?
Так получается, что при !TSProfitOnly траал будет в любом случае.
Здесь всё налборот.

По сути состояние переменной TSProfitOnly включает или выключает проверку следующего условия pp-OrderOpenPrice()>TStop.Buy*po

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!

Последний раз редактировалось Ugar; 19.09.2012 в 15:32.
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (19.09.2012), hoz (19.09.2012)
Старый 19.09.2012, 19:02   #389 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сообщение от Ugar Посмотреть сообщение
Если !TSProfitOnly=true
то выражение if (!TSProfitOnly || pp-OrderOpenPrice()>TStop.Buy*po) всегда возвращает true.
То есть работает следующее условие трейлинга if (OrderStopLoss()<pp-(TStop.Buy+TrailingStep-1)*po) . Которое тралит в любом случае, в профите стоп или нет.
Если [B]!TSProfitOnly=false
По-моему, проще не извращаться, а написать нормально:
PHP код:
if (TSProfitOnly || pp-OrderOpenPrice()>TStop.Buy*po)
              { if (
OrderStopLoss()<pp-(TStop.Buy+TrailingStep-1)*po
Тогда при: TSProfitOnly=true, будет стоп переносится только в профитной зоне, а если TSProfitOnly=false стоп может переноситься как в профитной зоне, так и не в профитной.
Есть ли смысл так путать код?
Чтобы понять такое, приходится чрезмерно напрягать мозг.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 19.09.2012, 19:21   #390 (permalink)
hoz
Активный участник
 
Аватар для hoz
 
Регистрация: 01.04.2011
Сообщений: 530
Репутация: 111
hoz hoz
Сказал(а) спасибо: 59
Поблагодарили 112 раз(а) в 88 сообщениях
Поинты: 538
Отправить сообщение для hoz с помощью ICQ
Сегодня я всё-таки решил добавить функцию мартина к сове, которая попалась под руку. Всё работало исправно, потом я решил вынести во внешние переменные размеры лота, и начались ошибки при компиляции.
Вот что я добавил к сове:
В глобальных переменных:
PHP код:
extern double mode_1 0.01;
extern double mode_2 0.02;
extern double mode_3 0.04;
extern double mode_4 0.08;
extern double mode_5 0.16;
extern double mode_6 0.32;
double LotsArray[]; 
В int init():
PHP код:
LotsArray[0] = "mode_1";
 
LotsArray[1] = "mode_2";
 
LotsArray[2] = "mode_3";
 
LotsArray[3] = "mode_4";
 
LotsArray[4] = "mode_5";
 
LotsArray[5] = "mode_6"
Сама функция мартина:
PHP код:
double Lots()
 {
   
double LotM=Lot;
   
int total OrdersHistoryTotal();
   for (
int i total-1>= 0i--)
    {
      
OrderSelect(iSELECT_BY_POSMODE_HISTORY);
      if (
OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
       {
         if (
OrderProfit() > 0)
          {
            
LotM=LotsArray[0];
            
LossCount 0;    
          }         
          else
           {
            
LotM=LotsArray[LossCount+1];
            
LossCount++;
           }
       }
    }
   return(
LotM);

При компиляции появляется ошибка:
Код:
'=' - incompatible types	C:\Program Files\FXstart - MetaTrader\experts\mmm2.1.1~.mq4 (94, 15)
Как устранить этот косяк? Ведь тип у меня double, как я и указал изначально.
hoz вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 19.09.2012, 19:39   #391 (permalink)
Активный участник
 
Аватар для Nata_FX
 
Регистрация: 12.10.2011
Сообщений: 50
Репутация: 36
Nata_FX
Сказал(а) спасибо: 10
Поблагодарили 35 раз(а) в 23 сообщениях
Поинты: 4
Сообщение от hoz Посмотреть сообщение
Сегодня я всё-таки решил добавить функцию мартина к сове, которая попалась под руку. Всё работало исправно, потом я решил вынести во внешние переменные размеры лота, и начались ошибки
PHP код:
LotsArray[0] = "mode_1";
 
LotsArray[1] = "mode_2";
 
LotsArray[2] = "mode_3";
 
LotsArray[3] = "mode_4";
 
LotsArray[4] = "mode_5";
 
LotsArray[5] = "mode_6"
Здесь кавычки зачем?
Nata_FX на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (19.09.2012), hoz (19.09.2012)
Старый 19.09.2012, 20:24   #392 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от hoz Посмотреть сообщение
По-моему, проще не извращаться, а написать нормально:
PHP код:
if (TSProfitOnly || pp-OrderOpenPrice()>TStop.Buy*po)
              { if (
OrderStopLoss()<pp-(TStop.Buy+TrailingStep-1)*po
Тогда при: TSProfitOnly=true, будет стоп переносится только в профитной зоне, а если TSProfitOnly=false стоп может переноситься как в профитной зоне, так и не в профитной.
Есть ли смысл так путать код?
Чтобы понять такое, приходится чрезмерно напрягать мозг.
Опять ничё не понял. При таком выражении будет работать наоборот.
TSProfitOnly=false, будет стоп переносится только в профитной зоне, а если TSProfitOnly=true стоп может переноситься как в профитной зоне, так и не в профитной.
Для того и поставлен был ! перед переменой что бы инвертировать её.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 19.09.2012, 21:01   #393 (permalink)
Местный житель
 
Аватар для krezi
 
Регистрация: 09.10.2011
Сообщений: 116
Репутация: 175
krezi - krezi -
Сказал(а) спасибо: 6
Поблагодарили 174 раз(а) в 59 сообщениях
Поинты: 32
Отправить сообщение для krezi с помощью ICQ
Сообщение от Ugar Посмотреть сообщение
Опять ничё не понял. При таком выражении будет работать наоборот.
TSProfitOnly=false, будет стоп переносится только в профитной зоне, а если TSProfitOnly=true стоп может переноситься как в профитной зоне, так и не в профитной.
Для того и поставлен был ! перед переменой что бы инвертировать её.
А лучше вообще чтобы не косолапить писать так:

if ((TSProfitOnly=true) || (pp-OrderOpenPrice()>(TStop.Buy*po)))

PS МТ4 баговая платформа, с привычкой читать не до конца и очень радостно когда просто TSProfitOnly || pp-OrderOpenPrice()

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
MQLzone.ru
krezi вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 19.09.2012, 21:07   #394 (permalink)
Местный житель
 
Аватар для fxfxfxfx
 
Регистрация: 30.05.2012
Сообщений: 223
Репутация: 210
fxfxfxfx - fxfxfxfx - fxfxfxfx -
Сказал(а) спасибо: 188
Поблагодарили 209 раз(а) в 119 сообщениях
Поинты: 115
Ugar подскажи это ошибка или некритично 'f0_43' - comparison expression expected
возможно сие исправить?
спасибо
fxfxfxfx вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 20.09.2012, 06:46   #395 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от krezi Посмотреть сообщение
А лучше вообще чтобы не косолапить писать так:

if ((TSProfitOnly=true) || (pp-OrderOpenPrice()>(TStop.Buy*po)))

PS МТ4 баговая платформа, с привычкой читать не до конца и очень радостно когда просто TSProfitOnly || pp-OrderOpenPrice()
Компилятор всё расставляет в соответствии с приоритетом. Арифметика имеет более высокий приоритет чем логика. По этому, сначала выполняются арифметические выражения, а уж потом логические.
В данном случае, компилятор не может не дочитать строку, так как в конце строки есть арифметика с большим приоритетом.
(TSProfitOnly=true) Для сравнения не хватает ещё одного знака =.
Кроме того TSProfitOnly должна быть инвертирована, тогда уж должно быть (TSProfitOnly==false)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 20.09.2012, 08:02   #396 (permalink)
Элитный участник
 
Аватар для Ugar
 
Регистрация: 13.03.2009
Сообщений: 2,255
Репутация: 1963
Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar Ugar
Сказал(а) спасибо: 349
Поблагодарили 1,892 раз(а) в 1,069 сообщениях
Поинты: 1276
Отправить сообщение для Ugar с помощью ICQ
Сообщение от fxfxfxfx Посмотреть сообщение
Ugar подскажи это ошибка или некритично 'f0_43' - comparison expression expected
возможно сие исправить?
спасибо
Это ошибка. Исправить возможно, но это не ко мне. Я не занимаюсь исправлением, доработкой, взломом, декомпиляцией чужих программ. Обращайтесь к автору.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 20.09.2012, 08:11   #397 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3645
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,113
Поблагодарили 3,649 раз(а) в 1,470 сообщениях
Поинты: 2007
Сообщение от fxfxfxfx Посмотреть сообщение
Ugar подскажи это ошибка или некритично 'f0_43' - comparison expression expected
возможно сие исправить?
спасибо
Ну так вставил-бы эту фразу в переводчик и всё понял-бы не задавая вопросов...
Миниатюры:
Нажмите на изображение для увеличения
Название: 00.jpg
Просмотров: 18
Размер:	26.9 Кб
ID:	88076  
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (20.09.2012)
Старый 21.09.2012, 14:12   #398 (permalink)
Местный житель
 
Аватар для krezi
 
Регистрация: 09.10.2011
Сообщений: 116
Репутация: 175
krezi - krezi -
Сказал(а) спасибо: 6
Поблагодарили 174 раз(а) в 59 сообщениях
Поинты: 32
Отправить сообщение для krezi с помощью ICQ
Сообщение от Ugar Посмотреть сообщение
Компилятор всё расставляет в соответствии с приоритетом. Арифметика имеет более высокий приоритет чем логика. По этому, сначала выполняются арифметические выражения, а уж потом логические.
В данном случае, компилятор не может не дочитать строку, так как в конце строки есть арифметика с большим приоритетом.
(TSProfitOnly=true) Для сравнения не хватает ещё одного знака =.
Кроме того TSProfitOnly должна быть инвертирована, тогда уж должно быть (TSProfitOnly==false)
Красава, внимательно читаешь.
Только если не сталкивался с обрубками условий не надо копипаст с забора.

И при чём тут компилятор если речь о платформе

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
MQLzone.ru
krezi вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 26.09.2012, 17:28   #399 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9022
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,680
Поблагодарили 9,022 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™

По умолчанию закрыть всё и потом не закрывать


Вышла вот такая проблема. Есть мультивалютный советник. Мне нужно при определённом условии выключить реверс и закрыть все ордера открытые по реверсу.
Но если так как я написал, то после отключения реверса будут закрыватся все только что открытые по тренду ордера. Что можно придумать?

PHP код:
Cl_Pr_Lo false;
REVERS=true;

if(
HtL_rev()>=Min_all_HtL_rev) {REVERS=false;Cl_Pr_Lo=true;}
... 

Последний раз редактировалось eevviill; 26.09.2012 в 17:32.
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 26.09.2012, 17:52   #400 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,525
Репутация: 3645
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,113
Поблагодарили 3,649 раз(а) в 1,470 сообщениях
Поинты: 2007
Василий, тут вариантов несколько, но не полная информация для правильного решения.
Можно расставить последовательность команд в определённой последовательности так чтобы сначала закрылись ордера, переключить флаг и реверс, а потом открывать ордера.
Или можно в цикле закрытия ордеров проверять наличие в OrderComment() строки REVERS.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Ответ

Метки
mql4, mql4 помощь, вопросы mql4


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 00:05. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
SEO by vBSEO