支持中心 帮助文档 联系我们
📱 微信: 18391752892 | 💬 QQ: 3313198376 | ✈️ Telegram | 📧 fishfx123@gmail.com
EURUSD 1.0856 +0.12% GBPUSD 1.2678 +0.08% USDJPY 149.23 -0.15% XAUUSD 2034.56 +0.34% EURUSD 1.0856 +0.12% GBPUSD 1.2678 +0.08% USDJPY 149.23 -0.15% XAUUSD 2034.56 +0.34%

Formula Calculation

👤 作者: Dmitry Fedoseev

4.5 分

¥0.00

📌 版本: v1.0
📥 下载: 0
⭐ 评分: 4.5

📝 产品详情

Formula Calculation

作者Dmitry Fedoseev
版本v1.0
激活数0

Библиотека для расчета формул.

Формула задается строкой. Можно задавать формулу в строковой переменой в окне свойств.

Формула может включать арифметические действия "+-/*" и все функции кроме MathRand(): abs(), arccos(), arcsin(), arctan(), sin(), cos(), tan(), exp(), log(), mod(), max(), min(), pow(), ceil(), sqrt(), log10(), floor(), round(). Кроме этого в формулу могут входить числа (если число дробные, то разделитель точка) и аргументы. Аргумент начинается с буквы "а" (латинская) и номера, например: "a0", "a1" и т.д. 

Пример формулы: "sqrt(a1*log10(a0))*a2+10.5". Имейте ввиду, что формула может быть любой, а это только пример.

Импорт библиотеки:

#import "Market//Formula Calculation.ex4"
   int AddFormula(string Formula);
   void FormulaSetArgument(int FormulaIndex,int ArgumentIndex,double ArgumentValue);
   bool FormulaSolve(int FormulaIndex,double & Result);
   void FormulaFreeAll();
#import

Описание функций библиотеки:

int AddFormula(string Formula) - функция для добавления формулы в библиотеку. Вызывается при инициализации эксперта или индикатора, в котором используется библиотека. Функция возвращает индекс формулы, который надо указывать при вызове других функций библиотеки. Функция расчета формулы, по принципу работы, не является текстовым интерпретатором. При вызове функции AddFormala() происходит ее анализ и построение иерархии классов, при помощи этой иерархии и происходит расчет формулы, что обеспечивает очень высокую скорость расчета. 

void FormulaSetArgument(int FormulaIndex,int ArgumentIndex,double ArgumentValue) - функция для установки значений аргументов.

Параметры: 

int FormulaIndex - индекс формулы, полученный при вызове функции AddFormula().

int ArgumentIndex - индекс аргумента (число стоящее после буквы "а" в имени аргумента).

double ArgumentValue - значение аргумента.

bool FormulaSolve(int FormulaIndex,double & Result) - расчет формулы. Возвращает true при успешном расчете, false - при ошибке в расчете (деление на 0 и т.п.).

Параметры: 

int FormulaIndex - индекс формулы, полученный при вызове функции AddFormula().

double & Result - переменная для результата расчета. 

FormulaFreeAll() - удаление всех формул. Вызов функции приводит библиотеку в исходное состояние.

Пример использование библиотеки: 

//+------------------------------------------------------------------+
//|                                                 sFormulaTest.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

#import "Market//Formula Calculation.ex4"
   int AddFormula(string Formula);
   void FormulaSetArgument(int FormulaIndex,int ArgumentIndex,double ArgumentValue);
   bool FormulaSolve(int FormulaIndex,double & Result);
   void FormulaFreeAll();
#import

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart(){

   double r=0;

   int f01=AddFormula("sqrt(a1*log10(a0))*a2+10.5");
   
   if(f01==-1){
      Alert("Ошибка формулы");
      return;
   }
 
   FormulaSetArgument(f01,0,10000);
   FormulaSetArgument(f01,1,25);
   FormulaSetArgument(f01,2,2);
   
   if(!FormulaSolve(f01,r)){
      Alert("Ошибка расчета");
      return;      
   }
   
   Alert("Результат1: "+(string)r);
   
   FormulaSetArgument(f01,0,20);
   FormulaSetArgument(f01,1,30);
   FormulaSetArgument(f01,2,40);
   
   if(!FormulaSolve(f01,r)){
      Alert("Ошибка расчета");
      return;      
   }
   
   Alert("Результат2: "+(string)r);   
   
    
   FormulaFreeAll();
 
}
//+------------------------------------------------------------------+


安全须知

本产品仅通过 MQL5.com 官方渠道获取。其他渠道版本可能缺少完整功能和技术支持。

EA 配置

交易品种XAUUSD
时间框架H1 (推荐)
推荐经纪商IC Markets, IC Trading
最低存款$300 / 0.01手

📸 截图预览