bird:
Я пытаюсь открыть позицию по разным парам, к примеру AUDUSD, GBPUSD, XAUUSD. И пытаюсь прировнять лоты
вот небольшой скрипт
int start()
{
//----
string pair="AUDUSD";
Print("LotToUSD("+pair+")="+LotToUSD(pair));
pair="GBPUSD";
Print("LotToUSD("+pair+")="+LotToUSD(pair));
pair="XAUUSD";
Print("LotToUSD("+pair+")="+LotToUSD(pair));
//----
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
double LotToUSD(string P){
double InfoAsk=MarketInfo(P,MODE_ASK);
if(InfoAsk==0)return(0);
// if USD Start
string IfUSD=StringSubstr(P,3,3);
if(IfUSD=="USD")return(1/InfoAsk);
IfUSD=StringSubstr(P,0,3);
if(IfUSD=="USD")return(1);
// if USD Start
IfUSD="USD"+IfUSD;
InfoAsk=MarketInfo(IfUSD,MODE_ASK);
if(InfoAsk!=0)return(InfoAsk);
IfUSD=StringSubstr(P,0,3);
IfUSD=IfUSD+"USD";
InfoAsk=MarketInfo(IfUSD,MODE_ASK);
if(InfoAsk!=0)return(1/InfoAsk);
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
{
//----
string pair="AUDUSD";
Print("LotToUSD("+pair+")="+LotToUSD(pair));
pair="GBPUSD";
Print("LotToUSD("+pair+")="+LotToUSD(pair));
pair="XAUUSD";
Print("LotToUSD("+pair+")="+LotToUSD(pair));
//----
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
double LotToUSD(string P){
double InfoAsk=MarketInfo(P,MODE_ASK);
if(InfoAsk==0)return(0);
// if USD Start
string IfUSD=StringSubstr(P,3,3);
if(IfUSD=="USD")return(1/InfoAsk);
IfUSD=StringSubstr(P,0,3);
if(IfUSD=="USD")return(1);
// if USD Start
IfUSD="USD"+IfUSD;
InfoAsk=MarketInfo(IfUSD,MODE_ASK);
if(InfoAsk!=0)return(InfoAsk);
IfUSD=StringSubstr(P,0,3);
IfUSD=IfUSD+"USD";
InfoAsk=MarketInfo(IfUSD,MODE_ASK);
if(InfoAsk!=0)return(1/InfoAsk);
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
ВОТ ЧТО ВЫВОДИТ ЭТОТ СКРИПТ:
LotToUSD(XAUUSD)=0.00079284
LotToUSD(GBPUSD)=0.60383921
LotToUSD(AUDUSD)=1.14142221
Что то не совсем правильно особенно с XAUUSD
Не совсем понял, что именно Вы хотите. Попробуйте плясать от такой "печки"
double LotToUSD(string P, double BasicContractSize){ double ContractSize = MarketInfo( P, MODE_MARGINREQUIRED ) * AccountLeverage(); if ( ContractSize > 0 && BasicContractSize > 0 ) rerurn( BasicContractSize / ContractSize ); else return(0); }
Здесь BasicContractSize - размер контракта в валюте депозита (например, 100000)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Я пытаюсь открыть позицию по разным парам, к примеру AUDUSD, GBPUSD, XAUUSD, GBPJPY. И пытаюсь прировнять лоты
вот небольшой скрипт
{
//----
string pair="AUDUSD";
Print("LotToUSD("+pair+")="+LotToUSD(pair));
pair="GBPUSD";
Print("LotToUSD("+pair+")="+LotToUSD(pair));
pair="XAUUSD";
Print("LotToUSD("+pair+")="+LotToUSD(pair));
pair="GBPJPY";
Print("LotToUSD("+pair+")="+LotToUSD(pair));
//----
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
double LotToUSD(string P){
double InfoAsk=MarketInfo(P,MODE_ASK);
if(InfoAsk==0)return(0);
// if USD Start
string IfUSD=StringSubstr(P,3,3);
if(IfUSD=="USD")return(1/InfoAsk);
IfUSD=StringSubstr(P,0,3);
if(IfUSD=="USD")return(1);
// if USD Start
IfUSD="USD"+IfUSD;
InfoAsk=MarketInfo(IfUSD,MODE_ASK);
if(InfoAsk!=0)return(InfoAsk);
IfUSD=StringSubstr(P,0,3);
IfUSD=IfUSD+"USD";
InfoAsk=MarketInfo(IfUSD,MODE_ASK);
if(InfoAsk!=0)return(1/InfoAsk);
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
ВОТ ЧТО ВЫВОДИТ ЭТОТ СКРИПТ:LotToUSD(GBPJPY)=0.60388297
LotToUSD(XAUUSD)=0.00079284
LotToUSD(GBPUSD)=0.60383921
LotToUSD(AUDUSD)=1.14142221
Что то не совсем правильно особенно с XAUUSD
вот что он делает:
USDXAU = 1/XAUUSDUSDGBP = 1/GBPUSD
USDAUD = 1/AUDUSD
GBPJPY = 1/GBPUSD