[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 599
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
пишите, что получилось, и какие сообщения принтом выводите в лог
я показал где войти должно было, но не вошло, какие фракталы должно было пробить. ну еще прилагаю в архиве код проги и то что вывело в тесте txt-файлик(изменил еще, свое добавил ибо была ошибка, но проблема все равно остается). прост честно говоря даже не пойму какие переменные мониторить(ну и там еще фотка с местом
ну и вот где не вошло:
)
взял из др. советника функцию расчета лота GetLot(в файле), в старом советнике и сама по себе ошибок нет, а у меня в советнике выдает
'(' - function definition unexpected C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (106, 15)
'Free' - variable not defined C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (112, 28)
'Risk' - variable not defined C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (112, 33)
'Free' - variable not defined C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (115, 17)
в чем проблема?
griha:
взял из др. советника функцию расчета лота GetLot(в файле), в старом советнике и сама по себе ошибок нет, а у меня в советнике выдает
'(' - function definition unexpected C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (106, 15)
'Free' - variable not defined C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (112, 28)
'Risk' - variable not defined C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (112, 33)
'Free' - variable not defined C:\Program Files\BCS Trade Station\experts\ SovetnikStochastic.mq4 (115, 17)
в чем проблема?
В коде функции старт перед первым If лишняя фигурная скобка потому и ошибки. Чтобы проще было скобки считать, всегда старайтесь их сначала ставить обе а потом уже в них вписывать что надо, да ещё лучше их сразу с новой строки со смещением вписывать, так отдельные блоки не путаются (например как в коде приведённом на предыдущей странице)
P.S.:
По-моему расчет лота по этой формуле
будет работать неправильно для лота 0.1 с шагом больше 0.01, может я что-то упустил, но тогда лот всегда будет равен 0 ( MathFloor (900*2/100/1324/0.02=0,67975831) = 0, следовательно 0*Step=0)...Не могу никак сообразить, как вычислить что-то типа OrderProfitPips( ) для выбранного ордера, если пара произвольна. Т.е. прибыль в пипсах, а не в валюте счета.
Мне нужны именно пипсы - для анализа эффективности торговли мультивалютника по разным парам. Пипсы нужны четырехзначные (или соответственно двузначные, если пара иеновая). Считаем, что валюта счета - USD, а размер контракта - 100 000 единиц.
Вот если пара типа EURUSD, то тут все просто:
pips = OrderProfit( ) / ( OrderLots( ) * 10. );
Если пара - AUDCHF, то немного посложнее. Если бы счет был франковый, то формула была бы точно такой же. Но счет-то баксовый, т.е. OrderProfit() возвращается в баксах. Поэтому прибыль надо перевести во франки:
pips = USDCHF * OrderProfit( ) / ( OrderLots( ) * 10. );
Так?
Не могу никак сообразить, как вычислить что-то типа OrderProfitPips( ) для выбранного ордера, если пара произвольна. Т.е. прибыль в пипсах, а не в валюте счета.
Мне нужны именно пипсы - для анализа эффективности торговли мультивалютника по разным парам. Пипсы нужны четырехзначные (или соответственно двузначные, если пара иеновая). Считаем, что валюта счета - USD, а размер контракта - 100 000 единиц.
Вот если пара типа EURUSD, то тут все просто:
pips = OrderProfit( ) / ( OrderLots( ) * 10. );
Если пара - AUDCHF, то немного посложнее. Если бы счет был франковый, то формула была бы точно такой же. Но счет-то баксовый, т.е. OrderProfit() возвращается в баксах. Поэтому прибыль надо перевести во франки:
pips = USDCHF * OrderProfit( ) / ( OrderLots( ) * 10. );
Так?
Это http://www.fxtrademaker.com/fx_calculation.htm читали? Или это http://thismatter.com/money/forex/leverage-margin-pips.htm?
Насколько я понял, PipProfit = USDprofit/lot/Point для EURUSD. Для пар с обратной котировкой надо взять разницу цен открытия и текущей и перемножить на Digits: Pips = OrderOpenPrice()-Bid*Digits_coefficient; где
Digits_coefficient = MathPow(10,Digits);
Да тут, похоже, по обеим ссылкам польза. Спасибо.
P.S. Решил таки считать не в пипсах, а в валюте счета. Слишком несоизмеримы цифры пипсов иеновых кроссов с обычными. А я их складывать хотел (условно, конечно)...
Да тут, похоже, по обеим ссылкам польза. Спасибо.
P.S. Решил таки считать не в пипсах, а в валюте счета. Слишком несоизмеримы цифры пипсов иеновых кроссов с обычными. А я их складывать хотел (условно, конечно)...
Пипсы есть пипсы, как они могут быть несоизмеримы? Чем профит 20 пипс на евродолларе отличается от профита 20 пипс на йене? Наверное неправильно считаете... Но в валюте счёта и правда проще расчеты делать.
Дык по Вашей же ссылке (второй) все и видно:
You buy 100,000 units of EUR/JPY = 164.09 and sell when EUR/JPY = 164.10, and USD/JPY = 121.35.
Profit in JPY pips = 164.10 – 164.09 = .01 yen = 1 pip (Remember the yen exception: 1 JPY pip = .01 yen.)
Total Profit in JPY pips = 1 x 100,000 = 100,000 pips.
Total Profit in Yen = 100,000 pips/100 = 1,000 Yen
Because you only have the quote for USD/JPY = 121.35, to get profit in USD, you divide by the quote currency’s conversion rate:
Total Profit in USD = 1,000/121.35 = 8.24 USD.
If you only have this quote, JPY/USD = 0.00824, which is equivalent to the above value, you use the following formula to convert pips in yen to domestic currency:
Total Profit in USD = 1,000 x 0.00824 = 8.24 USD.
Профит 8.24 USD (равный, к примеру, 0.824 пипсам на 1 лоте EURUSD) эквивалентен в примере ста тысячам иеновых пипсов!
P.S. Чувствую себя полным новичком...
Дык по Вашей же ссылке (второй) все и видно:
Профит 8.24 USD (равный 0.824 пипсам на 1 лоте EURUSD) эквивалентен ста тысячам иеновых пипсов!
Не там читаете. Для пар с обратной котировкой надо взять разницу цен открытия и текущей и перемножить на множитель получаемый от Digits ( Pips = (Bid -OrderOpenPrice())*Digits_coefficient; ), что даст (80.60-80.45=0,15) * MathPow(10,Digits) = 15 pips, где
Проще некуда, не так ли?
P.S.: Хотя нет, можно и проще )))
Причём это выражение справедливо для ВСЕХ валютных пар!