Вопрос:

MQL4: выполнить функцию, если x больше y

trading algorithmic-trading mql4 metatrader4 forex

85 просмотра

1 ответ

69 Репутация автора

Используя MQL4, как я могу выполнить BUYзаказ (см. Ниже),
если одна переменная xимеет значение 1,
а другая переменная yимеет значение 3?

Мне нужно, чтобы это работало так:

переменная x = 1

переменная y = 3

Так что, если xесть MORE THAN y, выполните этот скрипт:

extern int TakeProfit = 10;
extern int StopLoss = 10;

void OnStart()
  {
   double TakeProfitLevel;
   double StopLossLevel; 

   TakeProfitLevel = Bid + TakeProfit*Point;
   StopLossLevel = Bid - StopLoss*Point;

   Alert("TakeProfitLevel = ", TakeProfitLevel);
   Alert("StopLossLevel = ", StopLossLevel);

   OrderSend("USDCAD", OP_BUY, 1.0, Ask, 10, StopLossLevel, TakeProfitLevel, "first order");

 }

И если xесть LESS THAN y, выполните этот SELLскрипт:

extern int TakeProfit = 10;
extern int StopLoss = 10;

void OnStart()
{
double TakeProfitLevel;
double StopLossLevel; 

TakeProfitLevel = Bid + TakeProfit*Point;
StopLossLevel = Bid - StopLoss*Point;

Alert("TakeProfitLevel = ", TakeProfitLevel);
Alert("StopLossLevel = ", StopLossLevel);

OrderSend("USDCAD", OP_SELL, 1.0, Ask, 10, StopLossLevel, TakeProfitLevel, "first order");

}

Я изо всех сил пытаюсь найти MQL4код, который устанавливает переменные, которые затем можно сравнивать друг с другом, например, x > yи наоборот, поэтому любая помощь будет принята с благодарностью.

Автор: p.luck Источник Размещён: 22.08.2016 09:38

Ответы (1)


1 плюс

22081 Репутация автора

Решение

Итак, по переменным:

MQL4 раньше был скомпилированным языком статической типизации.

Таким образом, исходный код содержит все предыдущие объявления, чтобы позволить компилятору предположить, что, черт возьми, переменная имеет в качестве ее типа (и внутреннего представления).

int             ii = 0;
double       coeff = 1.23456789;
color  anMQL_color = 0x224466;             // could be stated as {int|hex|literals||colornames}
datetime  aTimeNOW = D'2016.08.23';
string    aLastMSG = "[ALARM] This TracePoint shall never be executed";

Недавние изменения MQL4языка в новый - MQL4.56789принесли оба новых типа (т.е. struct-s)

Основные типы данных:

· Целые числа ( char, short, int, long, uchar, ushort, uint, ulong);

· Логический ( bool);

· Литералы ( ushort);

· Строки ( string); (но structвнутренне (!!) , так что будьте осторожны в DLL API)

· Числа с плавающей точкой ( double, float);

· Цвет ( color);

· Дата и время ( datetime);

· Перечисления ( enum).

Сложные типы данных:

· struct;

· class-Ес.

Новый язык также ввел приведение типов, как этот:

int aFactoredNUMBER = EMPTY;                             // declaration + initial value assignment
    aFactoredNUMBER = (int) ( coeff * 3.1412592653598 ); // operation with a resulting value type casting into (int)

Так как насчет x > y?

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

double x = 1,
       y = 3;
...
..
.

if (  x > y ) { ... ;
                OrderSend( , OP_BUY,  ... );
                return;
                }

if (  x < y ) { ... ;                            // THIS
                OrderSend( , OP_SELL, ... );     // COULD BE A CALL TO FUN( { OP_BUY | OP_SELL } )
                return;
                }
Автор: user3666197 Размещён: 23.08.2016 03:20
Вопросы из категории :
32x32