Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Блин, чувак, ты реально не понимаешь что происходит или пытаешься таким образом срезать углы?
У любой панели принципиальным и наиболее сложным моментом является отображение консистентного состояния. Если ордер открыт - то он должен отображаться, если его нет на вкладке "торговля", то его не должно быть и на панели. Это элементарно и "очень просто" концептуально. Но вот что бы сделать это "очень просто" нужно что бы панель была основана на модели состояний. У тебя ничего такого нет, а есть некая локальная неконсистентная кривая база база данных на стрингах засунутая в пользовательские объекты:
И вот ты сейчас пытаешься нам доказать, что проблемы никакой нет, что это все высасано из пальца. Что неотображаемые ордера в твоей таблице - это нормально. Что ордера которые есть в твоей таблице, но которые давно закрыты по факту - это тоже нормально. И вообще, у тебя все так нормально и хорошо, вот только количество позиций ограничено до 20.
Ты пойми, что вопрос в реализации фиксирования открытия/закрытия ордера штатными средствами. Это не входит в механизм самой таблицы. Это ПОЛЬЗОВАТЕЛЬСКИЙ механизм!
Вместо того, чтобы критиковать движок и реализацию таблицы, лучше правильно написать механизм фиксирования открытия и закрытия ордера.
И все заработает ПРАВИЛЬНО!
4. Если правильно написать эти циклы по ордерам, то таблица будет работать правильно....
Я просто забыл,...
Но это не значит, что сама динамичная таблица не работает.
Блин, пользователь наверное знаком с документацией, он знает что и в какой массив засовывать и как обновлять все это? Я просил написать тебя полностью рабочую демонстрацию что бы именно по твоему коду понять как и что делается и куда и что засовывается, ты же подтерся моим ТЗ и вернул его мне обратно в виде криво работающей таблицы!
Я прям чувствю большую кучу принебрежения в тебе, в твоем коде и во всем том, что ты делаешь, вроде как для людей, но как только дело касается конкретики, начинается фигня. Сделай что-то одно, небольшое но хорошо и качественное. Вот ты говоришь, все мол, просто решается, элементарно. Но почему-то сделал решение, в которой ничего такого нет. Что мешало тебе сделать все эти простые фишки за две недели?
Извини за негативные эмоции. Просто ты меня разочеровал. Я надеелся увидеть большее и лучшее. Исправь пожалуйста свою демо-версию. Сделай ее хорошо, качественно согласно заявке и без этих вот: "да это элементарно, нужно вот здесь подкрутить". Предложи решение из коробки, которое можно было бы протеситрвать.
Василий, не нужно эмоций. Никакого пренебрежения у меня и в помине небыло. Просто я давно не работал с ордерами и забыл как это делать. Но это, - пользовательская задача.
Но я все равно это сделаю. Раз ты считаешь это столь сложным...
Василий, не нужно эмоций. Никакого пренебрежения у меня и в помине небыло. Просто я давно не работал с ордерами и забыл как это делать. Но это, - пользовательская задача.
Но я все равно это сделаю. Раз ты считаешь это столь сложным...
Вот и сделай. Сложным я это не считаю, но повторюсь, что документации к твоему движку нет, и какой массив обновлять с какими параметрами я не знаю. Нужна именно демонстрация в виде полностью законченного решения. Только так можно понять что и как у тебя вызывается да и как работает. Именно это я от тебя и ожидал. Когда сделаешь - тогда и обсудим технические решения. Да и вообще, воспринимай стороннюю критику, даже такюу эксперсивную как положительную, т.к. отрицательный отзыв как правило более ценен чем положительный.
Я поясню, как работает динамичная таблица:
1. При нажатии на кнопки buy/sell, сигнал поступает в файл External Connection в блок case самой кнопки.
Нужно знать, что новый ряд открывается автоматически, если в функцию E_Main_form_1__Price(ticket, OrderOpenPrice()); послылается новый тикет.
Если тикет уже существует, то нужный ряд выберется АВТОМАТИЧЕСКИ, и туда установится новое значение.
Для закрытия ряда таблицы нужно вызвать функцию E_Main_form_1_CLOSE_ROW___Orders_table(ticket);
ticket - имеется ввиду тикет ряда.
Я поясню, как работает динамичная таблица:
1. При нажатии на кнопки buy/sell, сигнал поступает в файл External Connection в блок case самой кнопки.
Нужно знать, что новый ряд открывается автоматически, если в функцию E_Main_form_1__Price(ticket, OrderOpenPrice()); послылается новый тикет.
Если тикет уже существует, то нужный ряд выберется АВТОМАТИЧЕСКИ, и туда установится новое значение.
Для закрытия ряда таблицы нужно вызвать функцию E_Main_form_1_CLOSE_ROW___Orders_table(ticket);
ticket - имеется ввиду тикет ряда.
Петр, сделай в таймере цикл for, который бы перебирал открытые ордера и посылал изменения в списке ордеров в твою таблицу. Также сделай так, что бы профит ордера в твоей таблице также менялся динамически.
Я поясню, как работает динамичная таблица:
1. При нажатии на кнопки buy/sell, сигнал поступает в файл External Connection в блок case самой кнопки.
Нужно знать, что новый ряд открывается автоматически, если в функцию E_Main_form_1__Price(ticket, OrderOpenPrice()); послылается новый тикет.
Если тикет уже существует, то нужный ряд выберется АВТОМАТИЧЕСКИ, и туда установится новое значение.
Для закрытия ряда таблицы нужно вызвать функцию E_Main_form_1_CLOSE_ROW___Orders_table(ticket);
ticket - имеется ввиду тикет ряда.
Это кривая реализация, и вот тому ответ:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Мой подход. Ядро - Движок.
Vasiliy Sokolov, 2019.01.09 13:33
Петр, извини, но твоя работа не принимается, т.к. то, что ты прислал - редкостная халтура. Извини но кажется я единственный кто запустил то, что ты прислал, и кроме меня никто экспертизу этого не сделает.
Итак по-порядку, задание было следующее:
Что я вижу вместо этого:
Во-первых, сделки можно открыть только в твоей панели, нажимая кнопку buy/sell. Если позицию открыть через стандартное окно, то сделка не появляется.
....
Допустим, у нас несколько динамичных таблиц.
В файле Connection Properties автоматически напечатаются функции-обертки для работы с этими таблицами.
Вот наглядный пример. Мы нарисовали динамичную таблицу Orders_table.
Вот какие функции -обертки мы получили:
Обращаю внимание: каждая обертка в конце своего названия имеет название колонки дин.таблицы.
Конкретный элемент не указывается, только Magic ряда.
То есть, чтобы установить новое значение в ячейку существующего ряда, нужно послать его маджик и значение.
Чтобы установить новое значение в ячейку несуществующего ряда, нужно послать его маджик и значение. Ряд будет автоматически создан.
Чтобы уничтожить ряд в таблице, нужно вызвать обертку со словами CLOSE_ROW
Например:
И передать в нее маджик ряда, который нужно закрыть.
Все.
Петр, сделай в таймере цикл for, который бы перебирал открытые ордера и посылал изменения в списке ордеров в твою таблицу. Также сделай так, что бы профит ордера в твоей таблице также менялся динамически.
Хорошо, я напишу циклы и код работы с ордерами, но передам тебе, чтобы ты сам поставил, потому что я уже переделал движок на связь через ресурсы и тестирую это. Сейчас не могу вернуть прежнюю связь, а новую еще не доделал.
Хорошо, я напишу циклы и код работы с ордерами, но передам тебе, чтобы ты сам поставил, потому что я уже переделал движок на связь через ресурсы и тестирую это. Сейчас не могу вернуть прежнюю связь, а новую еще не доделал.
Поработай с той версией движка что ты прикрепил в качестве демонстрации.
То есть, чтобы установить новое значение в ячейку существующего ряда, нужно послать его маджик и значение.
Вроде все просто. Если твой подход работает как я думаю, то не вижу ни каких проблем ни с динамической таблицей ни с обновлением значений позиций через таймер. Петр, так зачем было горбатого лепить с самого начала?;)