Советники, эксперты, форекс роботы Обсуждение, поиск и тестирование форекс советников, роботов, экспертов и МТС

Ответ
 
Опции темы
Старый 16.07.2011, 20:48   #1201 (permalink)
Местный знаток
 
Аватар для Taras2008
 
Регистрация: 23.02.2011
Сообщений: 1,083
Репутация: 522
Taras2008 - Taras2008 - Taras2008 - Taras2008 - Taras2008 - Taras2008 -
Сказал(а) спасибо: 256
Поблагодарили 550 раз(а) в 378 сообщениях
Поинты: 54
Сообщение от komissar73 Посмотреть сообщение
Taras у тебя в настройках спред 4, рекомендуемый не более 2 для пары евро/бакс, для остальных не более 3. Из-за спреда такая высокая просадка.
Я знаю. На ДЦ спред 3. На остальных парах сливает.

Последний раз редактировалось Taras2008; 16.07.2011 в 20:55.
Taras2008 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 16.07.2011, 20:56   #1202 (permalink)
Заблокирован
 
Аватар для SLAWA3
 
Регистрация: 15.04.2011
Адрес: г.Кострома
Сообщений: 624
Репутация: 632
SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 -
Сказал(а) спасибо: 0
Поблагодарили 422 раз(а) в 141 сообщениях
Поинты: 0
Слава, пока вопросы такие:
1. Что с замечанием
http://forexsystemsru.com/sovetniki/...tml#post261394
"В советнике WSFR... в функциях ModifyOrders() и CloseOrders() есть грубые ошибки.
В них вызываются функции GetLastError(), OrderTicket() и OrderType() не
в цикле, а один раз ДО цикла перебора всех ордеров."
Я так понимаю, что работает там правильно, но в логи выводится неверно?
Если так, нельзя ли поправить?
2. Насчет ваших доливочных ордеров по рынку. Скажем, открылся первый по условию сравнения с основным. А по каким условиям открываются следующие? Кто для следующего "основной"? Как регулируется их лот (я смотрю, он для каждой доливки уменьшается? а может увеличиваться? )
И как ограничить число таких ордеров?
3. "extern bool AccountOrder =FALSE;//--- учёт ордеров при откр. дополнительных. если =true то учитывает только основной если =false то все "
Это где и для чего "учитывается"?
4. "extern int MaxAnalizCount = 50; //--- Число закрытых ранее ордеров для анализа(Используется при RecoveryMode = True)"
Какой анализ? Для чего?
5. Почему-то не показывает индюки и всякие веселые картинки в левом верхнем. А должен? Или это из-за выходных? поставил HideTestIndicators(FALSE);[/QUOTE]
[lang=af]


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

ну теперь посмотрю ошибки про которые вы написали - в функциях..если конечно есть таковые...[/lang]

просмотрел... в обоих ф-ях полностью весь код в цикле. начиная с else { после селектора и принта и заканчивая последней скобкой }...


вас не затруднит - то буду признателен если вставите в сообщение строки с ошибками из кода...

если вы про этот блок то это не вызов а обозначение ( задание ) переменных !

bool TicketClose; //--- Закрытие ордера
int total = OrdersTotal() - 1;
int OpenLongOrdersCount = 0;
int OpenShortOrdersCount = 0;
int MaxCount = 3;
int CloseError = GetLastError();
int CloseTicketID = OrderTicket();
string CloseOrderType = OrderType();

Последний раз редактировалось SLAWA3; 16.07.2011 в 21:34.
SLAWA3 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
darfs (17.07.2011)
Старый 16.07.2011, 21:05   #1203 (permalink)
Активный участник
 
Аватар для misi1
 
Регистрация: 30.01.2011
Сообщений: 54
Репутация: 37
misi1
Сказал(а) спасибо: 220
Поблагодарили 36 раз(а) в 17 сообщениях
Поинты: 0
Привет! 3.8.6.1,НАЧАТЬ 50USD, Спасибо!

Bars in test 1961 Ticks modelled 185393 Modelling quality 90.00%
Mismatched charts errors 1

Kezdo betet 50.00
Osszes netto profit 343.55 Brutto profit 343.55 Brutto veszteseg 0.00
Profit tenyezo Vart eredmeny 13.74
Teljes visszaeses 27.00 Maximalis lehivas 64.27 (29.21%) Relative drawdown 66.18% (45.00)

Osszes kereskedes 25 Short poziciok (won %) 14 (100.00%) Long poziciok (won %) 11 (100.00%)
Nyereseges kereskedesek (az osszes %-a) 25 (100.00%) Veszteseges kereskedesek (az osszes %-a) 0 (0.00%)
Legnagyobb Nyereseges ugylet 114.91 Veszteseges ugylet 0.00
Atlag Nyereseges ugylet 13.74 Veszteseges ugylet 0.00
Maximum egymast koveto sikeres ugyletek (a profit penzben) 25 (343.55) egymast koveto veszteseges ugyletek (a veszteseg penzben) 0 (0.00)
Maximalis egymast koveto profit (a nyeresegek szama) 343.55 (25) egymast koveto vesztesegek (a vesztesegek szama) 0.00 (0)
Atlag egymast koveto nyeresegek 25 egymast koveto vesztesegek 0


imageshack.us/photo/my-images/199/strategytester50usddepo.gif

imageshack.us/photo/my-images/585/strategytester.gif
misi1 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 16.07.2011, 21:15   #1204 (permalink)
money never sleeps
За третье место в конкурсе 

 
Аватар для komissar73
 
Регистрация: 23.02.2009
Сообщений: 1,109
Репутация: 4525
komissar73 komissar73 komissar73 komissar73 komissar73 komissar73 komissar73 komissar73 komissar73 komissar73 komissar73
Сказал(а) спасибо: 5,686
Поблагодарили 4,339 раз(а) в 1,053 сообщениях
Поинты: 104
slawa4 ты не знаешь как изменить в мт4 спред на выходные?
Для тестирования был второй терминал, с дуру взял и обновил данные.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _


Чтобы вас не могли обескуражить краткосрочные неудачи, у вас должны быть долгосрочные цели. (Чарльз Нобль)
komissar73 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 16.07.2011, 21:19   #1205 (permalink)
Активный участник
 
Аватар для misi1
 
Регистрация: 30.01.2011
Сообщений: 54
Репутация: 37
misi1
Сказал(а) спасибо: 220
Поблагодарили 36 раз(а) в 17 сообщениях
Поинты: 0
1DATE: 2011.07.01---2011.07.15.
2DATE:2011.05.20.---2011.07.15.
misi1 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 16.07.2011, 21:24   #1206 (permalink)
Заблокирован
 
Аватар для SLAWA3
 
Регистрация: 15.04.2011
Адрес: г.Кострома
Сообщений: 624
Репутация: 632
SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 -
Сказал(а) спасибо: 0
Поблагодарили 422 раз(а) в 141 сообщениях
Поинты: 0
Сообщение от komissar73 Посмотреть сообщение
slawa4 ты не знаешь как изменить в мт4 спред на выходные?
Для тестирования был второй терминал, с дуру взял и обновил данные.
[lang=af]знаю : http://forexsystemsru.com/poleznye-d...v-legkuyu.html[/lang]
версию 1.2 скачайте...
SLAWA3 вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
komissar73 (16.07.2011), Ritter (16.07.2011)
Старый 16.07.2011, 21:51   #1207 (permalink)
Заблокирован
 
Аватар для SLAWA3
 
Регистрация: 15.04.2011
Адрес: г.Кострома
Сообщений: 624
Репутация: 632
SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 -
Сказал(а) спасибо: 0
Поблагодарили 422 раз(а) в 141 сообщениях
Поинты: 0
Сообщение от komissar73 Посмотреть сообщение
Коллеги кто знает как пользоваться прогой TakeMySpread v1.2, чтобы изменить
спред.
[lang=af]для начала отключить терминал от сети ( напр изменить последнюю цифру счёта ) выключить терминал.. включить прогу тейк май спред . нажать внизу дир... выбрать папку с терминалом в нём папку с нужной историей и инструментом напр евра усд.. и далее вписать спред и нажать писать и .. после этого включить терминал не забыв изменённую цифру поставить и тестить ... без подключения к сети .[/lang]
SLAWA3 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
komissar73 (16.07.2011)
Старый 16.07.2011, 21:59   #1208 (permalink)
Заблокирован
 
Аватар для SLAWA3
 
Регистрация: 15.04.2011
Адрес: г.Кострома
Сообщений: 624
Репутация: 632
SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 -
Сказал(а) спасибо: 0
Поблагодарили 422 раз(а) в 141 сообщениях
Поинты: 0
bool TicketClose; //--- Закрытие ордера
int total = OrdersTotal() - 1;
int OpenLongOrdersCount = 0;
int OpenShortOrdersCount = 0;
int MaxCount = 3;
int CloseError = GetLastError();
int CloseTicketID = OrderTicket();
string CloseOrderType = OrderType();[/QUOTE]
если вы про этот блок то это не вызов а обозначение ( задание ) переменных !
двойное их переназначение ( до цикла по одному и в самом цикле по другому) считаю излишним ... ( хоть и возможным )

Последний раз редактировалось SLAWA3; 16.07.2011 в 22:02.
SLAWA3 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
darfs (17.07.2011)
Старый 16.07.2011, 22:11   #1209 (permalink)
money never sleeps
За третье место в конкурсе 

 
Аватар для komissar73
 
Регистрация: 23.02.2009
Сообщений: 1,109
Репутация: 4525
komissar73 komissar73 komissar73 komissar73 komissar73 komissar73 komissar73 komissar73 komissar73 komissar73 komissar73
Сказал(а) спасибо: 5,686
Поблагодарили 4,339 раз(а) в 1,053 сообщениях
Поинты: 104
Сообщение от slawa4 Посмотреть сообщение
[lang=af]для начала отключить терминал от сети ( напр изменить последнюю цифру счёта ) выключить терминал.. включить прогу тейк май спред . нажать внизу дир... выбрать папку с терминалом в нём папку с нужной историей и инструментом напр евра усд.. и далее вписать спред и нажать писать и .. после этого включить терминал не забыв изменённую цифру поставить и тестить ... без подключения к сети .[/lang]
Slawa4 спасибо, разобрался.
Коллеги для тех кто пользуется версией WSFR-3.8.6_3 выкладываю сет
для пары евра/бакс альпари микро 3.
За этот год со 100 баксов до 2000 при просадке 13%. Для тех кому 13% просадки много просто уменьшите ММ с 10 до нужного вам процента.
Сет проходит с 1999 года.
Всем профитов на следующей неделе.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _


Чтобы вас не могли обескуражить краткосрочные неудачи, у вас должны быть долгосрочные цели. (Чарльз Нобль)

Последний раз редактировалось komissar73; 10.06.2012 в 23:27.
komissar73 вне форума   Ответить с цитированиемОтветить с цитированием  
18 пользователя(ей) сказали cпасибо:
02rus (23.07.2011), Alexashka (05.08.2011), alsers (18.07.2011), darfs (17.07.2011), denis-kovalchuk (17.07.2011), DIMon1973 (18.07.2011), dub150 (01.06.2012), Jamski (17.07.2011), M@яI{off (17.07.2011), maga156 (16.07.2011), photolaz (02.08.2011), Ritter (16.07.2011), san888 (17.07.2011), serggray (02.02.2014), To4a (25.12.2011), tyrist (17.07.2011), ValPal (22.07.2011), vo_ba (27.11.2011)
Старый 17.07.2011, 05:00   #1210 (permalink)
Активный участник
 
Аватар для darfs
 
Регистрация: 12.12.2010
Сообщений: 404
Репутация: 85
darfs
Сказал(а) спасибо: 431
Поблагодарили 84 раз(а) в 53 сообщениях
Поинты: 16
Сообщение от slawa4 Посмотреть сообщение
bool TicketClose; //--- Закрытие ордера
int total = OrdersTotal() - 1;
int OpenLongOrdersCount = 0;
int OpenShortOrdersCount = 0;
int MaxCount = 3;
int CloseError = GetLastError();
int CloseTicketID = OrderTicket();
string CloseOrderType = OrderType();
если вы про этот блок то это не вызов а обозначение ( задание ) переменных !
двойное их переназначение ( до цикла по одному и в самом цикле по другому) считаю излишним ... ( хоть и возможным )[/QUOTE]
================================================== =====
Я так понял, что ошибка может быть такая:
void ModifyOrders() {

bool TicketModify; //--- Закрытие ордера
int total = OrdersTotal() - 1;
int ModifyError = GetLastError();
int ModifyTicketID = OrderTicket();
string ModifyOrderType = OrderType();

В цикле в Print используются эти переменные из этой шапки, но тут ордер еще не выбран. А в цикле выбираются все новые ордера, но переменные в Print остаются эти же?...
if (!TicketModify)
if (WriteDebugLog) Print("Произошла ошибка во время модификации ордера (", ModifyOrderType, ",", ModifyTicketID, "). Причина: ", ErrorDescription(ModifyError));
darfs вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 17.07.2011, 07:04   #1211 (permalink)
Заблокирован
 
Аватар для SLAWA3
 
Регистрация: 15.04.2011
Адрес: г.Кострома
Сообщений: 624
Репутация: 632
SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 -
Сказал(а) спасибо: 0
Поблагодарили 422 раз(а) в 141 сообщениях
Поинты: 0
Я так понял, что ошибка может быть такая:
void ModifyOrders() {


if (!TicketModify)
if (WriteDebugLog) Print("Произошла ошибка во время модификации ордера (", ModifyOrderType, ",", ModifyTicketID, "). Причина: ", ErrorDescription(ModifyError));[/QUOTE]


if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (WriteDebugLog) Print("Произошла ошибка во время выборки ордера. Причина: ", ErrorDescription(ModifyError));
вот же принт стоит ... уже после селектора...

исправьте у себя как сочтёте нужным( если считаете это необходимым...никто же не мешает перенести int ModifyTicketID = OrderTicket(); и string ModifyOrderType = OrderType(); в цикл после else { ) я так просто не вижу в этом надобности ...( в исправлениях с двойным переназначением переменных )
да и в самом принте не вижу необходимости тут... я бы так вообще сделал по другому...

Последний раз редактировалось SLAWA3; 17.07.2011 в 07:20.
SLAWA3 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
darfs (17.07.2011)
Старый 17.07.2011, 07:18   #1212 (permalink)
Активный участник
 
Аватар для darfs
 
Регистрация: 12.12.2010
Сообщений: 404
Репутация: 85
darfs
Сказал(а) спасибо: 431
Поблагодарили 84 раз(а) в 53 сообщениях
Поинты: 16
Слава, спасибо за ответ. Уточнения:
Сообщение от slawa4 Посмотреть сообщение
последняя моя версия WSFR_D ... версия с тралом чисто для пробы по чьей то просьбе...
Надеюсь, что WSFR_Dtral включает код из WSFR_D, и можно далее работать с WSFR_Dtral (отлаживать трал и тп) ? Или какую версию вы будете далее модифицировать?

Сообщение от slawa4 Посмотреть сообщение
2. Насчет ваших доливочных ордеров по рынку. Скажем, открылся первый по условию сравнения с основным. А по каким условиям открываются следующие? Кто для следующего "основной"? Как регулируется их лот (я смотрю, он для каждой доливки уменьшается? а может увеличиваться? )
И как ограничить число таких ордеров?

3. "extern bool AccountOrder =FALSE;//--- учёт ордеров при откр. дополнительных. если =true то учитывает только основной если =false то все "
Это где и для чего "учитывается"?

учёт ордеров в условиях просадки ордера...
в одном случае учитывается только ордер открытый по первому сигналу ( главный )
в другом - любой ордер с просадкой превышающей настр.
Правильно я понял, что AccountOrder, хотя расположена вдали от доливок, именно к ним относится?
Если AccountOrder = TRUE, то откроется только один доп ордер при просадке основного на OrderDOP ? И далее при любой просадке основного и дополнительного ничего не будет происходить?
Если AccountOrder = FALSE, то к основному ордеру все равно откроется
только 1 дополнительный при просадке OrderDOP? А к дополнительному может открыться только еще один дополнительный при просадке OrderDOP?
И так далее - на каждый ордер не более одного дополнительного?
Но если просадка будет продолжаться, количество дополнительных
ордеров ничем не ограничено? Как остановить этот процесс? - Нужен лимит на число доп ордеров, или как?

Сообщение от slawa4 Посмотреть сообщение
анализ и восстановление это так же операции что в исходнике...
Это про что речь? Про то, как вычисляются (уменьшаются) объемы доп ордеров? Так же, как при в фирменной версии для RecoveryMode = TRUE? Или как? И какие параметры в нашем случае доливок надо задавать
для вычисления объемов доп ордеров?
darfs вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 17.07.2011, 07:24   #1213 (permalink)
Активный участник
 
Аватар для darfs
 
Регистрация: 12.12.2010
Сообщений: 404
Репутация: 85
darfs
Сказал(а) спасибо: 431
Поблагодарили 84 раз(а) в 53 сообщениях
Поинты: 16
Я так понял, что ошибка может быть такая:
void ModifyOrders() {


if (!TicketModify)
if (WriteDebugLog) Print("Произошла ошибка во время модификации ордера (", ModifyOrderType, ",", ModifyTicketID, "). Причина: ", ErrorDescription(ModifyError));[/QUOTE]


if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (WriteDebugLog) Print("Произошла ошибка во время выборки ордера. Причина: ", ErrorDescription(ModifyError));
Сообщение от slawa4 Посмотреть сообщение
вот же принт стоит ... уже после селектора...

исправьте у себя как сочтёте нужным( если считаете это необходимым...) я так просто не вижу в этом надобности ...( в исправлениях с двойным переназначением переменных )
да и в самом принте не вижу необходимости тут... я бы так вообще сделал по другому...
Я про то, что в Print вроде бы используется одни и те же значения
ModifyError ModifyTicketID ModifyOrderType, определенные 1 раз в шапке void ModifyOrders() { и не меняющиеся при переборе ордеров OrderSelect
darfs вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 17.07.2011, 07:49   #1214 (permalink)
Активный участник
 
Аватар для darfs
 
Регистрация: 12.12.2010
Сообщений: 404
Репутация: 85
darfs
Сказал(а) спасибо: 431
Поблагодарили 84 раз(а) в 53 сообщениях
Поинты: 16
Сообщение от slawa4 Посмотреть сообщение
Я так понял, что ошибка может быть такая:
void ModifyOrders() {


if (!TicketModify)
if (WriteDebugLog) Print("Произошла ошибка во время модификации ордера (", ModifyOrderType, ",", ModifyTicketID, "). Причина: ", ErrorDescription(ModifyError));

if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (WriteDebugLog) Print("Произошла ошибка во время выборки ордера. Причина: ", ErrorDescription(ModifyError));
вот же принт стоит ... уже после селектора...

исправьте у себя как сочтёте нужным( если считаете это необходимым...никто же не мешает перенести int ModifyTicketID = OrderTicket(); и string ModifyOrderType = OrderType(); в цикл после else { ) я так просто не вижу в этом надобности ...( в исправлениях с двойным переназначением переменных )
да и в самом принте не вижу необходимости тут... я бы так вообще сделал по другому...[/QUOTE]
Да, спасибо за подтверждение ошибки. Я уже ответил на предыдущую версию вашего письма, где не было еще части этой информации...
А как можно лучше сделать по-другому? (Сразу постараюсь по другому и переделать -- если смогу... )
darfs вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 17.07.2011, 09:14   #1215 (permalink)
Заблокирован
 
Аватар для SLAWA3
 
Регистрация: 15.04.2011
Адрес: г.Кострома
Сообщений: 624
Репутация: 632
SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 -
Сказал(а) спасибо: 0
Поблагодарили 422 раз(а) в 141 сообщениях
Поинты: 0
[QUOTE=slawa4;278886]Я так понял, что ошибка может быть такая:
void ModifyOrders() {


изменил . вставил в цикл тип и тикет ну и ещё что то добавил ... что то подчистил ...
Вложения:
Тип файла: mq4 WSFR_D1.mq4 (62.2 Кб, 181 просмотров)
SLAWA3 вне форума   Ответить с цитированиемОтветить с цитированием  
4 пользователя(ей) сказали cпасибо:
darfs (17.07.2011), iii237 (06.04.2014), photolaz (02.08.2011), znn1950 (15.02.2016)
Старый 17.07.2011, 09:25   #1216 (permalink)
Активный участник
 
Аватар для darfs
 
Регистрация: 12.12.2010
Сообщений: 404
Репутация: 85
darfs
Сказал(а) спасибо: 431
Поблагодарили 84 раз(а) в 53 сообщениях
Поинты: 16
Сообщение от komissar73 Посмотреть сообщение
Slawa4 спасибо, разобрался.
Коллеги для тех кто пользуется версией WSFR-3.8.6_3 выкладываю сет
для пары евра/бакс альпари микро 3.
За этот год со 100 баксов до 2000 при просадке 13%. Для тех кому 13% просадки много просто уменьшите ММ с 10 до нужного вам процента.
Сет проходит с 1999 года.
Всем профитов на следующей неделе.
Спасибо за сет!
Вот прогнал у себя в тестере на демо-счете Альпари - см аттач
Начальный депозит 10000.00 Чистая прибыль 77326.18 Общая прибыль 113457.48 Общий убыток -36131.30
Максимальная просадка 10996.21 (27.23%) Относительная просадка 27.23% (10996.21)
То есть прибыль в 3 раза ниже, просадка в 2 раза выше.
Чем это может быть вызвано, подскажите? Спасибо.
Вложения:
Тип файла: zip Komissar73-20110717-eur_usd_wsfr_3.8.6_3-darfsAlpariDemo.zip (31.5 Кб, 116 просмотров)
darfs вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
photolaz (02.08.2011)
Старый 17.07.2011, 10:16   #1217 (permalink)
Заблокирован
 
Аватар для SLAWA3
 
Регистрация: 15.04.2011
Адрес: г.Кострома
Сообщений: 624
Репутация: 632
SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 -
Сказал(а) спасибо: 0
Поблагодарили 422 раз(а) в 141 сообщениях
Поинты: 0
А как можно лучше сделать по-другому? (Сразу постараюсь по другому и переделать -- если смогу... )[/QUOTE]

убрать значения переменных оставив ток их назначение а в цикле проставить значения..( приравнять уже к чему то соответственно )
SLAWA3 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
darfs (17.07.2011)
Старый 17.07.2011, 11:14   #1218 (permalink)
Активный участник
 
Аватар для darfs
 
Регистрация: 12.12.2010
Сообщений: 404
Репутация: 85
darfs
Сказал(а) спасибо: 431
Поблагодарили 84 раз(а) в 53 сообщениях
Поинты: 16
Сообщение от slawa4 Посмотреть сообщение
А как можно лучше сделать по-другому? (Сразу постараюсь по другому и переделать -- если смогу... )
убрать значения переменных оставив ток их назначение а в цикле проставить значения..( приравнять уже к чему то соответственно )[/QUOTE]

Вот сделал вариант. Если так и нужно, могу сделать и CloseOrders
и выслать обе в файле, чтоб Tab не сбивался
Только, вроде в последней версии Пирата эти принты были убраны -
может намеренно, чтоб лог не засорять?
Еще вопрос - а для трала изменятся эти функции?... Если да, то сразу
надо переписать?....


Скрытый текст

//+--------------------------------------------------------------------------------------------------------------+
//| ModifyOrders. Модификация ордеров в безубыток. (Правил darfs 2011-07-17)
//+--------------------------------------------------------------------------------------------------------------+
void ModifyOrders() {
//+--------------------------------------------------------------------------------------------------------------+

bool TicketModify; //--- Закрытие ордера
int total = OrdersTotal() - 1;
int ModifyError ;
int ModifyTicketID ;
int ModifyOrderType ;
//---
for (int i = total; i >= 0; i--) { //--- Счетчик открытых ордеров
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ModifyError = GetLastError();
if (WriteDebugLog)
Print("Произошла ошибка во время выборки ордера N ",i," Причина: ", ErrorDescription(ModifyError));

} else {
ModifyTicketID = OrderTicket();
ModifyOrderType = OrderType();
if (ModifyOrderType == OP_BUY) {
if (OrderMagicNumber() == MagicNumber||OrderMagicNumber() == MagicNumber1 && OrderSymbol() == EASymbol&&OrderStopLoss()==0) {
TicketModify = OrderModify(OrderTicket(), OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()- StopLoss*Point*K,Digits), NormalizeDouble(OrderOpenPrice()+TakeProfit*Point*K,Digits), 0, Blue);
if (!TicketModify) {
ModifyError = GetLastError();
if (WriteDebugLog)
Print("Произошла ошибка во время модификации ордера BUY - установки TP и SL(", ModifyTicketID, "). Причина: ", ErrorDescription(ModifyError));
}
}
}
if (ModifyOrderType == OP_SELL) {
if (OrderMagicNumber() == MagicNumber||OrderMagicNumber() == MagicNumber1 && OrderSymbol() == EASymbol&&OrderStopLoss()==0) {
TicketModify = OrderModify(OrderTicket(), OrderOpenPrice(),NormalizeDouble(OrderOpenPrice()+ StopLoss*Point*K,Digits), NormalizeDouble(OrderOpenPrice()-TakeProfit*Point*K,Digits), 0, Blue);
if (!TicketModify) {
ModifyError = GetLastError();
if (WriteDebugLog)
Print("Произошла ошибка во время модификации ордера SELL - установки TP и SL(", ModifyTicketID, "). Причина: ", ErrorDescription(ModifyError));
}
}
}
//--- Модификация ордера на покупку
if (ModifyOrderType == OP_BUY) {
if (OrderMagicNumber() == MagicNumber||OrderMagicNumber() == MagicNumber1 && OrderSymbol() == EASymbol) {
if (Bid - OrderOpenPrice() > SecureProfitTriger * pp && MathAbs(OrderOpenPrice() + SecureProfit * pp - OrderStopLoss()) >= Point) {
//--- Модифицируем ордер
TicketModify = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() + SecureProfit * pp, Digits), OrderTakeProfit(), 0, Blue);
if (!TicketModify){
ModifyError = GetLastError();
if (WriteDebugLog)
Print("Произошла ошибка во время модификации ордера BUY - перенос в безубыток (", ModifyTicketID, "). Причина: ", ErrorDescription(ModifyError));
}
}
}
} //--- Закрытие if (OrderType() == OP_BUY)

//--- Модификация ордера на продажу
if (ModifyOrderType == OP_SELL) {
if (OrderMagicNumber() == MagicNumber||OrderMagicNumber() == MagicNumber1 && OrderSymbol() == EASymbol) {
if (OrderOpenPrice() - Ask > SecureProfitTriger * pp && MathAbs(OrderOpenPrice() - SecureProfit * pp - OrderStopLoss()) >= Point) {
//--- Модифицируем ордер
TicketModify = OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice() - SecureProfit * pp, Digits), OrderTakeProfit(), 0, Red);
if (!TicketModify){
ModifyError = GetLastError();
if (WriteDebugLog)
Print("Произошла ошибка во время модификации ордера SELL - перенос в безубыток (", ModifyTicketID, "). Причина: ", ErrorDescription(ModifyError));
}
}
}
} //--- Закрытие if (OrderType() == OP_SELL)
} //--- Закрытие else {
} //--- Закрытие for (int i = total - 1; i >= 0; i--)
}
[свернуть]

Последний раз редактировалось chocolate; 17.07.2011 в 12:28.
darfs вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 17.07.2011, 11:16   #1219 (permalink)
Активный участник
 
Аватар для darfs
 
Регистрация: 12.12.2010
Сообщений: 404
Репутация: 85
darfs
Сказал(а) спасибо: 431
Поблагодарили 84 раз(а) в 53 сообщениях
Поинты: 16
[QUOTE=slawa4;278906]
Сообщение от slawa4 Посмотреть сообщение
Я так понял, что ошибка может быть такая:
void ModifyOrders() {

изменил . вставил в цикл тип и тикет ну и ещё что то добавил ... что то подчистил ...
Выше, выслал скорректированный вариант вашей функции....

Но проблема в том, что я хочу пробовать трал, а в этой версии
программы его нет...

см также выше
http://forexsystemsru.com/showthread...926#post278887
Спасибо!

Последний раз редактировалось darfs; 17.07.2011 в 11:19.
darfs вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 17.07.2011, 12:09   #1220 (permalink)
Заблокирован
 
Аватар для SLAWA3
 
Регистрация: 15.04.2011
Адрес: г.Кострома
Сообщений: 624
Репутация: 632
SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 - SLAWA3 -
Сказал(а) спасибо: 0
Поблагодарили 422 раз(а) в 141 сообщениях
Поинты: 0
[lang=af]bool TicketModify; //--- Закрытие ордера
int total = OrdersTotal() - 1;
int ModifyError ;
int ModifyTicketID ;
string ModifyOrderType ;
//---
for (int i = total; i >= 0; i--) { //--- Счетчик открытых ордеров
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ModifyError = GetLastError(); // это перед принтами что ниже как у вас но можно и их выкинуть...
ModifyTicketID = OrderTicket();
ModifyOrderType = OrderType();
if (OrderType() == OP_BUY) { .............

так давайте тоже выкинем эти никчёмные принты...
я чичас с чужого компа ( нет эксперта на нём ) так что целиком файл эксперта без принтов выложить не могу.. буду дома - выложу... и заодно прикручу трал чуть покорректнее чем в пробных версиях с тралом... ток на мой взгляд от него толку - чуть ![/lang]

Последний раз редактировалось SLAWA3; 17.07.2011 в 12:37.
SLAWA3 вне форума   Ответить с цитированиемОтветить с цитированием  
Ответ


Опции темы

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

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



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


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