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

 
artmedia70:

Подобный вопрос уже тут звучал и ответ на него был дан (не помню кто отвечал). Чтобы вам, так и быть, не искать, вот:

-----------------------------------------
Как рассчитать, судя из свободных средств и лота, сколько пунктов (в поинтах) может пройти цена в минус??? есть у кого нибудь такой код???
формула связи: Лот=Деньги/(Стоплос*Тик)
Деньги - заработанное/потерянное
Стоплос - в пунктах брокера
Тик - MarketInfo( MODE_TICKVALUE)
Отсюда крутите как хотите:
Стоплос=Деньги/(Лот*Тик)
Деньги=Лот*Стоплос*Тик
-----------------------------------------
Теперь, исходя из вышеприведённых формул, делайте, что нужно вам...




Спасибо. Буду размышлять. Был бы рад еще вариантам
 
vovan-gogan:

Спасибо. Буду размышлять. Был бы рад еще вариантам

1. Риск на сделку составлял 10 процентов от депо,

2. Чтобы эти 10 процентов приходились бы на расстояние до SL

3. Эти 10 процентов должны увеличиваться каждый раз на 50% после убыточной сделки.

Например депо 10 000 USD, риск на сделку при определенном уже известном уровне SL должен составить 1000 USD. Если сделка получилась убыточной, то в следующей сделке рискуем уже на 1500, в следующей на 2000 и т.д. И при первой же прибыльной сделке риск сразу возвращается на первоначальный уровень от депо: 10 % . Как это может реализовать в программе?

Нам известны все три составляющие из трёх необходимых вам. Теперь только математика и проверка на допустимость.

1. Депо нам известно? Риск в деньгах можно подсчитать: Депо/100*Процент риска. Тик берём отсюда: Тик = MarketInfo(Symbol(), MODE_TICKVALUE); СтопЛосс нам известен.

2. Лот открываемой позиции = Риск в деньгах / (СтопЛосс в пунктах * Тик)

3. если нужно приращивать риск, то пересчитывайте "Риск в деньгах" (третий пункт выше) на увеличенный процент риска...

 
DDFedor:

1. Знаем, что примеры лежат в кодебазе.

2. Знаем, что расширение файла библиотек - mqh.

3. Совмещаем, делаем запрос поисковику.

4. Получаем первый результат. https://www.mql5.com/ru/code/10344 - архив не смотрел, но наверняка там и файл библиотек, и запускной файл.

Наверно, всё же, расширение всех программ MQL4 - "*.mq4".

"*.mqh" -- это расширение заголовочного файла библиотеки по аналогии с С++. Хотя, всё это не важно. "*.mqh" тоже компилируется.

 
добрый вечер. подскажите, пожалуйста, число типа int изначально равно 0?
 

подскажите пожалуйста, у меня в определенный момент в советнике включается стоп лосс, находящийся посередине между нынешней ценой и ценой открытия

middleSL=OrderOpenPrice()+(Close[0]-OrderOpenPrice())/MIDDLESL;
когда цена растет он поттягивается вверх, но никогда не опускается

но иногда бывает ошибка 1 при работе именно этой части советника, я понял что close[0], который заканчивается на четную цифру и Close[0]-1*Point(нечетный), в формуле дают один и тот же middleSL, и включают одинаковую команду на OrderModify, что довить в код, чтобы этого не происходило, спасибо.

P.S. MIDDLESL - это переменная, сейчас она равна 2, но с помощью оптимизатора, найду более выгодное значение

 
nadya:
добрый вечер. подскажите, пожалуйста, число типа int изначально равно 0?

да, когда определяешь переменную как integer, она изначально имеет значение 0
 
спасибо, Денис!
 
nadya:
добрый вечер. подскажите, пожалуйста, число типа int изначально равно 0?

стрёмное предположение и такой же стрёмный ответ.

вобщем то это всегда так, но есть вредные моменты, когда переменные не обнуляются.

анекдот в тему:

Идёт программер грустный домой, на работе не клеится у него что-то. По дороге решил зайти в бар выпить. Сидит весь такой печальный, пъёт, всё думает про код, который не работает. Подсела к нему местная проститутка. Пытается начать разговор. Он вяло товечает. Затем спрашивает её:
- Как хоть тебя зовут?
- А кто как хочет, так и зовёт.
Программер (хлопая себя по лбу):
- Ну точно! Значение по умолчанию надо ведь дать!!!
И убежал радостный домой доделывать код.

мораль - всегда инициализируйте переменные значением!

 
LazarevDenis:

подскажите пожалуйста, у меня в определенный момент в советнике включается стоп лосс, находящийся посередине между нынешней ценой и ценой открытия

когда цена растет он поттягивается вверх, но никогда не опускается

но иногда бывает ошибка 1 при работе именно этой части советника, я понял что close[0], который заканчивается на четную цифру и Close[0]-1*Point(нечетный), в формуле дают один и тот же middleSL, и включают одинаковую команду на OrderModify, что довить в код, чтобы этого не происходило, спасибо.

P.S. MIDDLESL - это переменная, сейчас она равна 2, но с помощью оптимизатора, найду более выгодное значение

надо менять идеологию программы. когда middleSL отправляется в стоплосс, он нормализуется, то есть округляется до определенного знака, при делении на 2 так происходить и будет, это неизбежно
 
sergeev:

стрёмное предположение и такой же стрёмный ответ.

вобщем то это всегда так, но есть вредные моменты, когда переменные не обнуляются.

анекдот в тему:

Идёт программер грустный домой, на работе не клеится у него что-то. По дороге решил зайти в бар выпить. Сидит весь такой печальный, пъёт, всё думает про код, который не работает. Подсела к нему местная проститутка. Пытается начать разговор. Он вяло товечает. Затем спрашивает её:
- Как хоть тебя зовут?
- А кто как хочет, так и зовёт.
Программер (хлопая себя по лбу):
- Ну точно! Значение по умолчанию надо ведь дать!!!
И убежал радостный домой доделывать код.

мораль - всегда инициализируйте переменные значением!

а если я ее как глобальную переменную записываю, то значение прямо там приписывать?
Причина обращения: