Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Все доработки идут в версии 1.1 https://www.mql5.com/ru/code/12707 в этой слишком много ошибок. В той ветке и буду выкладывать по мере доработки ... С доработками выложу когда доведу до "совершенства" а то щаз много ошибок в журнале тестера (проверки надо прикрутить...) Да и алгоритмы СЛ и ТП надо осмыслить чтоб они не противоречили граф анализу.
Пока не сильно воодушевляет... будем дальше думать...
У вас все время будут получаться только сливаторы, поскольку
1)основная идея -"импульс внутри канала приводит к его пробою" порочна, в реальности пробой канала "от края до края и дальше" -редкое явление. Цена-это не шарики из школьной физики, физические законы здесь неприемлемы
2) сам импульс вы находите нелепым образом, если провести аналогию с той же физикой, то скорость у вас измеряется не спидометром, не количеством деревьев или перекрестков за единицу времени, а количеством оставленных позади гаишников за единицу времени. Почему? Видимо, гаишники привлекают больше вашего внимания.
Т.е. вы говорите,что индикаторы плохи, но при этом делаете ничто иное, как индикатор с прыгающим периодом, поэтому считающий импульс гораздо хуже обычного индикатора. Я уже не говорю про то, что импульс-это не сама скорость, а ускорение. Я много экспериментировал с экстремумами именно в плане оперативно-динамических подсчетов и однозначно пришел к выводу, что оперативную ситуацию они передают очень плохо. Единственное, где их можно с пользой употреблять кроме как не для определения границ канала- это статистическая характеристика графика на каком-то отрезке истории с целью определения его специфичности.
У вас все время будут получаться только сливаторы, поскольку
1)основная идея -"импульс внутри канала приводит к его пробою" порочна, в реальности пробой канала "от края до края и дальше" -редкое явление. Цена-это не шарики из школьной физики, физические законы здесь неприемлемы
2) сам импульс вы находите нелепым образом, если провести аналогию с той же физикой, то скорость у вас измеряется не спидометром, не количеством деревьев или перекрестков за единицу времени, а количеством оставленных позади гаишников за единицу времени. Почему? Видимо, гаишники привлекают больше вашего внимания.
Т.е. вы говорите,что индикаторы плохи, но при этом делаете ничто иное, как индикатор с прыгающим периодом, поэтому считающий импульс гораздо хуже обычного индикатора. Я уже не говорю про то, что импульс-это не сама скорость, а ускорение. Я много экспериментировал с экстремумами именно в плане оперативно-динамических подсчетов и однозначно пришел к выводу, что оперативную ситуацию они передают очень плохо. Единственное, где их можно с пользой употреблять кроме как не для определения границ канала- это статистическая характеристика графика на каком-то отрезке истории с целью определения его специфичности.
1. А я разве говорил про каналы. У меня нет каналов и не предвидется.
2. Я уже обьяснил что в советнике импульс я очень сильно упрастил... Я его ВЫРЕЗАЛ и оставил то что можно замерить и с чем можно работать чисто математически для отработки алгоритма. Я только начал осваивать MQL. Мне ведь нужно на чем то тренироваться...
По индикатором спорить не буду, каждому свое. Единственные индикаторы которые я еще могу принять и понять это зигзаги и фракталы (точнее экстремумы, хотя я их вижу иначе...) и прочие производные граф анализа. Наверно я просто не нашол еще таких что отражают реальное поведение цены (мое видение рынка). Вы слишком усложняете рынок... Он намного проще если смотреть на голый график... Только психологически это принять трудно.. А торговать еще сложнее. У нас много сомнений, а индикаторы увеличивают их количество в разы!!! Взять теже самые дивергенции, глядя на график я бы в и не думал покупать, а тут дивергенция... сомнения... а добавлю ка я еще какого нибудь индюка может он мне укажет ... и сомнений становится больше... И мы совершаем ошибки... Я смотрю на рынок проще...
Код что выложен не система для зароботка, а Мои попытки создать алгоритм с нужным мне функционалом. И мне хотелось бы чтоб мне указали не на то что система сливная (её здесь нет), а на ошибки в коде, на синтаксис, на структурные ошибкии, как код можно упростить. Я нанаверно сайтом ошибся...здесь все сидят по норам и ждут готового... И помочь начинающему кодеру здесь не в почете.. .Уйду я от вас... (шутка :-)
Я бы предложил заменить ваш двумерный массив Massiv вещественного типа на следующее:
struct horder {
int id;
int type;
int magic;
int time;
double A;
double B;
double razmer;
};
int nOrders = 0;
horder ordersHistory[30];
И по аналогии сделайте то же самое с Mas_Ord_Tek.
Будет куда проще восприниматься код. Это первое что нужно было сделать. А в общем тяжело исправлять запутанный код, проще писать с нуля.
По поводу записи и чтения из файла попробуйте так:
int FilesWrite ()
{
int h = FileOpen ("orders_history.bin", FILE_BIN | FILE_WRITE);
FileWriteInteger (h, nOrders, INT_VALUE);
for (int i = 0; i < nOrders; ++i)
{
FileWriteInteger(h, order_history[i].id, INT_VALUE);
FileWriteInteger(h, order_history[i].type, INT_VALUE);
FileWriteInteger(h, order_history[i].magic, INT_VALUE);
FileWriteInteger(h, order_history[i].lots, INT_VALUE);
FileWriteDouble(h, order_history[i].price, DOUBLE_VALUE);
FileWriteDouble(h, order_history[i].sl, DOUBLE_VALUE);
FileWriteDouble(h, order_history[i].tp, DOUBLE_VALUE);
}
FileClose (h);
return 0;
}
int FilesOpen ()
{
int h = FileOpen ("orders_history.bin", FILE_BIN | FILE_READ);
if (h < 1) {
Print("Файл orders_history.bin не обнаружен, последняя ошибка ", GetLastError());
return 1;
}
nOrders = FileReadInteger (h, INT_VALUE);
for (int i = 0; i < nOrders; ++i)
{
order_history[i].id = FileReadInteger(h, INT_VALUE);
order_history[i].type = FileReadInteger(h, INT_VALUE);
order_history[i].magic = FileReadInteger(h, INT_VALUE);
order_history[i].lots = FileReadInteger(h, INT_VALUE);
order_history[i].price = FileReadDouble(h, DOUBLE_VALUE);
order_history[i].sl = FileReadDouble(h, DOUBLE_VALUE);
order_history[i].tp = FileReadDouble(h, DOUBLE_VALUE);
}
FileClose (h);
return 0;
}
Честно говоря не проверял, но по идеи должно работать.
galeko
Я бы предложил заменить ваш двумерный массив Massiv вещественного типа на следующее:struct horder {
Спасибо. В этом направлении уже идет работа.
По сохранению отдельное Спасибо. Как раз актуально. Вчера комп перезагрузился на ровном месте и 2 открытые позы вручную пришлось разруливать.
Вопрос еще по сохранениям. Может в каком другом формате лучше сохранять чтоб проще было редактировать? Чтоб в сохранении можно было внести изменения. При загрузке советника чтоб можно было подгрузить свои данные(например ордера которых в реале нет но они нужны для направления и целей или цели подправить.
Если вы хотите редактировать вручную, вне терминала, я бы посоветовал сохранять в CSV -формате. Данные разделяются разделителем (";", "," и т.д.) Вы легко сможете редактировать и добавлять. Только соблюдайте формат данных используемый в эксперте.
Понял... В экселе или блокноте открыл, отредактировал... Спасибо буду разбираться.
int h = FileOpen ("orders_history.csv", FILE_CSV | FILE_READ);
Понял... В экселе или блокноте открыл, отредактировал... Спасибо буду разбираться.
int h = FileOpen ("orders_history.csv", FILE_CSV | FILE_READ);
нет, используйте для записи метод: FileWrite, а для чтения FileReadNumber.
Для вашего примера делайте так:
FileWrite (h, nOrders);
for (int i = 0; i < nOrders; ++i) {
FileWrite (h, order_history[i].id, order_history[i].type, order_history[i].magic, order_history[i].lots, order_history[i].price, order_history[i].sl, order_history[i].tp);
}
А читать нужно каждое значение отдельно. Только пожалуйста проверьте код, у меня нет возможности.
нет, используйте для записи метод: FileWrite, а для чтения FileReadNumber.
Все спасибо. Справку почитаем и проверим.