[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 805

 
Здравствуйте! Помогите пожалуйста! Есть функция, которая возвращает при каждом тике значение OrderCloseTime последней закрытой позиции! Как мне сопоставить это значение с предыдущим значением OrderCloseTime, и если оно больше - произвести некоторые последующие действия. Спасибо заранее!
 
dimon74:
Здравствуйте! Помогите пожалуйста! Есть функция, которая возвращает при каждом тике значение OrderCloseTime последней закрытой позиции! Как мне сопоставить это значение с предыдущим значением OrderCloseTime, и если оно больше - произвести некоторые последующие действия. Спасибо заранее!
в смысле с предыдущем? Ты хочешь более позднее время сравнить с более ранним? Очевидно ведь что более новое всегда будет больше чем более старое!
 
Techno:
в смысле с предыдущем? Ты хочешь более позднее время сравнить с более ранним? Очевидно ведь что более новое всегда будет больше чем более старое!
Да. Но как мне на основании этого сравнения произвести некоторые последующие действия?
 
dimon74:
Да. Но как мне на основании этого сравнения произвести некоторые последующие действия?
ты понимаешь, что условие (если вчера это прошедшее, а сегодня это настоящее) - не имеет смысла? тк всегда одно и тоже будет возвращаться.
 
PapaYozh:

Сложно сказать что у Вас там изображено. Лично я не вижу чтобы "Позиция Buy закрылась ни с того ни с сего на уровне ТейкПрофит уже закрытой позы Sell". Тот Sell, под которым стрелка нарисована, вроде как никаких пунктирчиков исходящих не содержит.

У Вас в коде OrderCloseBy() не используется?

Странно, что вам не видно... Ладно - подкорректировал изображение:


1 - это поза с тикетом 88

2 - отложенный SellStop с тикетом 89

3 и 4 - позы Sell

3.t и 4.t - это чёрточки, которые указывают на уровни Тейков уже закрытых позиций Sell 3 и 4

3.1 и 4.1 - точки закрытия позиций 3 и 4, причём поза Sell 3 закрылась с убытком

1.1 - это есть точка закрытия позы Buy с тикетом 88 - там проведена бирюзовая вертикальная линия и горизонтальная линия уровня цены Bid,
которая как раз пересекает красную черточку 3.t - точка, в которой находился Тейк закрытой позы Sell 3...

OrderCloseBy() я не использую, хотя изначально была мысль...

Суть такая: при закрытии серии убыточных позиций, проверяется возможность открытия новой позы и если средств остаётся заданное количество,
то с последней убыточной снимается стоп (это на рисунке видно - голубая черточка под позой Buy) и выставляется отложка.
При преобразовании отложенного в рыночный запоминаются тикеты этих двух позиций (Buy (тикет 88) и Sell (тикет 89)) и в дальнейшем они "ведутся" уже как совокупная позиция
и закрываются по совокупной прибыли (убытку). При этом торговля в Buy запрещена до закрытия этих двух позиций, а в Sell - разрешена в любом случае.

И вот тут-то и происходит казус - поза Buy закрывается сама, не предусмотренным в коде способом... Даже понятия не имею каким... Сразу же после этого в журнале
образуется целый ворох ошибок - вылезают на каждом тике. Блин... закрыл уже... по-моему, если память не изменяет - ошибка 5048... там неверный тикет для OrderClose()
Что-то в этом роде... ну и далее ещё одна ошибка модификации ордера - тоже пишет неопознанный тикет #88

Третьи сутки ищу...

 
dimon74:
Здравствуйте! Помогите пожалуйста! Есть функция, которая возвращает при каждом тике значение OrderCloseTime последней закрытой позиции! Как мне сопоставить это значение с предыдущим значением OrderCloseTime, и если оно больше - произвести некоторые последующие действия. Спасибо заранее!
В данном условии у вас всегда будет возвращаться одно и то же значение. Это будет время закрытия последней закрытой позы. Как только откроется новая позиция а потом закроется,
вот только тогда ваша функция начнёт возвращать уже другое значение.

Очевидно, что вам нужно ещё и время закрытия предпоследней позиции, чтобы можно было что-то с чем-то сравнивать. Или каждый раз запоминать время, возвращаемое вашей функцией в какой-либо переменной datetime или int и как только новое значение станет не равно предыдущему значению, возвращаемому вашей функцией - вот это и будет сигналом на
"... произвести некоторые последующие действия..."
 
PapaYozh:

Могу Вам предложить внимательно прочитать описание функции OrderSelect().

Параметр pool игнорируется, если ордер выбирается по номеру тикета

Ну ёкарный-бабай!!! Семён-Семёныч!!!

Ведь, блин, всегда же справка терминала перед глазами!!! Три ночи убил на простейшее!!! А в справку (именно в данное место) так и не заглянул... :)

Правильно говорил Матроскин: "Шарик, ты - балбес...". Вот так вот я за три ночи в Шарика превратился... :)

Спасибо огромнейшее! Меня в приличное место носом тыкнули и я чрезмерно рад и благодарен... :) Правда - спасибо...
Э-э-эх-х-х... р-р-разгуляй-душа!!! Поедем теперь дальше наконец-то... :)

 
artmedia70:
В данном условии у вас всегда будет возвращаться одно и то же значение. Это будет время закрытия последней закрытой позы. Как только откроется новая позиция а потом закроется,
вот только тогда ваша функция начнёт возвращать уже другое значение.

Очевидно, что вам нужно ещё и время закрытия предпоследней позиции, чтобы можно было что-то с чем-то сравнивать. Или каждый раз запоминать время, возвращаемое вашей функцией в какой-либо переменной datetime или int и как только новое значение станет не равно предыдущему значению, возвращаемому вашей функцией - вот это и будет сигналом на
"... произвести некоторые последующие действия..."
Да. Логика мне понятна, только можно ли её воплотить в коде, и если можно то как?
 
Dersu:                Здраствуйте форумчане.

                Тут мне дедки под подьездом подсказали-Медовый Спас седне. С праздничком всех.

                А я со своим... Drknn грит показания индикаторов возможно обрабатывать.

                Можно-ли сделать сумму A/D за заданый период и так-же сумму OBV, а потом их поделить между собой(OBV в числителе)

               В знаменателе A/D + коэффициент с выводом в настройки.

                Ноль посредине, границы плавающие.

               Сумма-НЕ ИТОГ. Каждое движение по абсолютной величине. 

               А я вам разворот по евре 

Пишем индюк с одним-единственным буфером. Сначала сымаем показания одного индикатора и вгоняем его в переменную. Потом сымаем показания другого и тоже вогняем в переменную. Затем суммируем оба показания, делим надвое и результат вгоняем в индтикаторный буфер. Просто - как два пальца об асфальт. Не пойму в чём проблема-то? В незнании языка, ну дык заводим отдельную ветку, в которой пишем, мол, требуется индюк - готов заплатить за его изготовление. Техзадание - вот оно. Делов то...

Проблема с деньгами? Читаем букварь и программируем самостоятельно. Или вариант нумбер два - в той же ветке пишем, мол, есть ли желающие поработать забесплатно - идея - просто суперская, тестировал пять лет - работает безоговорочно - вот номер счёта, вот инвестпароль - полюбуйтесь - задолбало работать вручную - хочу автопилот. Точка!

 

       СПАСИБО за внимание, drknn.

       Думал тут на досуге - сыровата моя вторая идея.

       Вот первая идея была результативнее - но низя так низя.

       А вторая - то от безызходности один из вариантов выхода из ситуации.

       Еще поприкидую. 

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