Как-то раз решил перенести свой советник с МТ4 на МТ5. И все было по началу хорошо, пока не обнаружил странное поведение в коде. При помощи записи состояния всех переменных стратегий в лог я выяснил, что некоторые условия срабатывали тогда, когда не надо. И наоборот, некоторые условия не срабатывали.
Самый простой пример:
double a = 5; double b = 10; if (a > b) { }
В любом языке программирования такое условие не выполнится. Но в MQL5 подобные условия иногда выполняются. И от чего это зависит — не понятно.
Тогда мне помогло лишь одно: я переехал с терминала МТ5 от брокера Альпари (он не хотел обновляться до свежей версии) на оригинальный МТ5 последней (на тот момент) версии. И это помогло, подобные баги исчезли. Менять что либо в коде было бесполезно.
И вот недавно я решился сделать заказ для знакомого. По началу все шло хорошо, но вот захотелось добавить асинхронное открытие и закрытие сделок. Казалось бы, что может быть проще?
Опустим такую деталь, что в очень удобном МТ5 нет специальной переменной в запросе, чтобы можно было однозначно судить о том, ответ на какой именно запрос открыть позицию пришел от сервера.
Всем привет! Я уже больше года живу с доходов на трейдинге. Так как я извращенец, то торгую пока только на брокерах бинарных опционов.
И вот одна тема у меня хоть и выросла за год в 7.18 раз, а это где-то 22680$ чистыми, но мне было этого мало, особенно когда другие, но более опасные темы из-за риска блокировки счета, приносят куда больше.
И решил я тогда предложить одному другу, который работает в IT, инвестировать в себя, в первую тему, чтобы быстрее нарастить депозит под 150-200к$.
Я знал что он, сидя в Москве, зарабатывает под пол ляма рублей в месяц, а значит должен был согласиться. Но оказалось, что он сам теперь зарабатывает под несколько миллионов в день, продавая чек-листы, например про то как торговать криптой.
Не, мне не интересно
Сама тема вот этого вот
На столько, что я даже не хочу быть с ней никак связан
Даже если это приносит доход
Я избавляю себя от всего, что мне не нравитсяМы поднимали миллионы за ночь просто продавая чек лист
Сорян, но даже как финансовое предложение для меня мелковато
Плюс я люблю пускать деньги только на тратыЯ прогер в нашей команде
Я ботов пишу
Для рассылки там
И такое вот бывает. Не только в трейдинге можно поднимать
boost::posix_time, std, boost ::chrono… надо учиться эффективно использовать чужие велосипеды, иначе легко завязнуть в своих...
Данная библиотека представляет собой сборник алгоритмов, классов, функций и констант для удобной работы с временем:
Братишка, я тебе покушать принёс
Чтобы сделать запрос, достаточно создать объект класса kurlyk::Client и настроить все необходимое в
Бытует мнение, что продажи рабочих роботов убивают закономерности или ломают схему заработка, если она основана не на закономерностях. И сегодня я расскажу вам одну эпичную историю, которая произошла совсем недавно.
Я сам торговал у одного брокера бинарных опционов, и неплохо зарабатывал. Но мои доходы были хоть и выше средних доходов по России в несколько раз, тем не менее, они были лишь мелочью по сравнению с доходами других трейдеров, у которых только на одном аккаунте могло быть 1000-5000$ против моих 70-80$. И множили они депозит не за 2-3 дня, как я, а за час, в худшем случае несколько часов. В общем обували брокера как могли.
Конечно такое безобразие долго не могло продолжаться, и брокер рано или поздно перестал бы это терпеть. Периодическая верификация аккаунтов при выводе денег никого не пугала. Верифицировать аккаунт стоило на порядок дешевле бешеной прибыли, которую можно было получить с аккаунта.
В итоге брокер прикрыл лавочку. Теперь после регистрации нового аккаунта он начал ставить лимит сразу в течении нескольких минут, даже если на аккаунте ты сделал 0 сделок. Раньше он ставил лимит после х3-х6, в зависимости от скорости роста депозита.
Лимит не позволяет торговать, ведь его размер это 2-3$ суточного оборота. Лишь один трейдер, по рассказу знакомого, занимается таким извращением, что заводит 1000$ и делает одну ставку, а потом выводит. Всего лишь одну ставку.
В процессе разработки ПО для трейдинга столкнулся с тем, что программа должна иметь целую кучу файлов конфигурации, содержание которых хотелось бы скрыть от пользователя. Это могут быть настройки стратегий, параметры авторизации на сервере, текст для разных языков интерфейса и т.д.
Для файлов конфигурации я уже давно использую файлы с JSON. Очень удобная вещь. Осталось лишь добавить поддержку комментариев и зашифровать текст при помощи алгоритма AES. А для большей красоты еще и сжать текст перед шифровкой алгоритмом brotli.
Сказано — сделано. Встречайте — crypto-json, проект на гитхабе. Репозиторий содержит готовый редактор JSON с комментариями, который может также сохранить текст в зашифрованном виде. Настройки сжатия и шифрования можно задать перед сохранением файла и во время открытия. Также редактор позволяет сделать проверку JSON и может подсвечивать проблемные места.
Всем добрый день, уважаемые трейдеры и не только. В прошлый раз я писал про то, что пошел сливать бабосики на бинарках. Прошло уже много времени, пора бы уже и доложить общественности, как там дела в этих бинарках.
Начну в хронологическом порядке. Тут график из прошлой статьи и моя дорисовка по памяти, так как сейчас построить нормальный график уже не могу, данные утеряны. Получив где-то минус 20% к депо, я остановил реальную торговлю (хотя был готов и к -50%). Но все потом стало хорошо, правда я уже не торговал на тот момент.
Дальше было интересней. Чтобы не проедать деньги зря на период допиливания торговой системы, я начал фрилансить кодером в теме трейдинга бинарками. Как оказалось, в бинарках нужны кодеры, которые умеют в С++ и прочие языки высокого уровня, а не только костыльный MQL. Для интересующихся, поднимать 70-100к в месяц тут можно. Но я считаю что не нужно. Почему? Будет рассказано дальше, тогда поймете.
Всем привет! Продолжаем курс велосипедостроения. И на этот раз зачем-то решил сделать простенький алгоритм расчета HMAC для SHA256 и SHA512. А то иногда бывает нужно подключить какую нибудь криптобиржу, а там нужен этот самый HMAC. Вот ссылка на репозиторий самой либы.
Для расчета HMAC надо вызвать функцию get_hmac, которая имеет несколько параметров:
std::string get_hmac( std::string key, const std::string &msg, const TypeHash type, const bool is_hex = true, const bool is_upper = false);
В общем, угрохав на исследования 2-3 года (не ну конечно за 2-3 года я еще успел сделать несколько безуспешных проектов инвесторов) я таки запустил наконец-то реальную торговлю сразу на двух брокерах бинарок.
Поковырявшись в 264 стратегиях я выяснил, что хорошо себя ведут стратегии, которые были изобретены еще 2 года назад. Ну то есть сильные закономерности существуют до сих пор и уверенно себя чувствуют. С тех пор конечно что-то было улучшено, но сами закономерности остались те же. Даже обидно, мог бы раньше запуститься.
В итоге решил убрать стратегии, которые работают сейчас не очень, и картина не сильно поменялась в плане прибыли. Зато повысилась стабильность и повысился винрейт.
Если торговать с коэффициентом ослабления критерия Келли 0.2 и процентами выплат 82% у одного брокера и 80% у другого, получается неплохой результат. Винрейт у сигналов разный, но в среднем он 59%. Вот результат теста с начала 2020 года по 26.05.2020. Т.е. этот период вообще никак не участвовал в настройке стратегий.
Очень простая, многопоточная серверная и клиентская библиотека Named Pipe, реализованная с использованием C++11. Проект был проверен на компиляторе mingw 7.3.0 x64. Папка code_blocks содержит примеры для IDE Code::Blocks. Не забудьте в проектах указать свой компилятор, иначе проект не соберется. Сделал либу только сегодня, так что в ней могут быть ошибочки.
#include <iostream> #include "named-pipe-server.hpp" int main() { /* в конструкторе сервера можно также задать размер буфера */ SimpleNamedPipe::NamedPipeServer server("my_server"); /* обработчики событий */ server.on_open = [&](SimpleNamedPipe::NamedPipeServer::Connection* connection) { std::cout << "open, handle: " << connection->get_handle() << std::endl; }; server.on_message = [&](SimpleNamedPipe::NamedPipeServer::Connection* connection, const std::string &in_message) { /* обрабатываем входящие сообщения */ std::cout << "message " << in_message << ", handle: " << connection->get_handle() << std::endl; connection->send("ok"); }; server.on_close = [&](SimpleNamedPipe::NamedPipeServer::Connection* connection) { std::cout << "close, handle: " << connection->get_handle() << std::endl; }; server.on_error = [&](SimpleNamedPipe::NamedPipeServer::Connection* connection, const std::error_code &ec) { std::cout << "error, handle: " << connection->get_handle() << ", what " << ec.value() << std::endl; }; /* запускаем сервер */ server.start(); std::system("pause"); /* останавливаем сервер * (деструктор класса сам выполнит остановку, вызывать не обязательно) */ server.stop(); std::cout << "close program" << std::endl; return EXIT_SUCCESS; }