Как в переменную добавить КОД, после чего его выразить?

 

Пример: 

string proverka = "Close[1] > Open[1] && Close[2] < Open[2]";

if( proverka )
{
	Alert("Цена закрытие первой свечи ВЫШЕ чем цена открытия и Цена открытия второй свечи БОЛЬШЕ чем цена закрытия");
}


Т.е смысл в том чтобы оператор IF выразил содержание переменной  "proverka" как условие, а не как проверку перемернной " proverka  " на её пустоту.

 
Ihar Burdzilau:

Пример: 


Т.е смысл в том чтобы оператор IF выразил содержание переменной  "proverka" как условие, а не как проверку перемернной " proverka  " на её пустоту.

Нельзя так как вы хотите. Язык компилируемый, не интерпретатор.

 
Maxim Kuznetsov:

Нельзя так как вы хотите. Язык компилируемый, не интерпретатор.

Ну почему же нельзя? Нужно "просто" написать свой интерпретатор.

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

 
Ihar Burdzilau:

Пример: 


Т.е смысл в том чтобы оператор IF выразил содержание переменной  "proverka" как условие, а не как проверку перемернной " proverka  " на её пустоту.

https://www.mql5.com/ru/articles/8027
Есть ещё вторая часть
 
Ihor Herasko:

Ну почему же нельзя? Нужно "просто" написать свой интерпретатор.

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

ну да, а форт-подобное пишется вообще за считанные часы. Это-ж просто ;-) только немного почитать и пару-тройку лет потренироваться заранее

string rpn="close 1 index open 1 index gt close 2 index open 2 index lt and" ;

if (stackmachine.eval(rpn,result) && stackmachine.has_result() && stackmachine.pop_bool() ) {

    // do something

}

:-)

 
Maxim Kuznetsov:

ну да, а форт-подобное пишется вообще за считанные часы. Это-ж просто ;-) только немного почитать и пару-тройку лет потренироваться заранее

:-)

Я же и говорю - "просто" )). У меня на первый подход ушло порядка месяца с учетом выпиливания багов.

 

Что-то у вас сегодня настроение поиздеваться над кем ни будь…

Ihar Burdzilau:

Пример: 


Т.е смысл в том чтобы оператор IF выразил содержание переменной  "proverka" как условие, а не как проверку перемернной " proverka  " на её пустоту.

Лучше заменить тип переменной…

bool proverka = Close[1] > Open[1] && Close[2] < Open[2];

if( proverka )
{
        Alert("Цена закрытие первой свечи ВЫШЕ чем цена открытия и Цена открытия второй свечи БОЛЬШЕ чем цена закрытия");
}
 
Maxim Kuznetsov:

Нельзя так как вы хотите. Язык компилируемый, не интерпретатор.

можно через дефайны

#define  proverka Close[1]>Open[1] && Close[2]<Open[2]

if( proverka )
   {
   }
 
Alexey Viktorov:

Что-то у вас сегодня настроение поиздеваться над кем ни будь…

Да не было и намека на издевку. Я понял вопрос так, что в строку (во входные параметры) требуется записать выражение любого типа (не только булево), а потом вычислить результат. Это возможно только при обработке собственным интерпретатором.

 

1. У меня в маркете есть бесплатная библиотека для такого дела, но она для МТ5.

2. Здесь есть статья про интерпретаторы с готовым кодом (не моя) - их все возможные типы, практически. 

3. А вы все или лузеры - если не знаете про эту статью или жмоты - если знаете, но молчите. Все с канвасиками играетесь...

 
Maxim Kuznetsov:

Нельзя так как вы хотите. Язык компилируемый, не интерпретатор.

Интерпретатор