Ошибки, баги, вопросы - страница 3132

 
Yury Lemeshev #:

Есть одна проблема, появляется хаотично и изредка.

Появляется при работе в тестере с несколькими валютами.

В каждом цикле запрашиваю актуальные цены по символам. И как будто по если по каким то причинам не получает тестер котировки по определенному символу, то используются котировки ранее полученные с другого символа.

У меня должна открыться позиция если цена станет больше определенной. Но используя не верные данные с другого символа происходит открытие.

Символ EURCAD если цена будет больше 1.45117 то открываем. 1.74425>1.45117? да больше, но это цена другого символа.

Из 500 ордеров обнаружено 7 ошибочных. 

Могу только предположить, запрос цен с символа, ответ кидается в одну и туже переменную окружения. На вскидку поставить проверку, на если равно предыдущему значению. Если это другой символ равно крайне редко.

 
Yury Lemeshev #:

Нет ошибке в коде, код переписывался чторбы устранить ошибку, и ошибка не появляется регулярно, она абсолютно хаотична

Чудес на белом свете не бывает… Вот один из телепатов ещё не в запое и тоже говорит об ошибке.

 
Yury Lemeshev #:

Есть одна проблема, появляется хаотично и изредка.

Появляется при работе в тестере с несколькими валютами.

В каждом цикле запрашиваю актуальные цены по символам. И как будто по если по каким то причинам не получает тестер котировки по определенному символу, то используются котировки ранее полученные с другого символа.

У меня должна открыться позиция если цена станет больше определенной. Но используя не верные данные с другого символа происходит открытие.

Символ EURCAD если цена будет больше 1.45117 то открываем. 1.74425>1.45117? да больше, но это цена другого символа.

Из 500 ордеров обнаружено 7 ошибочных. 

Ответ на вопрос в самом же вопросе. Робот может использовать неактуальные котировки или неверные данные с другого символа. Я конечно не знаю, в чём задумка. Но в коде явно идёт что-то не так...

 
Mihail Matkovskij #:

Ответ на вопрос в самом же вопросе. Робот может использовать неактуальные котировки или неверные данные с другого символа. Я конечно не знаю, в чём задумка. Но в коде явно идёт что-то не так...

В коде все так. В логике пробелы. Мерцающие косяки вообще сложно предугадать и отгородится от них.

 
2021.12.31 22:14:19.911 2019.01.24 18:50:09   -2117- EURGBP 0.86993
2021.12.31 22:14:19.912 2019.01.24 18:50:10   -2117- EURGBP 0.86994
2021.12.31 22:14:19.912 2019.01.24 18:50:10   -2117- EURGBP 1.5969
2021.12.31 22:14:19.912 2019.01.24 18:50:10   instant buy 0.01 EURGBP at 0.86993 (0.86985 / 0.86993 / 0.86985)
2021.12.31 22:14:19.912 2019.01.24 18:50:10   deal #13 buy 0.01 EURGBP at 0.86993 done (based on order #13)
2021.12.31 22:14:19.912 2019.01.24 18:50:10   deal performed [#13 buy 0.01 EURGBP at 0.86993]
2021.12.31 22:14:19.912 2019.01.24 18:50:10   order performed buy 0.01 at 0.86993 [#13 buy 0.01 EURGBP at 0.86993]

Каждый цикл нормально, но в моменте подставляются данные от другого символа. 1.5969>0.88506 да, позиция открывается. Это не ошибка кода. Это баг тестера.

euSY01b=0;euSY01a=0;
   if(SymbolInfoDouble(euSY01,SYMBOL_BID,euSY01b)==true && SymbolInfoDouble(euSY01,SYMBOL_ASK,euSY01a)==true && euSY01b>0 && euSY01a>0)
      {
      GlobalVariableSet("["+MAGICs+"] "+euSY01+" LAST BID",euSY01b);GlobalVariableSet("["+MAGICs+"] "+euSY01+" LAST ASK",euSY01a);
      }
 
Valeriy Yastremskiy #:

В коде все так. В логике пробелы.Мерцающие косяки вообще сложно предугадать и отгородится от них.

а что по вашему бывает логика без кода?

 
Yury Lemeshev #:
2021.12.31 22:14:19.911 2019.01.24 18:50:09   -2117- EURGBP 0.86993
2021.12.31 22:14:19.912 2019.01.24 18:50:10   -2117- EURGBP 0.86994
2021.12.31 22:14:19.912 2019.01.24 18:50:10   -2117- EURGBP 1.5969
2021.12.31 22:14:19.912 2019.01.24 18:50:10   instant buy 0.01 EURGBP at 0.86993 (0.86985 / 0.86993 / 0.86985)
2021.12.31 22:14:19.912 2019.01.24 18:50:10   deal #13 buy 0.01 EURGBP at 0.86993 done (based on order #13)
2021.12.31 22:14:19.912 2019.01.24 18:50:10   deal performed [#13 buy 0.01 EURGBP at 0.86993]
2021.12.31 22:14:19.912 2019.01.24 18:50:10   order performed buy 0.01 at 0.86993 [#13 buy 0.01 EURGBP at 0.86993]

Каждый цикл нормально, но в моменте подставляются данные от другого символа. 1.5969>0.88506 да, позиция открывается. Это не ошибка кода. Это баг тестера.

тогда, перед входом поиском сигнала проверяйте символ на наличие синхронизации.

 
Mihail Matkovskij #:

а что по вашему бывает логика без кода?

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

 
Valeriy Yastremskiy #:

С наступившим!!!!

Спасибо. Вас также!

По сути вопроса, выше я написал, что нужно сделать. И тогда логика будет работать.

 
Mihail Matkovskij #:

тогда, перед входом поиском сигнала проверяйте символ на наличие синхронизации.

   if(SymbolIsSynchronized(euSY01)==true && SymbolInfoDouble(euSY01,SYMBOL_BID,euSY01b)==true && SymbolInfoDouble(euSY01,SYMBOL_ASK,euSY01a)==true && euSY01b>0 && euSY01a>0)

Если делать так, а в коде 7 таких строк для семи пар, то в обзоре рынка будут котировки только по одной валюте.


Причина обращения: