Советники: ZigZaHod - страница 16

 
ForTorg:
Все доработки идут в версии 1.1 https://www.mql5.com/ru/code/12707 в этой слишком много ошибок.  В той ветке и буду выкладывать по мере доработки ... С доработками выложу когда доведу до "совершенства" а то щаз много ошибок в журнале тестера (проверки надо прикрутить...) Да и алгоритмы СЛ и ТП надо осмыслить чтоб они не противоречили граф анализу.

Пока не сильно воодушевляет... будем дальше думать...

 

У вас все время будут получаться только сливаторы, поскольку  

1)основная идея -"импульс внутри канала приводит к его пробою" порочна, в реальности пробой канала "от края до края и дальше" -редкое явление. Цена-это не шарики из школьной физики, физические законы здесь неприемлемы

2) сам импульс вы находите нелепым образом, если провести аналогию с той же физикой, то скорость у вас измеряется не спидометром, не количеством деревьев или перекрестков за единицу времени, а количеством оставленных позади гаишников за единицу времени. Почему? Видимо, гаишники привлекают больше вашего внимания.

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

 
Paragormon:

У вас все время будут получаться только сливаторы, поскольку  

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 -формате. Данные разделяются разделителем (";", "," и т.д.) Вы легко сможете редактировать и добавлять. Только соблюдайте формат данных используемый в эксперте.
 
galeko:
Если вы хотите редактировать вручную, вне терминала, я бы посоветовал сохранять в CSV -формате. Данные разделяются разделителем (";", "," и т.д.) Вы легко сможете редактировать и добавлять. Только соблюдайте формат данных используемый в эксперте.

Понял... В экселе или блокноте открыл, отредактировал... Спасибо буду разбираться.

int h = FileOpen ("orders_history.csv", FILE_CSV | FILE_READ);

Измения достаточно сделать толь в этих строках?
 
ForTorg:

Понял... В экселе или блокноте открыл, отредактировал... Спасибо буду разбираться.

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 - Документация на MQL4
  • docs.mql4.com
FileWrite - Документация на MQL4
 
galeko:

нет, используйте для записи метод: FileWrite, а для чтения FileReadNumber.

Все спасибо. Справку почитаем и проверим.
 
ForTorg:
Все спасибо. Справку почитаем и проверим.
Попробуйте отладить так. При инициализации эксперта запишите в файл набор данных. а в деструкторе прочитайте и запишите в другой файл. 
Можете все в одном месте.
Причина обращения: