Просьба о написании советника

 

Добрый день!

Есть мысль, концепция автоматической торговой системы. Проблема - не достаточно знаний в области программирования. Поэтому прошу помочь, кто может.

Идея (в упрощенном виде!) такова: если сделок открытых нет, и если пробило 12 часов дня, проверяется, какой была бы прибыль/убыток, если сутки назад открылась сделка на продажу и закрылась ровно через 3 часа. (Думаю, сделать это как разницу между Open[24] и Open[21] минус усредненный спрэд). Если смоделированный убыток достигает некоторого уровня, например, -20 пунктов, то открываем сделку на продажу и держим 3 часа, и так делаем 5 дней подряд... То есть открытие в 12, закрытие в 15 00. Но при этом, первичное условие может не выполниться уже на второй день, если наша реальная сделка оказалась прибыльной, а по условию надо открывать сделки ровно 5 дней подряд. После чего, снова ждать сигнала на открытие сделки. В этом проблема, не знаю, как прописать два цикла.

Если кто-то сможет помочь, вышлет описанный код, то с удовольствием поделюсь полной концепцией с точными параметрами.

С уважением!

 

>> если сутки назад открылась сделка на продажу (A) и закрылась ровно через 3 часа (B) и при этом 

>> если сделок открытых нет (не-C), и если пробило 12 часов дня (D), проверяется, какой была бы прибыль/убыток (Е)

[ (А & В) & (Не-С &  D) --> E ]

Ну а если закрылась не ровно через три часа, если закрылась через два с гаком, или через три с гаком, или через 4 и более часов, что тогда?  Как программер должен догадываться что приказывать советнику в коде? Как советник должен обрабатывать нестандартные ситуации типа этой? 

>> Если смоделированный убыток (?) достигает некоторого уровня, например, -20 пунктов, то открываем сделку на продажу и держим 3 часа, и так делаем 5 дней подряд... 

Предположим программист сможет сделать код, который отличит смоделированный убыток от того, который реально получен по последним икс ордерам. НО! Как программист должен догадываться о том, по какому алгоритму советнику предстоит моделировать убыток? Вообще, каков тут алгоритм моделирования?

>> Но при этом, первичное условие может не выполниться уже на второй день, если наша реальная сделка оказалась прибыльной, а по условию надо открывать сделки ровно 5 дней подряд.

О каком первичном условии идёт речь? Какое из условий нужно назвать первичным, чтоб смысл сказанного Вами стал понятен программеру?

>> Если кто-то сможет помочь, вышлет описанный код, то с удовольствием поделюсь полной концепцией с точными параметрами.

Знаете, исходя из такого формулирования условий задачи, даже если кто-то и захочет сделать Вам советника, то он попросту не сможет этого - не сможет потому, что не будет знать что конкретно нужно программировать.

Удачи Вам в поиске альтруиста :) 

 
drknn:

[ (А & В) & (Не-С & D) --> E ]

Ну а если закрылась не ровно через три часа, если закрылась через два с гаком, или через три с гаком, или через 4 и более часов, что тогда? Как программер должен догадываться что приказывать советнику в коде? Как советник должен обрабатывать нестандартные ситуации типа этой?

Предположим программист сможет сделать код, который отличит смоделированный убыток от того, который реально получен по последним икс ордерам. НО! Как программист должен догадываться о том, по какому алгоритму советнику предстоит моделировать убыток? Вообще, каков тут алгоритм моделирования?

О каком первичном условии идёт речь? Какое из условий нужно назвать первичным, чтоб смысл сказанного Вами стал понятен программеру?

Знаете, исходя из такого формулирования условий задачи, даже если кто-то и захочет сделать Вам советника, то он попросту не сможет этого - не сможет потому, что не будет знать что конкретно нужно программировать.

Удачи Вам в поиске альтруиста :)


Спасибо за ответ!

Пройдусь еще раз по основным пунктам.

1. надо чтобы советник понял, какой была бы прибыль или убыток, если сделка открылась сутки назад (например, всегда проверяется 12 часов дня) на продажу и закрылась через 3 часа. я же говорю, это можно сделать как Open[24] минус Open[21] минус усредненный спрэд. Это легко. Советник фиксирует прибыль/убыток от этой виртуальной сделки. Все же просто!

2. если условие по прибыли/убытку удовлетворилось, надо, что советник открыл сделку, и на следующий день открыл сделку, и так всю рабочую неделю. Это уже не просто. Потому что если советник открыл фактическую сделку, то на следующий день он уже не должен проверять условие из пункта 1. Он должен пять раз открыть сделку. И после этого, он опять возвращается к пункту 1 - читай - каждый день в 12 часов проверяет что получится, в результате Open[24] минус Open[21] минус усредненный спрэд.

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

 
alexeymosc:


Спасибо за ответ!

Пройдусь еще раз по основным пунктам.

1. надо чтобы советник понял, какой была бы прибыль или убыток, если сделка открылась сутки назад (например, всегда проверяется 12 часов дня) на продажу и закрылась через 3 часа. я же говорю, это можно сделать как Open[24] минус Open[21] минус усредненный спрэд. Это легко. Советник фиксирует прибыль/убыток от этой виртуальной сделки. Все же просто!

2. если условие по прибыли/убытку удовлетворилось, надо, что советник открыл сделку, и на следующий день открыл сделку, и так всю рабочую неделю. Это уже не просто. Потому что если советник открыл фактическую сделку, то на следующий день он уже не должен проверять условие из пункта 1. Он должен пять раз открыть сделку. И после этого, он опять возвращается к пункту 1 - читай - каждый день в 12 часов проверяет что получится, в результате Open[24] минус Open[21] минус усредненный спрэд.

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


Я могу еще проще сказать. Советник проверяет, что получится если Open[24] минус Open[21] минус усредненный спрэд. Если результат <= - 30 пунктов, генерируется сигнал на открытие сделки. Сделка закрывается через 3 часа ровно (плюс минус неск. секунд. Этот алгоритм конечно же уже есть у меня, все просто!!!). Но советник должен, согласно моей идеи, открывать сделку несколько дней подряд, игнорируя на это время изначальный сигнал на открытие сделки. Вот как сделать так, чтобы советник открывал в течение недели сделки, а потом снова сбрасывался на проверку условия об открытии, я не знаю.
 

if(DayOfWeek() !=1) OrderSend(..........)

если день недели не равен понедельнику открываем ордер

 
Если Вы сами можете набрать код, то попробую изложить логику работы скрипта как сам понял.
Проверить наличие в истории вчерашней, или в понедельник - пятничной реальной сделки.
Если таковой нет, то считайте свой виртуальный убыток и принимайте решение открываться или нет.
Если открывается реальная сделка (первая в серии), то присваем ордеру Magic = iTime(Symbol(), PERIOD_H1, 0); (возможны варианты, но магик в начале серии каждый раз другой)
В случае наличия в истории реальной сделки за прошлый торговый день, выдёргиваем из него магик и проверяем сколько вообще в истории ордеров с этим идентификатором. Если меньше 5 то открываемся сегодня тоже с тем же магиком.
И далее ежедневно по тексту со второй строчки:))
Могу и код набрать, но не в ближайшие дни.
Удачи!
 

Спасибо! Вот - я вижу, что вы поняли мою мысль. Надо чтобы советник, после того как срабатывает триггер на открытие реальной сделки, начинал считать реальные сделки и не останавливался их открывать (каждый день в одно время и одной продолжительности) до достижения некоторого количества подряд идущих сделок (я сказал 5 но можно и другое число взять).

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

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