[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 489

 
DOCTORS:


Наверно мои мозговые функции после праздников отрофировались частично, что выражается на низком уровне донесения собственных мыслей :(

Суть маленько в другом:

1. Как только запускается советник я назначаю некоторой переменной изначальное значение депозита (как раз ищу функцию присваивания, хотя можно в ручную конечно прописать- указава в начальных настройках, но меня тут уже упрекнули в корявости моих программистких возможностей, а хочется как у белых людей).

2. Т.к. моя система корявая, и работает всего одним лотом, то изначальное значение лота (допустим) 1.0...

3. И сам основной вопрос- я хочу чтобы после каждой прибыльной сделки депозит сравнивался с начальным, и в случае, если новое значние (допустим) стало больше на 30% я меняю значение размера лота на 0.1 т.е. 1.0+0.1 и т.к. постоянно (понятно дело нюанс в том, что постоянно надо менять старое значение переменной и опять же оператор присваивания переменной значение депозита).

вообщем как-то так.


Досконально разберитесь с ф-иям управления капиталом и их работой - см. в библиотеке ф-ии управления объемами от И.Ким, другие варианты, в том числе и вариант учебника, что Вам ссылку давал - когда разберетесь с порядком их работы, то труда не составит изготовить и свою, какая именно Вам и нужна... Как - то так. Без этого - никак - практика и решение типовых задач - ИМХО, в первую очередь. См. прицеп - ф-ии управления капиталом от Игоря Кима.
Файлы:
b-lots.mqh  3 kb
 
sss2019:

Скажите а файловый описатель при успешном открытии всегда больше нуля?

Посмотрите пожалуйста, правильная ли логика в этом коде, который открывает файл на запись

неправильная, а кто будет закрывать файл после его создания если его нет ?

и потом, терминал выдаст вам ошибку открытия в этом случае, так что проверять наличие файла лучше с флагом FILE_CSV|FILE_READ, в этом случае при отсутствии файла терминал будет молчать

 
FAQ:

неправильная, а кто будет закрывать файл после его создания если его нет ?

и потом, терминал выдаст вам ошибку открытия в этом случае, так что проверять наличие файла лучше с флагом FILE_CSV|FILE_READ, в этом случае при отсутствии файла терминал будет молчать


Ну так там есть же. Если файл был открыт

  if(Handle >0)
  FileClose(Handle);

Я сделал запись в файл, но разделитель в конце не добавился, а в учебнике написано что он добавляется автоматически.

FileWrite(Handle,"Pair, Min, Max, Open, Close, Moment");
 

А если его не было вы его создаете, и не закрываете. или потом у вас если лишнее закрытие (ниже в коде)

по поводу разделителя - с каким разделителем файл откроете (а не создадите), такой и будет

 


Хехе, аватарка в тему. :)

2 Roman - спасибо, будем разбираться.

 

FAQ:

А если его не было вы его создаете, и не закрываете. или потом у вас если лишнее закрытие (ниже в коде)

по поводу разделителя - с каким разделителем файл откроете (а не создадите), такой и будет


Так почему лишнее я вот никак не пойму, если я его сразу не закрываю, то закрываю попозже. Покажите тогда пожалуйста прмер правильного открытия и закрытия.

 
подскажите как сделать чтобы в индикаторе появлялся сигнал Alert, только один раз на текущем баре. Я пробовал сделать переменную, и пока эта переменая имеет значение 0 сигнал разрешен, как только сигнал прозвучал переменная принимает значение 1. Но это не работает.
 
sss2019:
подскажите как сделать чтобы в индикаторе появлялся сигнал Alert, только один раз на текущем баре. Я пробовал сделать переменную, и пока эта переменая имеет значение 0 сигнал разрешен, как только сигнал прозвучал переменная принимает значение 1. Но это не работает.

https://docs.mql4.com/ru/basis/variables/static
 
sss2019:
подскажите как сделать чтобы в индикаторе появлялся сигнал Alert, только один раз на текущем баре. Я пробовал сделать переменную, и пока эта переменая имеет значение 0 сигнал разрешен, как только сигнал прозвучал переменная принимает значение 1. Но это не работает.
Файлы:
 
sss2019:
подскажите как сделать чтобы в индикаторе появлялся сигнал Alert, только один раз на текущем баре. Я пробовал сделать переменную, и пока эта переменая имеет значение 0 сигнал разрешен, как только сигнал прозвучал переменная принимает значение 1. Но это не работает.


Я обычно делаю переменную LastBarAlert и записываю в нее Time[0] при срабатывании сигнала.

Ну а далее элементарно, алерт выводится если LastBarAlert!=Time[0]

if (Signal && LastBarAlert!=Time[0]){
  Alert('Signal detected');
  LastBarAlert=Time[0];
}
Причина обращения: