Formula Calculation 外汇EA

Formula Calculation 外汇EA-EA侦探社 - 全球领先的MQL5官网外汇EA机器人MT4自动化交易EA资源免费分享网站
Formula Calculation 外汇EA
此内容为免费资源,请登录后查看
0积分
免费资源

如果免费资源下载的文件为TXT文档

请联系站长更新!站长微信:Lv596999  Telegram:@eapoj

“Mql5官网”板块的EA基本都有,大部分是无限制NODLL版,NODLL版本MT1420升级,大多数不可用!这些EA来源为国外花钱买过来的

有需要,请联系站长!

“EA测评”板块资源全部现有,看见不错的,可以联系站长看EA在确定是否收费

“无限制EA”板块,大部分免费,下载文件全部存在,都可以免费下载

站长硬盘EA太多,因大部分时间做交易,做风控,没太多时间更新下载地址,请谅解!

需要更新下载文件,请联系站长微信!国外朋友请联系Telegram。


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

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

Формула может включать арифметические действия “+-/*” и все функции кроме 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();
 
}
//+------------------------------------------------------------------+

© 版权声明
THE END
喜欢就支持一下吧
点赞26 分享
相关推荐