Посоветуйте индикатор или скрипт

 

Привет, коллеги.

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

1) Индикатор или скрипт, который поможет измерить расстояние от точки до точки в $, а не только в пунктах.


2) Скрипт или индикатор, который выводит всю информацию по инструменту: размер и стоимость тика, залог за 1 лот, время торгов, и т.п.

Задачи довольно обыденные, поэтому скорее всего, все это уже было:) Заранее спасибо всем откликнувшимся. 

 
puc:

Привет, коллеги.

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

1) Индикатор или скрипт, который поможет измерить расстояние от точки до точки в $, а не только в пунктах.


2) Скрипт или индикатор, который выводит всю информацию по инструменту: размер и стоимость тика, залог за 1 лот, время торгов, и т.п.

Задачи довольно обыденные, поэтому скорее всего, все это уже было:) Заранее спасибо всем откликнувшимся. 

Расчет стоимости пункта для валютных пар. Убедитесь лично в Вашем терминале, что он верен, в интернете по сравнению с этой простой формулой встречаются ошибки или излишняя запутанность. Я проверял для 26 ДЦ в мае 2016, для всех совпало. Но бывало и иначе, например, в 2007 ForexClub в терминале IDS давал одинаковую стоимость пункта для всех пар. Также как и залог, и стандартный лот.

В терминах MQL4 TikBase = LotSiz * TikCot * Курс валюты котировки к USD. То есть на GBPUSD умножаем, а на USDJPY делим. Валюта котировки - вторая в имени пары, для CHFDJPY это JPY.
LotSiz = MarketInfo(T,MODE_LOTSIZE) размер стандартного лота
TikBase = MarketInfo(T,MODE_TICKVALUE) стоимость пункта в долларах
TikCot = MarketInfo(T,MODE_TICKSIZE) шаг котирования (пункт)
В терминах MQL5 
LotSiz = SymbolInfoDouble(T,SYMBOL_TRADE_CONTRACT_SIZE)
TikBase = SymbolInfoDouble(T,SYMBOL_TRADE_TICK_VALUE)
TikCot = SymbolInfoDouble(T,SYMBOL_TRADE_TICK_SIZE)


Что касается "всей информации", возможно, Вам пригодятся вот эти строки MQL4. Строка S готовится для записи в файл с расширением .csv, "родной" для Microsoft Excel. Пишется она одной командой

 FileWriteString(fi, S, StringLen (S));

Функция KursS служит просто удобочитаемости, убирает в числах лишние нули.

// Переводит в строку курс
string KursS(double Ku) {
int k, i;
string S; // 8 дробных цифр для составного курса открытия позиции в MT5
S=DoubleToString(NormalizeDouble(Ku,8),8); // Уберем концевые нули
i=StringLen(S)-1;
if (StringSubstr(S,i,1)!="0") return(S); // Их нет
for (k=i-1;k>0;k--) if (StringSubstr(S,k,1)!="0") {S=StringSubstr(S,0,k+1); break;}
i=StringLen(S)-1; // Уберем концевую точку
if (StringSubstr(S,i,1)==".") S=StringSubstr(S,0,i);
return (S);
} // KursS
  S = StringConcatenate(";=MARKET;NTikers=",Nsy+1,";Time=",TimeToStr(TimeLocal(),TIME_DATE|TIME_SECONDS),";\n");
  S = StringConcatenate(S,";AcNum=",AccountNumber(),";Balance=",MoneyS(AccountBalance()),";Valut=",AccountCurrency(),
    ";Credit=",MoneyS(AccountCredit()),";Equity=",MoneyS(AccountEquity()),";Zalog=",MoneyS(AccountMargin()),
    ";Free=",MoneyS(AccountFreeMargin()),";PL=",MoneyS(AccountProfit()),
    ";Lever=",AccountLeverage(),";StopOut=",AccountStopoutLevel(),";Server=",AccountServer(),
    ";Terminal=",TerminalPath(),";Broker=",AccountCompany(),";\n");
  S = StringConcatenate(S,";Tiker;Trading;LotSiz;MinLot;MaxLot;LotStep;Point;Digs;Spread;SwapL;SwapS;LastTime;",
    "StopLev;Freez;TikBase;TikCot;SwapType;PLCalc;MarCalc;MarInit;MarMaint;MarHed;MarReq\n");
  for (k=0;k<=Nsy;k++) { Цикл по имеющимся в массиве Sy именам валютных пар
    T = Sy[k]; // 
    S = StringConcatenate(S,";",T,";",MarketInfo(T,MODE_TRADEALLOWED),";",KursS(MarketInfo(T,MODE_LOTSIZE)),
    ";",KursS(MarketInfo(T,MODE_MINLOT)),";",KursS(MarketInfo(T,MODE_MAXLOT)),";",KursS(MarketInfo(T,MODE_LOTSTEP)),
    ";",KursS(MarketInfo(T,MODE_POINT)),";",MarketInfo(T,MODE_DIGITS),";",KursS(MarketInfo(T,MODE_SPREAD)),
    ";",KursS(MarketInfo(T,MODE_SWAPLONG)),";",KursS(MarketInfo(T,MODE_SWAPSHORT)),";",MarketInfo(T,MODE_TIME),
    ";",KursS(MarketInfo(T,MODE_STOPLEVEL)),";",KursS(MarketInfo(T,MODE_FREEZELEVEL)),";",KursS(MarketInfo(T,MODE_TICKVALUE)),
    ";",KursS(MarketInfo(T,MODE_TICKSIZE)),";",MarketInfo(T,MODE_SWAPTYPE),";",MarketInfo(T,MODE_PROFITCALCMODE),
    ";",MarketInfo(T,MODE_MARGINCALCMODE),";",KursS(MarketInfo(T,MODE_MARGININIT)),";",KursS(MarketInfo(T,MODE_MARGINMAINTENANCE)),
    ";",KursS(MarketInfo(T,MODE_MARGINHEDGED)),";",KursS(MarketInfo(T,MODE_MARGINREQUIRED)),";\n");