Ответ
 
Опции темы
Старый 13.12.2013, 18:10   #2081 (permalink)
Новичок форума
 
Аватар для max020780
 
Регистрация: 22.12.2009
Сообщений: 44
Репутация: 11
max020780
Сказал(а) спасибо: 6
Поблагодарили 12 раз(а) в 7 сообщениях
Поинты: 30
s - это цена полученная по сигналу
a spred это
PHP код:
double spred= (Ask-Bid);

if (
spred<0spred *=(-1); 
max020780 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (13.12.2013)
Старый 13.12.2013, 18:17   #2082 (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™
Сообщение от max020780 Посмотреть сообщение
s - это цена полученная по сигналу
a spred это
PHP код:
double spred= (Ask-Bid);

if (
spred<0spred *=(-1); 
Ну тогда гляди ошибки в журнале.
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 13.12.2013, 18:38   #2083 (permalink)
Новичок форума
 
Аватар для max020780
 
Регистрация: 22.12.2009
Сообщений: 44
Репутация: 11
max020780
Сказал(а) спасибо: 6
Поблагодарили 12 раз(а) в 7 сообщениях
Поинты: 30
так когда советник запущен на одной паре все вроде ок !
как только включаешь вторую получается черти что такое ощущение что перебор ордеров работает коряво както! как можно проверить?
max020780 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 13.12.2013, 18:54   #2084 (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™
Сообщение от max020780 Посмотреть сообщение
так когда советник запущен на одной паре все вроде ок !
как только включаешь вторую получается черти что такое ощущение что перебор ордеров работает коряво както! как можно проверить?
Та вроди нормально фильтруется сивол, даже 2 раза.
Алертом пробуй каждый параметр проверять.
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 13.12.2013, 19:22   #2085 (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
Сообщение от max020780 Посмотреть сообщение
помогите разобраться пытаюсь модифицировать два ордера одновременно один отложенный другой открытый так открытый модифицируется без проблем а отложенный намного позже и в придачу когда советник запущен на нескольких парах он модифицирует отложенный по цене открытого ордера по другой валютной паре если ордера открыты в том же направлении

Код:
if( NumberOfPositionsBay(Symbol())==1 && NumberOfPositionsSell_otl(Symbol())==1 &&GetOrderLotsOtlSell(Symbol())==start_Lot*2 && GetOrderLotsBay(Symbol())==start_Lot)
{

 
      for (int k = 0; k < OrdersTotal(); k++) 
      {
      if (OrderSelect(k,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров:
//------------------------------------------------------ 3 --
if (OrderSymbol()!= Symbol()) continue; // Не наш фин.инструм.
      
      if (OrderSymbol() == Symbol() && OrderType() == OP_SELLSTOP ) {
     
      tp_sell_otl=NormalizeDouble(s-(2*Point)-spred-(GetOrderPriceBay(Symbol())-(s-Point-spred))/Point/2*Point, Digits);
      sl_sell_otl=NormalizeDouble(GetOrderPriceBay(Symbol()), Digits);
      ModifyOrder(
      OrderModify(OrderTicket(),NormalizeDouble(s-Point-spred, Digits),sl_sell_otl,tp_sell_otl,0);
       
      }
      
       
       if (OrderSymbol() == Symbol() && OrderType() == OP_BUY  ) {
       
      sl_buy_otl=NormalizeDouble(s-spred-Point, Digits);
      OrderModify(OrderTicket(), OrderOpenPrice(),sl_buy_otl,OrderTakeProfit(),0);
      
      }
      }
      }
}
Для начала объясни что такое ModifyOrder(
И почему в одном случае, точней во втором, там где должна быть цена открытия ордера написано OrderOpenPrice() а в первом не понятно что NormalizeDouble(s-Point-spred, Digits)
Даже если это цена открытия ордера правильно будет писать OrderOpenPrice()
И если не трудно вместо тегов PHP используй теги
CODE
Сообщение от max020780 Посмотреть сообщение
s - это цена полученная по сигналу
a spred это
Код:
double spred= (Ask-Bid);

if (spred<0) spred *=(-1);
И зачем такое условие if(spred < 0)??? Разве может быть Ask меньше Bid???

Давай ещё разберём это
NormalizeDouble(s // Если это цена полученная... хорошо.
-Point // А почему ты из этой цены минусуешь Point???
-spred // Ну spred может и надо сминусовать, тебе видней. Пусть будет так.
, Digits)
Но основное это вместо цены открытия ордера не понятно что...

Последний раз редактировалось AlexeyVik; 13.12.2013 в 19:34.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (13.12.2013)
Старый 13.12.2013, 19:36   #2086 (permalink)
Новичок форума
 
Аватар для max020780
 
Регистрация: 22.12.2009
Сообщений: 44
Репутация: 11
max020780
Сказал(а) спасибо: 6
Поблагодарили 12 раз(а) в 7 сообщениях
Поинты: 30
написал во так
PHP код:
if(NumberOfPositionsSell(Symbol())==&&  NumberOfPositionsBay_otl(Symbol())==1  &&GetOrderLotsOtlBay(Symbol())==start_Lot*2  &&GetOrderLotsSell(Symbol())==start_Lot)
{
 
     for (
int kk OrdersTotal()-1kk >=kk--) 
      {
      
       if (
OrderSelect(kk,SELECT_BY_POS)==true// Если есть следующий
// Анализ ордеров:
      
      
if (OrderSymbol() == Symbol() && OrderType() == OP_BUYSTOP ) {
      

      
tp_buy_otl=NormalizeDouble(b+((((2*Point)+spred+(b+Point+spred-GetOrderPriceSell(Symbol()))/Point)/2)*Point), Digits);
      
sl_buy_otl=NormalizeDouble(GetOrderPriceSell(Symbol()), Digits);
      
OrderModify(OrderTicket(), NormalizeDouble(b+Point+spredDigits),sl_buy_otl,tp_buy_otl,0);
     
       
Alert("tp_buy_otl = ",DoubleToStr(tp_buy_otlDigits)+"\n"+"sl_buy_otl =  ",DoubleToStr(sl_buy_otlDigits)+"\n"+" цена открытия бай стоп = ",  DoubleToStr(b+Point+spredDigits)+"\n"+"OrderSymbol() =  ",OrderSymbol()+"\n"+"OrderType() = ",OrderType());
     
      
     }
      
      
      if (
OrderSymbol() == Symbol() && OrderType() == OP_SELL ) {
      
      
sl_sell_otl=NormalizeDouble(b+spred+PointDigits);
      
OrderModify(OrderTicket(),OrderOpenPrice(), sl_sell_otl,OrderTakeProfit(),0);
       
      }
      }
      }
      

а в алерте почемуто OrderSymbol()==GBPUSD посмотрите на скин
да и открытый селл он модифицировал а отложенный нет


как только удалил отложенник по gbpusd и удалил с него советника то ордер сразу по евро модифицировался
Миниатюры:
Нажмите на изображение для увеличения
Название: 100.jpg
Просмотров: 7
Размер:	134.1 Кб
ID:	143807  

Последний раз редактировалось max020780; 13.12.2013 в 19:55.
max020780 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 13.12.2013, 19:49   #2087 (permalink)
Новичок форума
 
Аватар для max020780
 
Регистрация: 22.12.2009
Сообщений: 44
Репутация: 11
max020780
Сказал(а) спасибо: 6
Поблагодарили 12 раз(а) в 7 сообщениях
Поинты: 30
Сообщение от AlexeyVik Посмотреть сообщение
Для начала объясни что такое ModifyOrder(
И почему в одном случае, точней во втором, там где должна быть цена открытия ордера написано OrderOpenPrice() а в первом не понятно что NormalizeDouble(s-Point-spred, Digits)
Даже если это цена открытия ордера правильно будет писать OrderOpenPrice()
И если не трудно вместо тегов PHP используй теги
CODE

И зачем такое условие if(spred < 0)??? Разве может быть Ask меньше Bid???

Давай ещё разберём это
NormalizeDouble(s // Если это цена полученная... хорошо.
-Point // А почему ты из этой цены минусуешь Point???
-spred // Ну spred может и надо сминусовать, тебе видней. Пусть будет так.
, Digits)
Но основное это вместо цены открытия ордера не понятно что...
s - это цена которую я получаю от индикатора
Point минусую потомучто хочу чтоб на 1 пункт цена была меньше той что дал индикатор по этому и получается что для отложенного ордера я вычисляю цену открытия а для того что уже открыт модифицирую только стоп лосс и тейк профит
ModifyOrder( - просто забыл удалить
max020780 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 13.12.2013, 20:09   #2088 (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™
Сообщение от max020780 Посмотреть сообщение
написал во так ...а в алерте почемуто OrderSymbol()==GBPUSD посмотрите на скин
да и открытый селл он модифицировал а отложенный нет


как только удалил отложенник по gbpusd и удалил с него советника то ордер сразу по евро модифицировался
В строку алерта ещё допиши Symbol()
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.12.2013, 02:53   #2089 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547

По умолчанию Это глюк МТ4???


кто то сталкивался с тем что при оптимизации тестер выдает каждый раз разные результаты,причем никакие параметры не меняю, просто нажимаю кнопку "СТАРТ", версия билда МТ4 509, в попытке выяснить причину такого поведения, написал простой код, и решил глянуть цену закрытия 1 бара, итог поверг в шок, в журнале цена закрытия 1 бара имеет несколько значений, как такое может быть вапще???
подскажите плиз, в чем причина разных значений цены закрытия, при прогонах кода, интернет был отключен и новые котировки не поступали...
PHP код:
int init()
  {
   return(
0);
  }
int deinit()
  {
   return(
0);
  }
int start()
  {
//----
   
Print("цена закрытия 1 бара=",Close[1]);
//----
   
return(0);
  } 
в котировках последний(1) бар, на М30, цена закрытия имеет значение 1.3741
ниже результаты работы кода:
Миниатюры:
Нажмите на изображение для увеличения
Название: Screenshot - 14_12.jpg
Просмотров: 9
Размер:	103.3 Кб
ID:	143851  

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)

Последний раз редактировалось Milord; 14.12.2013 в 02:59.
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.12.2013, 06:29   #2090 (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
Сообщение от Milord Посмотреть сообщение
кто то сталкивался с тем что при оптимизации тестер выдает каждый раз разные результаты,причем никакие параметры не меняю, просто нажимаю кнопку "СТАРТ", версия билда МТ4 509, в попытке выяснить причину такого поведения, написал простой код, и решил глянуть цену закрытия 1 бара, итог поверг в шок, в журнале цена закрытия 1 бара имеет несколько значений, как такое может быть вапще???
подскажите плиз, в чем причина разных значений цены закрытия, при прогонах кода, интернет был отключен и новые котировки не поступали...
PHP код:
int init()
  {
   return(
0);
  }
int deinit()
  {
   return(
0);
  }
int start()
  {
//----
   
Print("цена закрытия 1 бара=",Close[1]);
//----
   
return(0);
  } 
в котировках последний(1) бар, на М30, цена закрытия имеет значение 1.3741
ниже результаты работы кода:
Это скорее глюк программиста. Номер бара вообще то динамический. Тестер во время теста, моделирует появление новых баров, соответственно 1 бар становится другим.
В реальности так же. С появлением нового бара, нумерация сдвигается.
Если нужно получать цену одного и того же бара нужно привязываться не к номеру бара, а к времени открытия бара.

А что бы при каждом тестировании получать одинаковый результат, нужно задать в тестере фиксированный спред.
Или тестировать в выходные.

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

Последний раз редактировалось Ugar; 14.12.2013 в 06:35.
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
eevviill (14.12.2013), Milord (14.12.2013)
Старый 14.12.2013, 07:37   #2091 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547
Сообщение от Ugar Посмотреть сообщение
....
А что бы при каждом тестировании получать одинаковый результат, нужно задать в тестере фиксированный спред.
Или тестировать в выходные.
спасибо за пояснение,про моделирование прихода котировок я не подумал))
на счет одинаковых результатов в выходные, не факт, именно на выходных и оптил, единственно не смотрел какой спред при оптении был в тестере...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.12.2013, 08:02   #2092 (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
Сообщение от max020780 Посмотреть сообщение
s - это цена которую я получаю от индикатора
Point минусую потомучто хочу чтоб на 1 пункт цена была меньше той что дал индикатор по этому и получается что для отложенного ордера я вычисляю цену открытия а для того что уже открыт модифицирую только стоп лосс и тейк профит
Ну, хорошо. Я был не достаточно внимателен, оказывается ты хочешь переставить отложник на новое место. Я прочёл как ордер OP_BUY

А вот
Сообщение от max020780 Посмотреть сообщение
ModifyOrder( - просто забыл удалить
это скорее всего ты пудришь нам мозги. В твоём варианте ты переходишь в другую функцию где и происходит путаница символа, а нам показываешь модификацию строкой OrderModify()
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (14.12.2013)
Старый 14.12.2013, 10:52   #2093 (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
Сообщение от Milord Посмотреть сообщение
спасибо за пояснение,про моделирование прихода котировок я не подумал))
на счет одинаковых результатов в выходные, не факт, именно на выходных и оптил, единственно не смотрел какой спред при оптении был в тестере...
В выходные спред не должен меняться. Хотя, мало ли что там сотрудники ДЦ творят с сервером. Лучше использовать не текущий спред, а задать какой то фиксированный, близкий к среднему.
Ещё, в советнике может быть применён рандомный вход, теоретически, при каждом запуске, результат должен отличаться. На практике не всегда, зависит от способа инициализации рандом генератора.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (14.12.2013)
Старый 14.12.2013, 13:21   #2094 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547
Сообщение от Ugar Посмотреть сообщение
В выходные спред не должен меняться. Хотя, мало ли что там сотрудники ДЦ творят с сервером. Лучше использовать не текущий спред, а задать какой то фиксированный, близкий к среднему.
Ещё, в советнике может быть применён рандомный вход, теоретически, при каждом запуске, результат должен отличаться. На практике не всегда, зависит от способа инициализации рандом генератора.
код я писал сам,там никаких рандомов небыло, но при каждом запуске оптимизации, наилучший результат по балансу менялся, ощущение, что тестер проганивает его по меняющимся котировкам, но самое интересное дальше, не меняя настроек в тестере, то есть периода оптимизации,спреда...
закидываю на оптение обычный Илан, и в нем почему то не меняется результат оптимизации, в моем же каждый раз разное значение...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)

Последний раз редактировалось Milord; 14.12.2013 в 13:23.
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.12.2013, 14:35   #2095 (permalink)
Новичок форума
 
Аватар для max020780
 
Регистрация: 22.12.2009
Сообщений: 44
Репутация: 11
max020780
Сказал(а) спасибо: 6
Поблагодарили 12 раз(а) в 7 сообщениях
Поинты: 30
Сообщение от AlexeyVik Посмотреть сообщение
Ну, хорошо. Я был не достаточно внимателен, оказывается ты хочешь переставить отложник на новое место. Я прочёл как ордер OP_BUY

А вот это скорее всего ты пудришь нам мозги. В твоём варианте ты переходишь в другую функцию где и происходит путаница символа, а нам показываешь модификацию строкой OrderModify()
никому ничего не пудрю а пытаюсь разобраться от куда выскакивает этот глюк на ModifyOrder( не нужно ссылаться оно тут не причем его уже нет в коде я просто пробывал функцию KIMIVa вставить думал что OrderModify() как то не верно оформил а оказалось что и с его функцией тоже самое . лучшеб не критиковали а указали конкретно почему так происходит когда советник работает на двух и более парах
судя из логики если я правильно понимаю что при равенстве OrderSymbol()==GBPUSD если это пара евродоллар он в аллерт вообще не должен попадать а он попадает или если я не прав поправьте
PHP код:
if(NumberOfPositionsSell(Symbol())==&&  NumberOfPositionsBay_otl(Symbol())==1  &&GetOrderLotsOtlBay(Symbol())==start_Lot*2  &&GetOrderLotsSell(Symbol())==start_Lot)
{
 
     for (
int kk OrdersTotal()-1kk >=kk--) 
      {
      
       if (
OrderSelect(kk,SELECT_BY_POS)==true// Если есть следующий
// Анализ ордеров:
      
      
if (OrderSymbol() == Symbol() && OrderType() == OP_BUYSTOP ) {
      

      
tp_buy_otl=NormalizeDouble(b+((((2*Point)+spred+(b+Point+spred-GetOrderPriceSell(Symbol()))/Point)/2)*Point), Digits);
      
sl_buy_otl=NormalizeDouble(GetOrderPriceSell(Symbol()), Digits);
      
OrderModify(OrderTicket(), NormalizeDouble(b+Point+spredDigits),sl_buy_otl,tp_buy_otl,0);
     
       
Alert("tp_buy_otl = ",DoubleToStr(tp_buy_otlDigits)+"\n"+"sl_buy_otl =  ",DoubleToStr(sl_buy_otlDigits)+"\n"+" цена открытия бай стоп = ",  DoubleToStr(b+Point+spredDigits)+"\n"+"OrderSymbol() =  ",OrderSymbol()+"\n"+"OrderType() = ",OrderType());
     
      
     }
      
      
      if (
OrderSymbol() == Symbol() && OrderType() == OP_SELL ) {
      
      
sl_sell_otl=NormalizeDouble(b+spred+PointDigits);
      
OrderModify(OrderTicket(),OrderOpenPrice(), sl_sell_otl,OrderTakeProfit(),0);
       
      }
      }
      }
      

Миниатюры:
Нажмите на изображение для увеличения
Название: 100.jpg
Просмотров: 11
Размер:	134.1 Кб
ID:	143884  
max020780 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.12.2013, 14:39   #2096 (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
Сообщение от Milord Посмотреть сообщение
код я писал сам,там никаких рандомов небыло, но при каждом запуске оптимизации, наилучший результат по балансу менялся, ощущение, что тестер проганивает его по меняющимся котировкам, но самое интересное дальше, не меняя настроек в тестере, то есть периода оптимизации,спреда...
закидываю на оптение обычный Илан, и в нем почему то не меняется результат оптимизации, в моем же каждый раз разное значение...
Аааа, при оптимизации. Поди что генетический алгоритм включен?

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
qqmber (14.12.2013)
Старый 14.12.2013, 16:07   #2097 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547
Сообщение от Ugar Посмотреть сообщение
Аааа, при оптимизации. Поди что генетический алгоритм включен?
конечно включен)) как и положено, а иначе резы будут через неделю машинного времени))
просто неясно как так может быть, если участок (период) оптимизации неизменен, неизменный спред и параметры в тестере, вернее их рамки, но при каждом нажатии на кнопку "старт оптимизации" -получаются разные резы))это в моей сове, в илане не меняются резы, странно))где же глюк???))почитал ветку метаквотов _http://forum.mql4.com/ru/58760/page126 об новых билдах МТ4, после 509, у меня он стоит, чуть волосы дыбом не встали, все глючит там по отзывам трейдеров и графика и функции...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)

Последний раз редактировалось Milord; 14.12.2013 в 16:12.
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.12.2013, 17:19   #2098 (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
Сообщение от Milord Посмотреть сообщение
конечно включен)) как и положено, а иначе резы будут через неделю машинного времени))
просто неясно как так может быть, если участок (период) оптимизации неизменен, неизменный спред и параметры в тестере, вернее их рамки, но при каждом нажатии на кнопку "старт оптимизации" -получаются разные резы))это в моей сове, в илане не меняются резы, странно))где же глюк???))почитал ветку метаквотов _http://forum.mql4.com/ru/58760/page126 об новых билдах МТ4, после 509, у меня он стоит, чуть волосы дыбом не встали, все глючит там по отзывам трейдеров и графика и функции...
А говорил никакого рандома. В советнике нет рандома, так в генетическом алгоритме он есть.
Цитата:
Генети́ческий алгори́тм (англ. genetic algorithm) — это эвристический алгоритм поиска, используемый для решения задач оптимизации и моделирования путём случайного подбора, комбинирования и вариации искомых параметров с использованием механизмов, аналогичных естественному отбору в природе.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Глубокое понимание процессов помогает в работе, но сильно мешает в отдыхе.
http://forexsystems.ru/signaturepics/sigpic3798_1.gif
Чужие программы не переделываю!
Ugar на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Milord (14.12.2013)
Старый 14.12.2013, 17:49   #2099 (permalink)
Местный знаток
 
Аватар для Milord
 
Регистрация: 26.03.2011
Сообщений: 596
Репутация: 705
Milord - Milord - Milord - Milord - Milord - Milord - Milord -
Сказал(а) спасибо: 897
Поблагодарили 702 раз(а) в 192 сообщениях
Поинты: 547
Сообщение от Ugar Посмотреть сообщение
А говорил никакого рандома. В советнике нет рандома, так в генетическом алгоритме он есть.
каюсь))
про генетику я не думал, что "собака" зарыта именно там,Илан то не менял свои резы при включенной генетике..))
надо будет снова вернутся к своей сове, и вырубить генетику, вдруг и правда она виноватая))

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
тестю советники, иногда пишу и дорабатываю их ...
ПУТЬ ДЛИННОЙ В 10000 МИЛЬ НАЧИНАЕТСЯ С 1 ШАГА (Лао Цзы)
Milord вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 14.12.2013, 20:17   #2100 (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
Сообщение от max020780 Посмотреть сообщение
никому ничего не пудрю а пытаюсь разобраться от куда выскакивает этот глюк на ModifyOrder( не нужно ссылаться оно тут не причем его уже нет в коде я просто пробывал функцию KIMIVa вставить думал что OrderModify() как то не верно оформил а оказалось что и с его функцией тоже самое . лучшеб не критиковали а указали конкретно почему так происходит когда советник работает на двух и более парах
судя из логики если я правильно понимаю что при равенстве OrderSymbol()==GBPUSD если это пара евродоллар он в аллерт вообще не должен попадать а он попадает или если я не прав поправьте
Код:
if(NumberOfPositionsSell(Symbol())==1 &&  NumberOfPositionsBay_otl(Symbol())==1  &&GetOrderLotsOtlBay(Symbol())==start_Lot*2  &&GetOrderLotsSell(Symbol())==start_Lot)
{
 
     for (int kk = OrdersTotal()-1; kk >=0 ; kk--) 
      {
      
       if (OrderSelect(kk,SELECT_BY_POS)==true) // Если есть следующий
{ // Анализ ордеров:
      
      if (OrderSymbol() == Symbol() && OrderType() == OP_BUYSTOP ) {
      

      tp_buy_otl=NormalizeDouble(b+((((2*Point)+spred+(b+Point+spred-GetOrderPriceSell(Symbol()))/Point)/2)*Point), Digits);
      sl_buy_otl=NormalizeDouble(GetOrderPriceSell(Symbol()), Digits);
      OrderModify(OrderTicket(), NormalizeDouble(b+Point+spred, Digits),sl_buy_otl,tp_buy_otl,0);
     
       Alert("tp_buy_otl = ",DoubleToStr(tp_buy_otl, Digits)+"\n"+"sl_buy_otl =  ",DoubleToStr(sl_buy_otl, Digits)+"\n"+" цена открытия бай стоп = ",  DoubleToStr(b+Point+spred, Digits)+"\n"+"OrderSymbol() =  ",OrderSymbol()+"\n"+"OrderType() = ",OrderType());
     
      
     }
      
      
      if (OrderSymbol() == Symbol() && OrderType() == OP_SELL ) {
      
      sl_sell_otl=NormalizeDouble(b+spred+Point, Digits);
      OrderModify(OrderTicket(),OrderOpenPrice(), sl_sell_otl,OrderTakeProfit(),0);
       
      }
      }
      }
      
}
Ну давай без обид. На первый взгляд написано без ошибок, но ведь чудес на свете не бывает... Значит где-то у тебя происходит выбор другого ордера. Проверь функции выделенные мной жирным красным шрифтом в твоём коде. Вероятно там. Для начала замени это конкретной ценой, или вычисли эту цену до того как...
В общем велика вероятность того, что в этой функции происходит перевыбор символа.
Ну или в тупую поставь перед OrderModify дополнительный раз OrderSelect(kk,...

И ещё раз прошу тебя, если не трудно не пользуйся тегами PHP пользуйся тегами CODE Кнопка находится через одну от PHP влево и имеет значёк #
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (14.12.2013)
Ответ

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


Опции темы

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

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



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


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