Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 454

 
niktron:

if(kolpos==0&&Volume[0]<10&&iOpen("EURAUD",PERIOD_M1,1)<iClose("EURAUD",PERIOD_M1,1)&&iOpen("EURUSD",PERIOD_M1,1)>iClose("EURUSD",PERIOD_M1,1)
&&iOpen("USDJPY",PERIOD_M1,1)<iClose("USDJPY",PERIOD_M1,1)&&iOpen("AUDJPY",PERIOD_M1,1)>iClose("AUDJPY",PERIOD_M1,1)&&Open[1]<Close[1])
OrderSend("AUDUSD",OP_BUY,Lot,Ask,slippage,Ask-SL*Point,0,NULL,OrderMagicNumber(),0,Green);
if(kolpos==0 && 
   Volume[0]<10 && 
   iOpen("EURAUD",PERIOD_M1,1)<iClose("EURAUD",PERIOD_M1,1) && 
   iOpen("EURUSD",PERIOD_M1,1)>iClose("EURUSD",PERIOD_M1,1) &&
   iOpen("USDJPY",PERIOD_M1,1)<iClose("USDJPY",PERIOD_M1,1) &&
   iOpen("AUDJPY",PERIOD_M1,1)>iClose("AUDJPY",PERIOD_M1,1) &&
   Open[1]<Close[1])
   OrderSend("AUDUSD",OP_BUY,Lot,Ask,slippage,NormalizeDouble(Bid-SL*Point,Digits),0,NULL,magic,0,Green);

А тестируете на AUDUSD ?

Рассчитываемые значения цен в торговом приказе должны быть нормализованы до Digits. Мало того, должны соответствовать требованиям StopLevel (здесь не делал)

OrderMagicNumber() - это магик предварительно выбранного ордера. Вы его должны либо задать конкретной величиной, либо рассчитать в советнике, чтобы он был для него уникальным.

Перед этой проверкой распринтуйте все значения всех проверяемых тут условий. Тогда понятно будет вам где искать.

 
artmedia70:

А тестируете на AUDUSD ?

Рассчитываемые значения цен в торговом приказе должны быть нормализованы до Digits. Мало того, должны соответствовать требованиям StopLevel (здесь не делал)

OrderMagicNumber() - это магик предварительно выбранного ордера. Вы его должны либо задать конкретной величиной, либо рассчитать в советнике, чтобы он был для него уникальным.

Перед этой проверкой распринтуйте все значения всех проверяемых тут условий. Тогда понятно будет вам где искать.



Да,тестирую на AUDUSD

OrderSend("AUDUSD",OP_BUY,Lot,Ask,slippage,Ask-SL*Point,0,NULL,OrderMagicNumber(),0,Green);-эта строка работала в тестере без проблем,пока не добавились условия

типа

iOpen("AUDJPY",PERIOD_M1,1)>iClose("AUDJPY",PERIOD_M1,1)...

повторюсь,что на счёте всё работает...в тестере -нет...

 
Всё..разобрался...не хватало истории котировок ...AUDJPY-относится к минорным))) Всем спасибо большое!
 
niktron:

OrderSend("AUDUSD",OP_BUY,Lot,Ask,slippage,Ask-SL*Point,0,NULL,OrderMagicNumber(),0,Green);-эта строка работала в тестере без проблем,пока не добавились условия

Насчёт этой строки я вам уже написал. Потом, когда посыпятся ошибки 130 не спрашивайте в чём проблема.
 
artmedia70:
Насчёт этой строки я вам уже написал. Потом, когда посыпятся ошибки 130 не спрашивайте в чём проблема.


т.е.ошибки 130 может не быть долгое время,а потом посыпется?
 
Если кто встречал код расчёта просадки по эквити(абсолютной и относительной), дайте ссылку, пожалуйста.
 
Leo59:
Если кто встречал код расчёта просадки по эквити(абсолютной и относительной), дайте ссылку, пожалуйста.
Когда мне понадобилось, искал, но не нашёл, т.к. мне нужно было не на прошлом, как в тестере, а в будущем, ставя СЛ на открытой позиции, чтобы предвидеть возможную просадку, если позиция закроется по СЛ, выводя данные в комменте на чарт, что я и сделал, и стало очень удобно на Реале видеть все возможные неприятности заранее, что и вам желаю! Заодно, сделав самостоятельно, многому научился, что ценнее. Удачи вам!
 
TarasBY:
Уже написан.

Здорово,спасибо вам большое за этот материал,сейчас гораздо эффективнее пойдет процесс ограничения потерь и роста прибыли.
 
niktron:

т.е.ошибки 130 может не быть долгое время,а потом посыпется?
Я не телепат, и не Нострадамус. Когда именно у вас появится 130-я ошибка - сказать точно не могу. Но вот то, что она появится - ручаюсь. Пока не нормализуете все рассчитываемые цены в торговых приказах и не проверите цены sl и tp в торговом приказе на предмет их корректности относительно требований StopLevel вашего ДЦ - ждите 130-ю ошибку.
 

Есть такой код функции. В бете МТ4 при компиляции выдает предупреждение "expression not boolean" в строках отмеченных стрелкой. Как исправить не подскажете?

void WindowCaptions()
{
  int hwnd = GetAncestor(WindowHandle(Symbol(),Period()),1); 

  int ret = GetWindowLongA( hwnd, GWL_STYLE );
  if (ret & WS_MAXIMIZE) return;                                               //<---
  if (ret & WS_DLGFRAME) ret -= WS_DLGFRAME; else ret += WS_DLGFRAME;          //<---

  //это если совсем без рамочек 
  // if (ret & WS_THICKFRAME) ret -= WS_THICKFRAME; else ret += WS_THICKFRAME;
  
  SetWindowLongA( hwnd, GWL_STYLE, ret );
  SetWindowPos ( hwnd, 0,0,0,0,0, 39); 
}
Причина обращения: