← К каталогу
Исходный код · ID 2382

analysesymbol.mqh

Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

Данная библиотека представляет собой включаемый файл на языке MQL, предназначенный для анализа валютных символов на рынке Форекс. Она содержит набор функций для определения типа инструмента (основная пара, кросс-пара), идентификации базовой и контрвалюты относительно валюты счёта, расчёта кредитного плеча и необходимого маржинального обеспечения.

Библиотека использует вспомогательные утилиты из модуля CUtils.mqh и стандартные библиотеки MQL для работы с ошибками и математическими функциями. Каждая функция принимает параметр символа и необязательный флаг verbose для вывода отладочных сообщений в журнал экспертов.

Функция AnalyzeSymbol выполняет комплексный анализ символа, объединяя определение типа, плеча и расчёт маржи. Остальные функции предоставляют отдельные аспекты анализа и могут использоваться автономно. Библиотека не содержит настроек пользователя и не требует дополнительной конфигурации.

Состав библиотеки

Классов: 0 · методов: 0 · конструкторов: 0 · деструкторов: 0 · отдельных функций: 5

Функции
Функция int GetSymbolType(string symbol, bool verbose)

Определяет тип валютного символа (основная пара или кросс-пара) для дальнейшего использования в расчётах прибыли и размера лота. Возвращает целочисленное значение типа.

Функция string GetBasePairForCross(string symbol, bool verbose)

Определяет и возвращает название базовой пары для кросс-валютного инструмента. Для основных пар возвращает пустую строку.

Функция string GetCounterPairForCross(string symbol, bool verbose)

Определяет и возвращает название контрвалютной пары для кросс-валютного инструмента. Для основных пар возвращает пустую строку.

Функция int GetSymbolLeverage(string symbol, bool verbose)

Рассчитывает и возвращает требуемое кредитное плечо брокера для указанного финансового инструмента.

Функция void AnalyzeSymbol(string symbol)

Выполняет комплексный анализ валютного символа, включая определение его типа, кредитного плеча и необходимого маржинального обеспечения для открытия позиции.

Получить полный код

Поиск по коду файла

??//+----------------------------+

//|   Analyze Currency Symbol  |

//+============================+

//|

//|   Rev Date: 2010.06.07

//|

//|   Contains the following Functions:

//|

//|   GetSymbolType()

//|   GetBasePairForCross()

//|   GetCounterPairForCross()

//|   GetSymbolLeverage()

//|   AnalyzeSymbol()

//|

//+----------------------------+



#property copyright "1005phillip"

#include <stderror.mqh>

#include <stdlib.mqh>

#include <CUtils.mqh>



//+---------------------------------------------------------------------------------------------------------------------------------------+

//|   GetSymbolType()                                                                                                                        |

//|=======================================================================================================================================|

//|   int GetSymbolType(string symbol, bool verbose=false)                                                                                                  |

//|                                                                                                                                       |

//|   Analyzes Symbol() to determine the SymbolType for use with Profit/Loss and lotsize calcs.                                           |

//|   The function returns an integer value which is the SymbolType.                                                                      |

//|   An integer value of 6 for SymbolType is returned in the event of an error                                                           |

//|                                                                                                                                       |

//|   Parameters:                                                                                                                         |

//|                                                                                                                                       |

//|      verbose     -  Determines whether Print messages are committed to the experts log. By default, print messages are disabled.      |

//|                                                                                                                                       |

//|   Examples:                                                                                                                           |

//|                                                                                                                                       |

//|      SymbolType 1:  symbol  = USDJPY                                                                                                 |

//|                     Base    = USD                                                                                                        |

//|                     Counter = JPY                                                                                                     |

//|                                                                                                                                       |

//|      SymbolType 2:  symbol  = EURUSD                                                                                                 |

//|                     Base    = EUR                                                                                                        |

//|                     Counter = USD                                                                                                     |

//|                                                                                                                                       |

//|      SymbolType 3:  symbol  = CHFJPY                                                                                                 |

//|                     Base    = CHF                                                                                                        |

//|                     Counter = JPY                                                                                                     |

//|                     USD is base to the base currency pair - USDCHF                                                                    |

//|                     USD is base to the counter currency pair - USDJPY                                                                 |

//|                                                                                                                                       |

//|      SymbolType 4:  symbol) = AUDCAD                                                                                                 |

//|                     Base    = AUD                                                                                                        |

//|                     Counter = CAD                                                                                                      |

//|                     USD is counter to the base currency pair - AUDUSD                                                                 |

//|                     USD is base to the counter currency pair - USDCAD                                                                 |

//|                                                                                                                                       |

//|      SymbolType 5:  symbol  = EURGBP                                                                                                  |

//|                     Base    = EUR                                                                                                        |

//|                     Counter = GBP                                                                                                     |

//|                     USD is counter to the base currency pair - EURUSD                                                                 |

//|                     USD is counter to the counter currency pair - GBPUSD                                                              |

//|      SymbolType 6:  Error occurred, SymbolType could not be identified                                                                |

//|                                                                                                                                       |

//+---------------------------------------------------------------------------------------------------------------------------------------+

int GetSymbolType(string symbol, bool verbose=true)

{ 

   int     calculatedSymbolType=6;

   string  currentSymbol="",symbolBase="",symbolCounter="",postfix="",calculatedBasePairForCross="",calculatedCounterPairForCross="";  

   currentSymbol = symbol;

   

   string currency = AccountCurrency();

   symbolBase      = StringSubstr(currentSymbol, 0, 3);

   symbolCounter   = StringSubstr(currentSymbol, 3, 3);

   postfix         = StringSubstr(currentSymbol, 6);

   if(symbolBase    == currency) calculatedSymbolType = 1;

   if(symbolCounter == currency) calculatedSymbolType = 2;

   if((calculatedSymbolType == 1 || calculatedSymbolType == 2) && verbose == true) 

   {

      Print("Base currency is ",symbolBase," and the Counter currency is ", symbolCounter," (this pair is a major)");

   }

   

  

   if (calculatedSymbolType != 1 && calculatedSymbolType != 2)

   {

      if (_utils.GetLotSize(StringConcatenate(currency, symbolCounter, postfix)) > 0)

      {

         calculatedSymbolType          = 4; // SymbolType can also be 3 but this will be determined later when the Base pair is identified

         calculatedCounterPairForCross = StringConcatenate(currency, symbolCounter, postfix);

      }

      else if (_utils.GetLotSize(StringConcatenate(symbolCounter, currency, postfix)) > 0)

      {

         calculatedSymbolType          = 5;

         calculatedCounterPairForCross = StringConcatenate(symbolCounter, currency, postfix);

      }



      // Determine if currency is the COUNTER currency or the BASE currency for the BASE currency forming Symbol()

      if (_utils.GetLotSize(StringConcatenate(currency, symbolBase, postfix)) > 0)

      {

         calculatedSymbolType       = 3;

         calculatedBasePairForCross = StringConcatenate(currency, symbolBase, postfix);

      }

      else if(_utils.GetLotSize(StringConcatenate(symbolBase, currency, postfix)) > 0)

      {

         calculatedBasePairForCross = StringConcatenate(symbolBase, currency, postfix);

      }

   }

   return calculatedSymbolType;

}  // SymbolType body end





//+---------------------------------------------------------------------------------------------------------------------------------------+

//|   GetBasePairForCross()                                                                                                                  |

//|=======================================================================================================================================|

//|   string GetBasePairForCross(string symbol, bool verbose=false)                                                                                         |

//|                                                                                                                                       |

//|   Analyzes Symbol() to determine if currency is the COUNTER currency or the BASE currency for the BASE currency in Symbol()  |

//|   in the event that Symbol() is a cross-currency financial instrument.                                                                |

//|   Returns a text string with the name of the financial instrument which is the base currency pair to Symbol() if possible,            |

//|   otherwise, it returns an empty string.                                                                                              |

//|                                                                                                                                       |

//|   Parameters:                                                                                                                         |

//|                                                                                                                                       |

//|      verbose     -  Determines whether Print messages are committed to the experts log. By default, print messages are disabled.      |

//|                                                                                                                                       |

//|   Sample:                                                                                                                             |

//|                                                                                                                                       |

//|      // Symbol()=CHFJPY                                                                                                               |

//|      // currency=USD                                                                                                         |

//|      string   CrossBasePair=GetBasePairForCross();   // USD is base to the base currency pair - USDCHF                                   |

//|      Print("The base pair for the cross-currency instrument ",Symbol()," is ",CrossBasePair);                                         |

//|                                                                                                                                       |

//|   Examples:                                                                                                                           |

//|                                                                                                                                       |

//|      SymbolType 3:  Symbol() = CHFJPY                                                                                                 |

//|                     Base     = CHF                                                                                                        |

//|                     Counter  = JPY                                                                                                     |

//|                     USD is base to the base currency pair - USDCHF                                                                    |

//|                     USD is base to the counter currency pair - USDJPY                                                                 |

//|                                                                                                                                       |

//|      SymbolType 4:  Symbol() = AUDCAD                                                                                                 |

//|                     Base    = AUD                                                                                                        |

//|                     Counter = CAD                                                                                                      |

//|                     USD is counter to the base currency pair - AUDUSD                                                                 |

//|                     USD is base to the counter currency pair - USDCAD                                                                 |

//|                                                                                                                                       |

//|      SymbolType 5:  Symbol() = EURGBP                                                                                                 |

//|                     Base    = EUR                                                                                                        |

//|                     Counter = GBP                                                                                                     |

//|                     USD is counter to the base currency pair - EURUSD                                                                 |

//|                     USD is counter to the counter currency pair - GBPUSD                                                              |

//|                                                                                                                                       |

//+---------------------------------------------------------------------------------------------------------------------------------------+

string GetBasePairForCross(string symbol, bool verbose=false)

{  

   string   currentSymbol="",symbolBase="",symbolCounter="",postfix="",calculatedBasePairForCross="";

   currentSymbol = symbol;

   //if(verbose==true) Print("Account currency is ", currency," and Current Symbol = ",currentSymbol);



   symbolBase    = StringSubstr(currentSymbol, 0, 3);

   symbolCounter = StringSubstr(currentSymbol, 3, 3);

   postfix       = StringSubstr(currentSymbol, 6);

   string currency = AccountCurrency();

   switch( GetSymbolType(currentSymbol) ) // Determine if currency is the COUNTER currency or the BASE currency for the BASE currency forming Symbol()

   {

      case 1:  

      break;

      

      case 2:  

      break;

      

      case 3:  

         calculatedBasePairForCross = StringConcatenate(currency, symbolBase, postfix);

      break;

      

      case 4:  

         calculatedBasePairForCross = StringConcatenate(symbolBase, currency, postfix);

      break;

      

      case 5:  

         calculatedBasePairForCross = StringConcatenate(symbolBase, currency, postfix);

      break;

      

      case 6:  

         Print("Error occurred while identifying GetSymbolType(), calculated GetSymbolType() = 6"); 

      break;

      

      default:  

         Print("Error encountered in the SWITCH routine for identifying BasePairForCross on financial instrument ",currentSymbol); // The expression did not generate a case value

      break;   

   }

   return calculatedBasePairForCross;

}  // BasePairForCross body end



//+---------------------------------------------------------------------------------------------------------------------------------------+

//|   GetCounterPairForCross()                                                                                                               |

//|=======================================================================================================================================|

//|   string GetCounterPairForCross(bool verbose=false)                                                                                      |

//|                                                                                                                                       |

//|   Analyzes Symbol() to determine if currency is the COUNTER currency or the BASE currency for the COUNTER currency in        |

//|   Symbol() in the event that Symbol() is a cross-currency financial instrument.                                                       |

//|   Returns a text string with the

Показано первые 50% кода (символов: 49708)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
4 970,80₽ ≈ $60.75