Как можно заоптимизировать комбинацию переменных при сравнении?

 

Есть несколько переменных. В функциях советника они сравниваются между собой, и это сравнение является условием.

Переменные объявлены внутри программы. Как можно с помощью оптимизации подобрать нужные комбинации сравнений?

 
Методом градиентного спуска.
Знаю что такой метод есть, но сам до его изучения пока не добрался.
Поищите в сети, много информации о этом методе.
 
Vitaly Stepanov:

Есть несколько переменных. В функциях советника они сравниваются между собой, и это сравнение является условием.

Переменные объявлены внутри программы. Как можно с помощью оптимизации подобрать нужные комбинации сравнений?

Это условие выносить во входные параметры.

Пример кода: RSI exhaustive search - здесь программируется условие "меньше" или "больше"

Идея торговой стратегии

Полностью программируемая формула для BUY и SELL сигналов.

Общая формула для сигнала:

#Bar (<OR>)  Value

Bar - номер бара на котором возвращается значение индикатора

< OR > - тип сравнения: "<" ИЛИ ">"

Value - значение (берётся из входных параметров)

Для торгового сигнала можно программировать от одного до трёх баров. Пример использования двух баров: Use condition 1 -> trueUse condition 2 -> trueUse condition 3 -> false

#2 < 30.0 И #1 < 30.0

- условие когда и на баре #2 и на баре #1 индикатор меньше значения "30.0".


 
Vitaly Stepanov:

Переменные объявлены внутри программы. Как можно с помощью оптимизации подобрать нужные комбинации сравнений?

я бы так сделал, проверил, работает:

#property copyright "Copyright 2019, IgorM"
#property link      "https://www.mql5.com/ru/users/igorm"
#property version   "1.00"
#property strict
//--- input parameters
input double   Value1 = 1.0;
input double   Value2 = 1.0;
int handle=INVALID_HANDLE;
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   handle=FileOpen("tst.txt",FILE_READ|FILE_WRITE|FILE_TXT);
   FileSeek(handle,0,SEEK_END);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   if(handle!=INVALID_HANDLE)
     {
      string result="";
      if(NormalizeDouble(Value1-Value2,8)==0) result=" РАВНО "; else result=Value1-Value2>0.0 ? " БОЛЬШЕ " : " МЕНЬШЕ ";
      FileWriteString(handle,DoubleToString(Value1)+result+DoubleToString(Value2)+"\n");
      FileClose(handle);
     }
  }
//+------------------------------------------------------------------+
void OnTick()
  {
  }

файл результата оптимизации Value1 и Value1 от -2.0 до 3.0 с шагом каждого 0.5 приатачил

Файлы:
tst.txt  4 kb
Причина обращения: