http://forum.tradelikeapro.ru/index.php?topic=4885.msg92732#msg92732 [quote author=Старик link=topic=4885.msg92732#msg92732 date=1378029885] Из наиболее стремных первоочередных потенциальных проблем я выделил бы неконтролируемое последовательное неоднократное открытие ботом однонаправленных ордеров по одному (сохраняющемуся, длящемуся, не отмененному) сигналу на вход. Иначе говоря, бот получил/выработал сигнал на вход, ордер открылся и закрылся по стопу – и, если тот же сигнал на вход еще сохраняется (актуален), то бот обязан снова (повторно) открывать ордер. При этом при открытии, по одному и тому же сигналу на вход, у первого ордера максимальна вероятность получения прибыли и минимальна вероятность получения убытка по начальному стопу ордера. А вот на втором и последующем последовательных однонаправленных ордерах, наоборот, падает вероятность получить прибыль и растет вероятность получить убыток по стопу, установленному при открытии ордера. А поскольку бот предназначен для торгов на реальных деньгах, то неконтролируемое повторное открытие ордеров по одному входному сигналу должно быть исключено. А, контролируемо, должно осуществляться только согласно заранее сформулированных правил и ограничений пользователя. Очень быстрое, нерасчетное закрытие ордеров бота по стопу может происходить в нескольких случаях: 1) по расчетному начальному стопу ордера вследствие дребезжания курса, шипов, особенно на новостях (осенью мы этого всласть получим); 2) по стопу трала в случае, если пользователь задаст очень малый шаг трала; 3) по стопу трала в случае, если в трале будет баг и трал будет работать нештатно, в том числе непрерывно. Вследствие очень быстрого закрытия ордеров бота по стопу могут: 1) существенно возрастать количество повторно открываемых ордеров по одному сигналу на вход, 2) быть получены стопы, задаваемые при открытия ордера - в том числе несколько убытков подряд. 3) Нарушены требования конкретного ДЦ по средней длительности жизни ордера или минимальному среднему ходу курса после открытия ордера. ДЦ может создать проблемы, если много ордеров открывается и закрывается очень быстро. В общем, как по мне, повторным открытием ордеров по 1 сигналу надо жестко управлять. ------ Ключевые переменные контроля предшествующего входного сигнала и управления повторным открытием ордеров я бы объявил external - с отметкой в описании, что данные переменные служебные, используются ботом и пользователь изменять их не должен. Предлагаю это на всякий случай: например, на случай случайного отключения пользователем или необходимости перегрузки терминала – а также для обеспечения попытки применения бота на других активах и круглосуточной торговли с остановкой на выходные. Служебные external переменные бота никак не усложнят, но могут сделать для пользователей его применение более гибким и надежным. Также отмечу, что мне как пользователю было бы удобно видеть на экране инфу о предыдущем и текущем сигнале на вход, сколько и каких ордеров в рамках отработки старого сигнала на вход уже было открыто и может быть открыто еще. Это желательно для лучшего планирования торгов ботом, если в рынке есть признаки тренда – может, можно будет разрешить боту открыть дополнительные ордера или, наоборот, уменьшить разрешаемое количество ордеров, открываемых по направлению старого сигнала на вход. Еще раз уточню, что здесь речь не идет об опции доливки по тренду, когда в рынке может быть несколько (сетка) однонаправленных ордеров. Нет, здесь повторное открытие ордеров по продолжающемуся сигналу на вход, если ранее открытый по этому сигналу ордер закрылся по какому-то из стопов и надо решать открывать еще один ордер - или заданный пользователем лимит ордеров исчерпан и ордера более не будут открываться, пока индикаторы/бот не выработают новый (возможно, не обязательно противоположный?) сигнал на вход. Для управления процессом открытия повторных ордеров по 1 сигналу, имхо, могут понадобиться следующие управляющие переменные: 1) Пауза перед выставлением следующего ордера после закрытия предыдущего – 60 секунд? Задается пользователем. Опция блокирует слишком частое открытие ордеров по любой причине – в том числе при баге трала или слишком малом шаге трала, ошибочно заданном пользователем. (Некоторые ДЦ мониторят среднюю длительность сделки и могут иметь претензии, если в среднем ордера в рынке меньше какого-то времени. Данная опция здесь не поможет.) 2) максимальное количество обособленных однонаправленных ордеров, которые можно выставить по 1 сохраняющемуся сигналу на вход. Задается пользователем. Возможно, оптимально раздельно задавать разрешаемое количество бай и сэл ордеров. Возможно, при =0 контроль количества ордеров отключен – для включения =1 и более. 3) Количество выставлявшихся бай и сэл ордеров по одному сигналу на вход. Вычисляется ботом. Собственно, счетчики количества выставленных ордеров после закрытия предыдущих по стопу (трала, б/у или заданному при открытии ордера) – по 1 сохраняющемуся сигналу на вход, конечно. 4) Коэффициент коррекции объема повторных ордеров по 1 продолжающемуся сигналу. Задается юзером. Например, при коэффициенте 0.8 первый ордер по сигналу максимален, второй 0.8, третий 0.64 от максимального первого ордера. При =1 ордера одинаковы. Опция не обязательна, но вроде полезная.... 5) Переменная текущего сигнала на вход – в моменте (потиковый). Вычисляется ботом. Мне симпатичны значения переменной: 1 сигнал на покупку, 0 нет сигнала и -1 сигнал на продажу. Переменная для визуализации хода торгов и для сравнения с переменной продолжающегося сигнала. 6) переменная предыдущего (продолжающегося?) сигнала на вход, по которому был открыт предыдущий ордер. Вычисляется ботом. Переменная ключевая, надо исчерпывающе продумать все ситуации изменения ее значения. На первый взгляд, обнуляется, если в рынке нет ордеров и текущий сигнал на вход отсутствует (нейтрален). И, также, переменная предыдущего (продолжающегося, сохраняющегося) сигнала на вход должна менять значение на «есть новый сигнал», если переменная текущего сигнала на вход имеет противоположное значение, ордеров в рынке нет и нужно выставлять (первый) ордер, противоположный предыдущему. Отработка открытия повторных ордеров по одному продолжающемуся сигналу на вход совсем не так уж и проста, как кажется на первый взгляд. Надо точно расставить в коде где какая переменная вычисляется (меняет значение) и применяется. Пытаться описать все ситуации я сходу не готов. Да и вам по коду бота виднее где и как реализовывать опцию. Но я попытался обратить ваше внимание на наличие проблемы выставления повторных ордеров по 1 продолжающемуся сигналу и выполнил грубый предварительный анализ ситуации и решения. Удачи! :) ... Что касается опции доливки по тренду, то, возможно, за эталонную реализацию этой опции можно было бы принять реализацию [b]pavelg[/b] в Рыбалке - и не мучатся. По крайней мере управление опцией, на первый взгляд, в Рыбалке грамотное. ... [/quote]