Скачать MetaTrader 5

корректный код для расчета свопов

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
transcendreamer
3514
transcendreamer  

добрый день!

есть ли готовый код для корректного учета свопов разных типов?

поиском нашлись только отдельные фрагменты  

o_o
Модератор
24082
o_o  
//------------------------------------------------------------------ GetSwap
double GetSwap(int dir, string smb)
{
        double lotsize=MarketInfo(smb, MODE_LOTSIZE);
        double ticksize=MarketInfo(smb, MODE_TICKSIZE);
        double tickval=MarketInfo(smb, MODE_TICKVALUE);
        int swapType=MarketInfo(smb, MODE_SWAPTYPE); 
        string smbL=StringSubstr(smb, 0, 3);
        string smbR=StringSubstr(smb, 3, 3);
        double swap=Swap(dir, smb)*tickval;
        if (swapType==0) if (smbL=="USD" && smbR!="JPY") swap=swap*MarketInfo(smb, MODE_BID);
        if (swapType==1) { if (smbL!="USD")     swap=swap*MarketInfo(smb, MODE_BID); swap=swap/(ticksize*lotsize); }
        if (swapType==3) { swap=swap*MarketInfo(smb, MODE_BID); swap=swap/(ticksize*lotsize); }
//      Print(smb+"  swap="+DTS(swap, 3)+" | Type="+swapType+" VALUE="+DTS(tickval, 2)+" TICK="+DTS(ticksize, 5)+" LOT="+DTS(lotsize, 2)+" *** "+DTS(ticksize*lotsize, 2));
        return(swap);
}
//---------------------------------------------------------------   Swap
double Swap(int dir, string smb)
{
        if (dir==OP_BUY) return(MarketInfo(smb, MODE_SWAPLONG));
        if (dir==OP_SELL) return(MarketInfo(smb, MODE_SWAPSHORT));
}


но нужно проверить в тестере. запустите какой то эксп чтоб ордер открывал и не закрывал. и сранивайте то что выдает OrderSwap и функция GetSwap.

все тестировал пару лет назад. может что и поменялось

transcendreamer
3514
transcendreamer  
sergeev:


но нужно проверить в тестере. запустите какой то эксп чтоб ордер открывал и не закрывал. и сранивайте то что выдает OrderSwap и функция GetSwap.

все тестировал пару лет назад. может что и поменялось


спасибо!
4x4ever
440
4x4ever  

sergeev, большое спасибо за код!


.... вопросик однако один имеется - там где у вас проверки на "USD" не надо ли ето поменять на AccountCurrency()? Мне так кажется что ваш код вроде написан подразумевая что AccountCurrency() == USD?

o_o
Модератор
24082
o_o  
4x4ever:

sergeev, большое спасибо за код!


.... вопросик однако один имеется - там где у вас проверки на "USD" не надо ли ето поменять на AccountCurrency()? Мне так кажется что ваш код вроде написан подразумевая что AccountCurrency() == USD?

возможно. проверьте, если так то внесем правку

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий