Подскажите, замучился совсем - страница 3

 
lna01:

Я пока только просмотрел код и наткнулся на такую вещь:

i - объявлена глобально. Вот она используется как счётчик цикла по ордерам. А вот внутри этого цикла вызывается функция FractalDOWN(). А вот внутри этой функции цикл и эта же i (раз она объявлена глобально) используется как счётчик цикла по барам.

Да, точно, проблема именно в этом.
 
Глобальная i - вот оно. Убрал её с глобального уровня, и всё заработало как часики. Спасибо болшое - урок получил просто королевский.
 
Нда, наверно я поторопился.
Изменил код советника, как вы и говорили. Убрал даже установку тейк-профита.
В тестере работает всё действительно как часики. На демосчёте - нет. Вот результат работы советника в тестере.

2007.08.28 03:08:02 2007.07.23 18:39 Динамит_1.3 XAU,M15: Советник деинициализирован (выключен совсем)
2007.08.28 03:08:02 2007.07.23 18:39 Fractal_Sounds XAU,M15: removed
2007.08.28 03:08:02 2007.07.23 18:39 Tester: order #2 is closed
2007.08.28 03:07:47 2007.07.23 16:00 Динамит_1.3 XAU,M15: modify #2 sell 0.20 XAU at 682.20 sl: 685.72 tp: 0.00 ok
2007.08.28 03:07:47 2007.07.23 16:00 Динамит_1.3 XAU,M15: open #2 sell 0.20 XAU at 682.20 ok
2007.08.28 03:07:47 2007.07.23 16:00 Динамит_1.3 XAU,M15: close #1 buy 0.20 XAU at 684.50 sl: 681.98 at price 682.20
2007.08.28 03:07:13 2007.07.23 09:45 Динамит_1.3 XAU,M15: modify #1 buy 0.20 XAU at 684.50 sl: 681.98 tp: 0.00 ok
2007.08.28 03:07:13 2007.07.23 09:45 Fractal_Sounds XAU,M15: loaded successfully
2007.08.28 03:07:13 2007.07.23 09:45 Динамит_1.3 XAU,M15: open #1 buy 0.20 XAU at 684.50 ok
2007.08.28 03:07:04 Динамит_1.3 inputs: Lot=0.2; TakeProfit=800; Zazor=2;
2007.08.28 03:06:53 Динамит_1.3 XAU,M15: loaded successfully

А вот что происходит в реалтайме на демосчёте.

2007.08.28 03:16:21 Динамит_1.3 XAU,M15: Ошибка вызвана из блока модификации Sell-ордеров (OrderModify)
2007.08.28 03:16:21 Динамит_1.3 XAU,M15: Описание ошибки: Неправильные стопы
2007.08.28 03:16:21 Динамит_1.3 XAU,M15: Модификация ордера № 0 вернула ошибку № 130
2007.08.28 03:16:19 Динамит_1.3 XAU,M15: XAU SL = 667.82
2007.08.28 03:16:19 Fractal_Sounds XAU,M15: initialized
2007.08.28 03:16:19 Fractal_Sounds XAU,M15: loaded successfully
2007.08.28 03:14:15 Динамит_1.3 XAU,M15: initialized
2007.08.28 03:14:15 Динамит_1.3 XAU,M15: Инициализация прошла успешно. Ждём свежую котировку.
2007.08.28 03:14:15 Динамит_1.3 XAU,M15 inputs: Lot=0.2; TakeProfit=800; Zazor=2; UseSound=true; NameSound="expert. wav";
2007.08.28 03:14:13 Динамит_1.3 XAU,M15: loaded successfully

Sell-ордер открыт по цене 666.10. Стоп-лосс советник попытался установить по цене SL = 667.82.
66782-66610=172 пункта.
Минимально допустимый уровень стоп-лосса (тейк-профита) = 0 пунктов

Вот параметры демосчёта - попробуйте сами (индикатор к советнику выложен в предыдущих постах)
Name : Gerkon
Email : non@mail.ru
Login : 80693
Password : j7matab
Investor : 2kemspt (read only password)

Серверы:
212.158.162.96:443
216.93.180.133:443 (Это новый сервер.)

Water House Capital Ltd.
http://www.whcapital.ru
tech.support@whcapital.ru
Файлы:
dinamit_1.zip  4 kb
 
На лайтфорексе советник с золотом работает нормально... Странно. ..
 
drknn:
На лайтфорексе советник с золотом работает нормально... Странно. ..
Проблема с брокером.
Надо узнавать на каком расстоянии можно ставить стопы, и можно ли вообще.
 

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

 
Да, в том-то и вся соль, что при работе с этим ДЦ можно програмно сначала установить ордер, но только без стоп-лосса и тейк-профита, и только после того, как ордер встал, мы можем установить эти стоп-приказы. Мы даже в сам ДЦ звонили, и нам вживую подтвердили эту информацию.
Единственное что меня тут смущает (друг подсказал), так это шаг изменения цены инструмента (в пунктах). Не встраивал я ни когда такое в код - как-то не нужно было.
Сейчас встрою проверку и в случае надобности коррекцию уровня стопа в соответствии с этим шагом. Интересно, чем всё это закончится.
 
Так и есть.
2007.08.28 13:00:28 MinStep QG,M15: Alert: QG digits = 3
2007.08.28 13:00:28 MinStep QG,M15: Alert: QG Минимальный шаг изменения цены инструмента = 0.005 pt

2007.08.28 13:01:48 MinStep FDAX,M15: Alert: FDAX digits = 1
2007.08.28 13:01:48 MinStep FDAX,M15: Alert: FDAX Минимальный шаг изменения цены инструмента = 0.5 pt

Ясно, что при таком шаге у меня идёт несовпадение цен! Теперь всё наконец-то встало на свои места. Мало того, что фрактал смещён на величину спреда, так от него ещё и стоп
смещается на 2, или иное количество пунктов.

Спасибо всем ОГРОМНОЕ - хороший получился урок. И, возможно, что не мне одному - может и кому-то ещё пригодится :)
 
Боюсь, это еще не все. В тестере-то работало "действительно как часики". Вновь возникает законный вопрос о достоверности результатов тестирования. Т.е., в некоторых случаях придется вручную редактировать заголовок FXT-файла в части, касающихся торговых настроек, если тестер почему-то этого не делает сам.
 
alexjou:
Боюсь, это еще не все. В тестере-то работало "действительно как часики". Вновь возникает законный вопрос о достоверности результатов тестирования. Т.е., в некоторых случаях придется вручную редактировать заголовок FXT-файла в части, касающихся торговых настроек, если тестер почему-то этого не делает сам.


Знаете, я как-то сделал тиковый индикатор и столкнулся с вообще непонятным явлением - в тестере он не работает, зато прекрасно работает в реале. Объяснения сему явлению я так и не смог найти.
Причина обращения: