TickValue
Увы МТ4
Увы МТ4
И? мт4 - SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE)
Это комиссия брокера в пунктах? Что-то не похоже...
Кроме того:
SYMBOL_TRADE_TICK_VALUE | Значение SYMBOL_TRADE_TICK_VALUE_PROFIT | double |
SYMBOL_TRADE_TICK_VALUE_PROFIT | Не поддерживается | double |
SYMBOL_TRADE_TICK_VALUE_LOSS | Не поддерживается | double |
SYMBOL_TRADE_TICK_VALUE это значение SYMBOL_TRADE_TICK_VALUE_PROFIT, а последнее Не поддерживается.
Это комиссия брокера в пунктах? Что-то не похоже...
Переводите деньги, в пункты
tv=SymbolInfoDouble(symb,SYMBOL_TRADE_TICK_VALUE); (Comm/(tv*OrderLots()))*point
Переводите деньги, в пункты
tv=SymbolInfoDouble(symb,SYMBOL_TRADE_TICK_VALUE); (Comm/(tv*OrderLots()))*point
Спасибо, но что-то не сходится в этой формуле:
1. Сомм - это комиссия в $ за лот (с её ростом комиссия в пунктах растёт - верно)
2. TV - стоимость пункта в $ (c её ростом комиссия в пунктах падает - верно)
3. OrderLots() - объём сделки в лотах (c его ростом комиссия в пунктах падает - НЕ верно)
4. point - размер пункта текущего инструмента в валюте котировки (тут не могу сообразить, как это влияет)
Комиссия брокера в пунктах точно не должна зависить от размера сделки, аналогично спреду.
Спасибо, но что-то не сходится в этой формуле:
1. Сомм - это комиссия в $ за лот (с её ростом комиссия в пунктах растёт - верно)
2. TV - стоимость пункта в $ (c её ростом комиссия в пунктах падает - верно)
3. OrderLots() - объём сделки в лотах (c его ростом комиссия в пунктах падает - НЕ верно)
4. point - размер пункта текущего инструмента в валюте котировки (тут не могу сообразить, как это влияет)
Комиссия брокера в пунктах точно не должна зависить от размера сделки, аналогично спреду.
Спасибо, но что-то не сходится в этой формуле:
1. Сомм - это комиссия в $ за лот (с её ростом комиссия в пунктах растёт - верно)
2. TV - стоимость пункта в $ (c её ростом комиссия в пунктах падает - верно)
3. OrderLots() - объём сделки в лотах (c его ростом комиссия в пунктах падает - НЕ верно)
4. point - размер пункта текущего инструмента в валюте котировки (тут не могу сообразить, как это влияет)
Комиссия брокера в пунктах точно не должна зависить от размера сделки, аналогично спреду.
Но размер комиссии зависит от размера сделки. 8$ за стандартный лот, а за 0.1 лота будет 0.8$ не так-ли?
Вот и получается что если разделить комиссию на стоимость 1го пункта получим комиссию в пунктах.
Но размер комиссии зависит от размера сделки. 8$ за стандартный лот, а за 0.1 лота будет 0.8$ не так-ли?
Вот и получается что если разделить комиссию на стоимость 1го пункта получим комиссию в пунктах.
Вопрос: будет ли работать, например:
SymbolInfoDouble("EURJPY",SYMBOL_TRADE_TICK_VALUE,m_tick_value);
Если единственный инструмент выбранный в обзоре рынка "GBPCAD"?
Комиссия брокера в пунктах:
BrokerCom=BrokerCommission/m_tick_value*_Point;
BrokerCommission - комиссия в долларах на лот $100000
Ну и держите, может кому сгодится...
Аналог SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE,m_tick_value);
//====================================================================================================== // CalcTickValue() - вычисляет стоимость пункта для указанного инструмента // Вход: // iSymbol - используемый инструмент (валютная пара) // Выход: // double - расчетная стоимость //====================================================================================================== double CalcTickValue(string iSymbol){ string iPairs= "#GBP"+"%0"//GBPUSD "#EUR"+"%0"//EURUSD "#AUD"+"%0"//AUDUSD "#NZD"+"%0"//NZDUSD "#LTC"+"%0"//LTCUSD "#BTC"+"%0"//BTCUSD "#USD"+"%0"// "#CAD"+"%1"//!!!USDCAD "#JPY"+"%1"//!!!USDJPY "#TRY"+"%1"//!!!USDTRY "#MXN"+"%1"//!!!USDMXN "#NOK"+"%1"//!!!USDNOK "#SEK"+"%1"//!!!USDSEK "#CNH"+"%1"//!!!USDCNH "#HKD"+"%1"//!!!USDHKD "#ZAR"+"%1"//!!!USDZAR "#RUB"+"%1"//!!!USDRUB "#USOil"+"%0" "#UKOil"+"%0"; string BaseCurrency=StringSubstr(iSymbol,0,3), CotirCurrency=StringSubstr(iSymbol,3,3), OilCurrency=StringSubstr(iSymbol,2,3);//не доделано {if(BaseCurrency=="USD")//USDZZZ - Прямая котировка, Базовая валюта доллар США, стоимость лота $100000.0 { /*Расчет стоимости пункта на Форекс/Forex в прямых котировках В прямых котировках мы совершаем операции с долларом, а «оплачиваем» второй валютой. Цена пункта на форекс в этом случае будет зависеть от текущей котировки. Для примера возьмем USD/CHF. Предположим, что ее текущее значение 1.2000. Рассчитаем цену пункта для операции объемом 10 000 (0.1 лот) базовой валюты. Исходя из текущего курса: 10 000 USD = 12 000 CHF. Предположим, что цена прошла в нужном нам направлении 1 пункт, и текущий курс составил 1.2001. 10 000 долларов в данном случае уже будет стоить 12 001 франков. Следовательно, мы заработали 1 швейцарский франк. Теперь нужно перевести это значение в американские доллары. Для этого нужно разделить прибыль на текущий курс: 1 / 1.2001 = 0.83 $. Это и есть цена одного пункта по паре USD/CHF. Чтобы упростить эту процедуру можно пользоваться следующей формулой: Цена пункта = размер пункта * объем позиции / текущий курс Для разобранного выше примера по паре USD/CHF: 0,0001 (один пункт) * 10 000 (объем позиции) / 1,2001 (текущий курс) = 0,83 $.*/ //Цена пункта = размер пункта * объем позиции / текущий курс return(SymbolInfoDouble(iSymbol,SYMBOL_POINT)*100000.0/((SymbolInfoDouble(iSymbol,SYMBOL_ASK)+SymbolInfoDouble(iSymbol,SYMBOL_BID))/2)); }else{//if(BaseCurrency!="USD") Базовая валюта НЕ доллар США //***** {if((CotirCurrency=="USD")||(OilCurrency=="Oil"))//XXXUSD или XXOil (фактически OILUSD) Обратная котировка, Валюта котировки доллар США, стоимость лота $100000.0*PriceXXX { /*Как рассчитать стоимость пункта в обратной котировке Здесь расчет легче. Забегая вперед, скажем, что в обратных котировках 1 пункт объемом 10 000 всегда равен 1 доллару США, независимо от текущего курса. Для примера возьмем пару EUR/USD. Здесь доллар не является базовой валютой, и все операции производятся с евро. Если курс EUR/USD 1.4000, то 10 000 EUR (объем позиции) = 14 000 USD. Если цена прошла в нужном нам направлении 1 пункт, курс будет 1.4001, 10 000 EUR = 14 001 USD, доход составил 1 доллар. Делить полученный результат на текущий курс не нужно, т.к. в обратной котировке стоимость пункта от него не зависит, кроме того, результат мы получили уже в долларах. Формула расчета: Цена пункта = размер пункта * объем позиции Таким образом, для пары EUR/USD из нашего примера: 0,0001 * 10 000 = 1 $*/ {if(SymbolSelect(iSymbol,true))//попытка выбрать символ в окне MarketWatch (Обзор рынка) { return(SymbolInfoDouble(iSymbol,SYMBOL_POINT)*100000.0); }else{ return(-1); }}//if(SymbolSelect(iSymbol,true)) }else{//XXXZZZ //if((CotirCurrency!="USD") Кросс-курс, Базовая валюта НЕ доллар США, Валюта котировки НЕ доллар США, стоимость лота $100000.0*PriceXXXUSD /*Расчет стоимости пункта на Форекс/Forex в кросс-курсах В кросс-курсах не присутствует USD. Для примера возьмем GBP/CHF, курс 1.4400. Формула расчета: Цена пункта = объем позиции * размер пункта * текущая котировка базовой валюты по отношению к USD / текущий курс валютной пары (кросс-курс) Для GBP/CHF: 10 000 * 0.0001 * 1.5800 (курс GBP/USD) / 1.4400 = 1.1 $*/ {if(!IsTesting()) { //Работаем в реальном режиме {if(StringSubstr(iPairs,StringFind(iPairs,"%",StringFind(iPairs,BaseCurrency,1))+1,1)=="0")//Ишем базовую валюту и за ней после % признак перевернутости {//Для базовых валют вида XXXUSD (например EURUSD) - нормальная не перевёрнутая {if(SymbolSelect(BaseCurrency+"USD",true))//попытка выбрать символ в окне MarketWatch (Обзор рынка) { //return(100000.0*(SymbolInfoDouble(BaseCurrency+"USD",SYMBOL_ASK)));//не работает в тестере return(100000.0*SymbolInfoDouble(iSymbol,SYMBOL_POINT) *((SymbolInfoDouble(BaseCurrency+"USD",SYMBOL_BID))) /((SymbolInfoDouble(iSymbol,SYMBOL_BID))) //*((SymbolInfoDouble(BaseCurrency+"USD",SYMBOL_ASK)+SymbolInfoDouble(BaseCurrency+"USD",SYMBOL_BID))/2) ///((SymbolInfoDouble(iSymbol,SYMBOL_ASK)+SymbolInfoDouble(iSymbol,SYMBOL_BID))/2) );//не работает в тестере }else{ return(-1); }}//if(SymbolSelect(BaseCurrency+"USD",true)) }else{//Для базовых валют вида USDXXX (например USDCAD) в парах XXXYYY (напрмер CADJPY)- перевернутая {if(SymbolSelect("USD"+BaseCurrency,true))//попытка выбрать символ в окне MarketWatch (Обзор рынка) { //Print(100000.0*(1/SymbolInfoDouble("USD"+BaseCurrency,SYMBOL_ASK)+1/SymbolInfoDouble("USD"+BaseCurrency,SYMBOL_BID))/2); return(100000.0*SymbolInfoDouble(iSymbol,SYMBOL_POINT) *((1/SymbolInfoDouble("USD"+BaseCurrency,SYMBOL_ASK)+1/SymbolInfoDouble("USD"+BaseCurrency,SYMBOL_BID))/2) /((SymbolInfoDouble(iSymbol,SYMBOL_ASK)+SymbolInfoDouble(iSymbol,SYMBOL_BID))/2) ); }else{ return(-1); }}//if(SymbolSelect("USD"+BaseCurrency,true)) }}//if(StringSubstr(iPairs,StringFind(iPairs,"%",StringFind(iPairs,BaseCurrency,1))+1,1)=="0") }else{ //Работаем в тестере - невозможно получить котировки других валют return(-1); }}//if(!IsTesting()) }}//if((CotirCurrency=="USD")||(OilCurrency=="Oil")) }}//if(BaseCurrency=="USD") return(-1); }//
Это примерные прикидки, прошу не судить строго... :-)
Вопрос: будет ли работать, например:
SymbolInfoDouble("EURJPY",SYMBOL_TRADE_TICK_VALUE,m_tick_value);
Если единственный инструмент выбранный в обзоре рынка "GBPCAD"?
Комиссия брокера в пунктах:
BrokerCom=BrokerCommission/m_tick_value*_Point;
BrokerCommission - комиссия в долларах на лот $100000
Ну и держите, может кому сгодится...
Аналог SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE,m_tick_value);
Это примерные прикидки, прошу не судить строго... :-)
Меня смутила вот эта строка
return(SymbolInfoDouble(iSymbol,SYMBOL_POINT)*100000.0);
Размер стандартного лота не у всех 100к. Сюда лучше взять SYMBOL_TRADE_CONTRACT_SIZE
Дальше разбираться не осилил, пойду что-нить полезное сделаю.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Кроме этого хочется отобразить уровни, которые отражают затраты на комиссию (сверх спреда).
Подскажите, кто в состоянии, как преобразовать комиссию брокера которая в деньгах за лот в размер комиссии в пунктах ценового графика.
Всем профитов!