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

 
alsu:
пишите, что получилось, и какие сообщения принтом выводите в лог



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

ну и вот где не вошло:)

Файлы:
ik.zip  4 kb
 

взял из др. советника функцию расчета лота 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)

в чем проблема?
 

Файлы:
 
Ну чего вы так все любите архиваторы? У вас что, 100500 строк кода в исходнике чтоли?!
 

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.:

По-моему расчет лота по этой формуле

 double Lot     =MathFloor(Free*Risk/100/One_Lot/Step)*Step;    // откидываем лишние знаки после запятой, оставляем 2 знака
будет работать неправильно для лота 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. );

Так?

 
Mathemat:

Не могу никак сообразить, как вычислить что-то типа 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. Решил таки считать не в пипсах, а в валюте счета. Слишком несоизмеримы цифры пипсов иеновых кроссов с обычными. А я их складывать хотел (условно, конечно)...

 
Mathemat:

Да тут, похоже, по обеим ссылкам польза. Спасибо.

P.S. Решил таки считать не в пипсах, а в валюте счета. Слишком несоизмеримы цифры пипсов иеновых кроссов с обычными. А я их складывать хотел (условно, конечно)...


Пипсы есть пипсы, как они могут быть несоизмеримы? Чем профит 20 пипс на евродолларе отличается от профита 20 пипс на йене? Наверное неправильно считаете... Но в валюте счёта и правда проще расчеты делать.

 
evillive: Пипсы есть пипсы, как они могут быть несоизмеримы?

Дык по Вашей же ссылке (второй) все и видно:

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.10164.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. Чувствую себя полным новичком...

 
Mathemat:

Дык по Вашей же ссылке (второй) все и видно:

Профит 8.24 USD (равный 0.824 пипсам на 1 лоте EURUSD) эквивалентен ста тысячам иеновых пипсов!


Не там читаете. Для пар с обратной котировкой надо взять разницу цен открытия и текущей и перемножить на множитель получаемый от Digits ( Pips = (Bid -OrderOpenPrice())*Digits_coefficient; ), что даст (80.60-80.45=0,15) * MathPow(10,Digits) = 15 pips, где

Digits_coefficient  = MathPow(10,Digits);

Проще некуда, не так ли?

P.S.: Хотя нет, можно и проще )))

 Pips = (Bid - OrderOpenPrice())/Point; //ордер лонг
 Pips = (OrderOpenPrice() - Ask)/Point; //ордер шорт

Причём это выражение справедливо для ВСЕХ валютных пар!

Причина обращения: