![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
leonid553 |
![]()
Сообщение
#171
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
Ок! В следующей, - трехвалютной версии я, пожалуй, так и сделаю!
Теперь пришла пора заняться отдельной версией! ты говорил, что там всё в порядке с ордерами. Т.Е. в последней твоей версии советник не обращает внимание на чужие ордера. Однако, это не так! Вот стоит эта версия на паре GBPCHF,H4 и ночью там был сигнал на вход в BUY. но позиция не открылась! - см. рис. Стал разбираться. И немного запутался! Код int start() { bool isNewBar=false; if (ExpertBars !=Bars) {ExpertBars=Bars; isNewBar=true; } int _Order=isExpertOrder(); if (isNewBar) { if (_Order!=0) ZeroBarOrd=true; //есть ордер else ZeroBarOrd=false; //нет ордера } Здесь всё ясно пока - для работы по ценам открытия. Далее идет заблокированный кусочек. Ну раз - заблокированный, - значит не оч. и нужен! Эскизы прикрепленных изображений |
leonid553 |
![]()
Сообщение
#172
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
А условие на открытие позиции вот такое -
Код if (!ZeroBarOrd) { //---------------------------------------------------------------------------------------------- //----проверяем условие на покупку----- if ( (Stochastic[1]<Env_low[0]) && (Stochastic[0]>Env_low[0]) ){ if ( _Order==0) { //если нет открытых ордеров Buy (); //покупаем } else { //если открытые ордера есть Далее пошли блоки открытия позиций, и блок закрытия позиций. |
NoName |
![]()
Сообщение
#173
|
![]() Группа: Активный участник Сообщений: 514 Регистрация: 1.5.2006 Из: Украина, Кременчуг Пользователь №: 146 Спасибо сказали: 0 раз(а) ![]() |
Скорее всего дело не с ордерами а с настройками.
Настройки индикатора и советника соответствуют? Не работает ли на счету эксперт с таким же MagicNumber? На закоментированный блок не обращай внимания, я просто забыл его удалить. Его функцию выполняют строки те что выше. Код if (isNewBar) { if (_Order!=0) ZeroBarOrd=true; //есть ордер else ZeroBarOrd=false; //нет ордера } |
leonid553 |
![]()
Сообщение
#174
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
Всё соответствует!
и магик задан extern int ExpertID =1111; А в др. советниках - другие магики. Да и структура там другая. Непонятина начинается вот здесь : |
leonid553 |
![]()
Сообщение
#175
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
Код /======================================================================================= //| Функция проверки наличия ордеров эксперта |========================================== //| 0 - ордеров нет |========================================== //| 1 - есть ордер Buy |========================================== //| 2 - есть ордер Sell |========================================== //======================================================================================= int isExpertOrder() { int _OrdersTotal=OrdersTotal(); //---------- При тестировании проводим упрощённую проверку ордеров. if (IsTesting()) { if (_OrdersTotal==0) return (0); for (int i=0; i<_OrdersTotal; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderType()==OP_BUY) {return(1); break; } if (OrderType()==OP_SELL) {return(2); break; } } } } for (i=0; i<_OrdersTotal; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()) { if (OrderMagicNumber()==ExpertID) { if (OrderType()==OP_BUY) { return(1); break; } if (OrderType()==OP_SELL) { return(2); break; } } } } } } |
leonid553 |
![]()
Сообщение
#176
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
Вроде бы разобрался! Установил. Скомпеллировалось.
|
leonid553 |
![]()
Сообщение
#177
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
Вставляю третью и последнюю пару. В мультивалютный. Отлажу, приготовлю и пришлю тебе.
---------------------------------------------------------------------------------------- А вот с LotsWayChoice = 1; и =3 так и осталась проблема! В мт4 MQ - CHEMP - там в терминале заложено ограничение до 5 лотов. После чего в журнале пишется ошибка! Но в др. мт4 ограничений таких нет. А если задать ограничения вручную LotsMax = 50 (т.е =5 лотов) , то все равно не работает! |
leonid553 |
![]()
Сообщение
#178
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
Число 49 взял от фонаря. Почему именно его - не помню (действительно, почему не 50 ? ![]() Кстати, этот цикл сильно тормозит советник, т.к. пересчитывается на каждом тике. Лучше использовать внешний индикатор, который я тебе присылал, а его значения снимать в советнике через iCustom. вот в последней версии для ускоренных ресчетов в тестере - твоя последняя версия "нового поколения" с вызовом внешнего индюка iCustom(NULL,0,"i-StochEnv" в коде стоит - double Stochastic[2]; Нужно ли для онлайна задать побольше это число , если у меня период канала равен = 20-25 ? |
NoName |
![]()
Сообщение
#179
|
![]() Группа: Активный участник Сообщений: 514 Регистрация: 1.5.2006 Из: Украина, Кременчуг Пользователь №: 146 Спасибо сказали: 0 раз(а) ![]() |
вот в последней версии для ускоренных ресчетов в тестере - твоя последняя версия "нового поколения" с вызовом внешнего индюка iCustom(NULL,0,"i-StochEnv" в коде стоит - double Stochastic[2]; Нужно ли для онлайна задать побольше это число , если у меня период канала равен = 20-25 ? Нет. Этот массив с периодом канала никак не связан. А вот на счёт библиотеки лучше поинтересоваться на форуме у Кима. Думаю, так будет проще, чем самим гадать в чём проблема. |
leonid553 |
![]()
Сообщение
#180
|
![]() Группа: Активный участник Сообщений: 2 002 Регистрация: 14.4.2006 Из: г.Самара Пользователь №: 28 Спасибо сказали: 11 раз(а) ![]() |
Обнаружился вроде глюк в версии с вызовом индюка!
в визуальном режиме я увидел что значения (в левом углу) границ канала остаются постоянными - в течение последней свечи! И меняют значения лишь с началом следующей свечи! А вот стохастик (как и положено) меняется на каждом тике! Почему Comment ("Stochastic[0] ", Stochastic[0] , "\r\n", "Env_up [0] ", Env_up [0] , "\r\n", "Env_low[0] ", Env_low[0] , "\r\n", "Blocking= "+st ); значения Env_up [0] и "Env_low[0] не меняются на каждом тике? Для тф н4 это оч. существенно! В итоге мы сильно запаздываем со входом! Либо пропускаем вход! Отследил в виз. режиме. Т.к. вход всякий раз происходит после открытия новой свечи! Это и в "классических" версиях - так же! И скажи пож, что там на графике за - Blocking=false? Пожалуй, я совсем уже "притупил"! Эскизы прикрепленных изображений |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 13.5.2025, 16:43 |