Думаете, что придумали как зарабатывать, написали бота, выложили в топик - молодец!!
я прекрасно помню и не отказываюсь от моих слов, что ваш бот (наряду с парой-тройкой соседних) может оказаться прибыльным и принесёт много денег и радости множеству форумчан!
я на это надеюсь! :)
Рассматривайте мои замечания как обязательные к исполнению предписания госинспектора по технике безопасности.
Мартины боты высшей категории опасности, требующие безупречного исполнения. И мартины весьма сложны.
Компромиссов в вопросах безопасности в мартинах нет - всё, что может быть сделано, должно быть сделано безусловно и безупречно!
Безальтернативно!
Именно поэтому я с вами так серьезно и говорю.
На сейчас у вас в боте как минимум 3- проблемы, каждая из которых смертельно опасна для депо пользователей вашего бота.
Устраните отмеченные мною недостатки - вперед и успехов в дальнейшей работе!
Не устраните недостатки - я буду вынужден исполнить свои должностные обязанности и ваш топик закрыть.
Потому что критичные недоработки в любом публичном мартин боте должны быть безальтернативно устранены!
Сами торгуйте на своих деньгах как угодно - но бот, выкладываемый людям, не должен содержать "дыр" в безопасности.
Ничего личного, никто не меряется пиписьками.
просто ваш возможный станок для зарабатывания денег для пользователей должен быть максимально безопасным и иметь сколь возможно высокий уровень защиты от сливов депозита.
Пока ваш бот неприемлемо опасен - отсюда и мое безальтернативное предписание как стороннего инспектора по технике безопасности.
-------
Теперь по существу.
Требование о том, чтобы бот вёл 2-х сторонние торги, я пока снимаю.
Насколько понимаю, бота для 2-х сторонних торгов вам пока написать и проблематично, и долго, и несвоевременно.
0ll прав в том, что сейчас важно проверить работоспособность и устойчивость идеи - ладно, пусть пока будет 2 копии на 1 график для buy и sell раздельно.
По нынешним временам такое ваше решение buy и sell раздельно выглядит устаревшим.
Остаётся риск, что пользователь запутается и установит на 1 график 2 копии бота в режиме sell, например, вместо sell и buy.
Единый бот, торгующий в 2 стороны, риск такой ошибки пользователя исключает.
Но я понимаю, что переход на 2-х сторонние торги требует глубокой переработки бота и, возможно, немалого времени для вас.
И, по большому счёту, это малый риск ошибки пользователя в 2-х копиях бота на графике - хотя он есть и останется.
Но всё же, учитывая малый риск такой ошибки пользователя и малый риск для безопасности торгов и депо пользователей - имхо, может быть оставлено так как есть навсегда.
Но, тем не менее, пожалуйста, посмотрите как 2-х сторонние торги организованы в Генерике v14 (он уже на ПАММе) и в других внятных мартинах.
Мартинов с торгами 2 копиями на 1 графике не случайно нет в инете уже лет 5.
Когда-то вам всё равно надо будет внятно выписать и своего бота до конца.
Надеюсь, вы и сами когда-то до 2-х сторонних торгов дозреете в ходе личной эволюции как программиста.
------
У меня открыто на данный момент 54 сделки, а у Вас только 9!
Сов настрогал сделок после перезапуска ВПС в 15-30 МСК.
Смотрю: у Вас уже тоже настрогал, но ему до моего еще далеко!
У Вас 15 закрытых и пока 13 открытых. Я свои 52 закрыла вручную с небольшим плюсом!
Проверьте, пожалуйста, его работу. Разве корректно такое количество открытых сделок?
ivanvp,
у меня подобная ситуация что и у uln2006.
после закрытия-открытия терминала советник начинает торговлю заново, а не продолжает работу с открытыми сделками, хотя magic-номер не менялся.
Здравствуйте, новая версия готова. Протестировал на двух счетах - кажется всё ок. Но всё же...
После каждой новой сделки пишется csv файл с её параметрами, то есть при перезагрузке терминала проблем не должно быть.
Повторюсь, грузить бота расчетами параметров сделок внутри не хочу - дело неблагодарное, которое положит за раз VPS.
Это замечательно, что вы уже начали устранять выявленные проблемы и начали с самой тяжелой и трудоёмкой - с корректной работы бота после рестарта!
Мартинов я видел несколько сотен и я как-то и не припоминаю, чтобы были такие, которые сохраняют данные о сетках в файл.
Почти все мартины всё же при рестарте анализируют ордера на графике и "понимают" какова ситуация и как им работать дальше.
Некоторые особо сложные боты сохраняют какую-то инфу в глобальных переменных.
Но единственным по настоящему надежным вариантом, выполняемым однократно после рестарта, есть считывание ботом ордеров с графика и полный анализ ситуации и что делать.
Блок анализа/реконструкции ситуации на графике после рестарта бота один из самых сложных в мартинах и именно этот вопрос в вашем мартине меня беспокоил и пока беспокоит больше всего.
Вариант с сохранением информации о сетке в файл, на мой взгляд, для начала допустим как вариант, но требует тотальной проверки.
Насколько знаю, файл может не доформироваться и штатно не закрыться в случаях зависания 1) бота, 2) терминала, 3) VPS или 4) ОС на компе или VPS.
Каждая из этих аж 4 ситуаций случаются с разной частотой.
В таком случае, ваш бот после рестарта может не обнаружить файл совсем или обнаружить с частичной информацией и либо неправильно достраивать сетку, либо начать строить новую сетку параллельно с имеющейся.
И такое развитие событий чревато сливом депо пользователя по вине бота.
Также должен напомнить, что завершение работы и рестарт бота происходит также каждый раз, как пользователь переключает ТФ графика, к которому прикреплен бот.
А пользователи и вообще, и по ошибке не так уж редко переключают ТФ графиков, к которым прикреплен бот.
Какова будет судьба файла в случае рестарта бота вследствие переключения ТФ, я на 100% не знаю - но не уверен, что файл будет доформирован, поскольку доформирование файлов наблюдал только в случае штатного закрытия терминала.
В общем, коллега, ваша текущая реализация проблемы рестарта бота по настоящему безопасной не выглядит.
Как минимум, надо выполнить всестороннее тестирование и долго наблюдать за работой бота на своих компах и на VPS, чтобы убедиться, что рестарт у вас проходит безопасно.
Но, имхо, лучше блок анализа ситуации на графике после рестарта бота выписать с нуля и сделать бота в этой части действительно безопасным.
Может, позже, через месяцы - но если вы намерены сделать вменяемого бота, то обработку рестарта бота придётся создать с нуля.
-------
провел пару тестов.
при балансе 7400 лот0.01. при балансе 7500 лот 0.02.
при балансе 12400 лот 0.02 . при балансе 12500 лот 0.03.

Такое вычисление лота неприемлемо - в примере лот у вас удваивается тогда, когда депо лишь 75%+ от необходимого для удвоения.
В мартинах это почти гарантированный слив депо почти всегда.
При LotPerBalance=5000 у вас должно вычисляться так:
0.01 лота при балансе от 1+ до 9999
0.02 лота при балансе от 10000 до 14999
0.03 лота при балансе от 15000 до 19999...
Это баг легко исправляется - вам необходимо перейти от стандартного округления к округлению до меньшего.
Ну или как-то иначе вычленять/обрезать без округлений целую часть результата деления баланса счета на LotPerBalance.
Также я бы порекомендовал вам добавить контроль и запрещать торги, если баланс счёта Ну и, после доработки, проверить правильно ли задается первый ордер 0.01, если баланс счета
Кроме того, при вычислении лотов через LotPerBalance необходимо учитывать есть ли на счёте сгораемый/классический бонус от ДЦ.
Сейчас, насколько понимаю, на счетах со сгораемыми бонусами во всех ботах в мире неверно вычисляется лот как % риска и при вариантах типа LotPerBalance (в моём проекте аналогичный параметр CurrencyForMinLot).
Эту тему я исследовал в моём проекте и изложил в постах
/v-pomoshch-treyderu/4/statya-rabota-so-sgoraemymiklassicheskimi-bonusami-ot-dts/16910/?do=findComment&comment=374616
/laboratoriya-profitfx/24/open-source-sovetnik-forex-setka-trader-mod-i-eaqj-setka/2738/?do=findComment&comment=375754
В общем, необходимо ввести дополнительный целочисленный параметр для указания суммы сгораемого бонуса, действующего на счёте.
И, при вычислении лотов через LotPerBalance, вычитать из баланса сумму бонуса.
Почему так - в моих постах.
------
Например, EURUCHF: Мы должны открыть 2 графика - для продаж и покупок и для каждого из них разный меджик.
Вы переложили на пользователей необходимость использовать множество уникальных магиков - иначе бот будет некорректно работать и может слить депо ввиду недовыписанной вами простой выборки ордеров в боте.
Это не дело, это тоже грубое нарушение норм безопасности - и это тоже должно быть доработано.
У вас есть переключатель TrendDirection, определяющий buy или sell сетки строит данная копия бота и, соответственно, буквально указывающий какие по типу (buy или sell) ордера должна данная копия бота обрабатывать.
Символ текущего окна/графика (графика бота) + значение параметра TrendDirection позволяют идентифицировать ордера, обрабатываемые данной копией бота. Например, график бота gbpusd + buy из TrendDirection достаточно определяют какие ордера должна обрабатывать данная копия бота.
А MagicNumber лишь дополнительный идентификатор для обособления ордеров одной группы ботов (если на одном графике работает много разнотипных ботов), от значения которого корректность работы бота, в общем случае, зависеть не должна.
Параметр MagicNumber, через который вы зачем-то "повесили" на пользователей тотальную ручную идентификацию ордеров каждой копии бота, как главный идентификатор для этих целей использоваться не должен. Недопустимо, чтобы пользователи вашего бота носили с собой шифровальную книгу с 20-30 разными магиками и ни в коем случае не ошиблись, иначе сольют депо.
В принципе, решение простое: после оператора Select вам надо отбирать ордера по символу чата и значению параметра TrendDirection + можно даже единый на счете для всех копий данных ваших ботов MagicNumber как дополнительный идентификатор.
При такой реализации будет устранен риск слива счёта пользователем ввиду неверного указания одного из десятков магиков.
И один магик на все копии вашего бота на счете несравненно удобнее пользователям вместо 20-30 магиков, которые в таком немыслимом количестве вообще не нужны ни людям, ни ботам.
-----
Иван, никто не хочет вам зла и все хотят от вас прибыльного бота!
Сейчас ваш бот годен для тестов в тестере и на демке - но неприемлемо опасен для торгов на чужих деньгах.
Обиды и понты в этой ситуации бессмысленны и неуместны - любой публичный мартин бот должен обеспечивать минимальную безопасность денег пользователей.
Просто вам бота надо довыписать как надо - качественно.
Это вполне рабочая ситуация доводки вашего первого мартин бота до минимальных стандартов безопасности.
Удачи! :)

