Может ли кто-нибудь показать мне, как сделать этот код короче? Как использовать для этого цикл for?
extern double S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15;
if (S1==1234) S1=DoubleToString(S1);
if (S2==1234) S2=DoubleToString(S2);
if (S3==1234) S3=DoubleToString(S3);
if (S4==1234) S4=DoubleToString(S4);
if (S5==1234) S5=DoubleToString(S5);
if (S6==1234) S6=DoubleToString(S6);
if (S7==1234) S7=DoubleToString(S7);
if (S8==1234) S8=DoubleToString(S8);
if (S9==1234) S9=DoubleToString(S9);
Хотелось бы что-то подобное, но не знаю, как изменить имена переменных.
for(i=1; i<=9; i++){
if (S+i==1234) S+i=DoubleToString(S+i);
}
Может ли кто-нибудь показать мне, как сделать этот код короче? Как использовать для этого цикл for?
Хотелось бы что-то подобное, но не знаю, как изменить имена переменных.
Вы не можете инициализировать массив списком входов из-за ограничений языка MQL. (Подойдут только константные выражения типа { 2, 5, 3.1 } ).
Но поскольку вам все равно нужно преобразовывать двойки в строки, вы можете использовать StringFormat. Самое интересное в этой функции то, что она принимает произвольное количество аргументов.
С помощью StringSplit можно создать массив "на лету":
Я потратил несколько часов, пытаясь заставить советника/утилиту работать правильно, и сделал несколько изменений, пока мой мозг не онемел. Прилагается предварительная версия, и я улучшу ее, как только преодолею препятствие основ правильной работы, которая заключается в подаче сигнала тревоги при добавлении открытого ордера на покупку/продажу и другого сигнала при закрытии открытого ордера на покупку/продажу. Эта версия иногда работает, а иногда нет, так что на данный момент она ненадежна.
//+------------------------------------------------------------------+//| myNotify.mq4 |//| Notify me by sound file of change in orders |//+------------------------------------------------------------------+//---- input parametersexternstring OrderClosedWav = "OrderClosed.wav";
externstring OrderOpenedWav = "OrderOpened.wav";
string sVersion = "1.39";
int iOld, iNew = 0;
int i = 0;
uchar ii = 0;
long NewOrdersHash = 0;
long OldOrdersHash = 0;
int nOrders = 0;
//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
//----//----return(0);
}
// +------------------------------------------------------------------+// | expert deinitialization function |// +------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
nOrders = 0;
NewOrdersHash = 0;
//First Passfor(i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS);
if (OrderType() < 2) // NOT "OP_BUYLIMIT" || "OP_BUYSTOP" //|| "OP_SELLLIMIT" || "OP_SELLSTOP")
{
NewOrdersHash = NewOrdersHash + OrderTicket();
nOrders++;
}
}
OldOrdersHash = NewOrdersHash;
iOld =nOrders;
Comment ("Ver ",sVersion," \n",
iOld,"\n", iNew,"\n\n", ii,"\n\n",
OrderOpenedWav,"\n",
OrderClosedWav,"\n\n",
"Old: ",OldOrdersHash,"\n",
"New: ",NewOrdersHash,"\n\n",
nOrders,"\n");
// WaitSleep(2000);
//Second Pass to compare after short pause
nOrders = 0;
NewOrdersHash = 0;
for(i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS);
if (OrderType() < 2) // NOT "OP_BUYLIMIT" || "OP_BUYSTOP" //|| "OP_SELLLIMIT" || "OP_SELLSTOP")
{
NewOrdersHash = NewOrdersHash + OrderTicket();
nOrders++;
}
}
iNew = nOrders;
if (ii > 24) {ii = 1;} else {ii++;}
Comment ("Ver ",sVersion," \n",
iOld,"\n", iNew,"\n\n", ii,"\n\n",
OrderOpenedWav,"\n",
OrderClosedWav,"\n\n",
"Old: ",OldOrdersHash,"\n",
"New: ",NewOrdersHash,"\n\n",
nOrders,"\n");
if (OldOrdersHash != NewOrdersHash)
{
if (iNew > iOld)
PlaySound(OrderOpenedWav);
elsePlaySound(OrderClosedWav);
}
return(0);
}
/*
void OrdersF()
{
nOrders = 0;
NewOrdersHash = 0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS);
if (OrderType() < 2)
{
NewOrdersHash = NewOrdersHash + OrderTicket();
nOrders++;
}
}
iNew = nOrders;
return;
}
*///+------------------------------------------------------------------+
У меня есть идея. Но я не очень хорошо знаю код mq4.
Предыдущий максимум ниже 2-го предыдущего максимума, тогда покупаемотложенный ордер по предыдущему максимуму * 2% или 1% и когда цена на текущей свече коснется этого ордера покупаем.
Предыдущий минимум выше, чем 2 предыдущих минимума, то продаем отложенный ордер по предыдущему минимуму * -2% или -1% и когда цена на текущей свече коснется этой ордера продаем.
Любой период. Нет цели Нет стоп-лосса. Трейлинг стоп лосс как противоположный.
Благодарен всем, кто может сделать код mq4. Мне нужна помощь. Только MT4.
Может ли кто-нибудь показать мне, как сделать этот код короче? Как использовать для этого цикл for?
Хотелось бы что-то подобное, но не знаю, как изменить имена переменных.
Может ли кто-нибудь показать мне, как сделать этот код короче? Как использовать для этого цикл for?
Хотелось бы что-то подобное, но не знаю, как изменить имена переменных.
Вы не можете инициализировать массив списком входов из-за ограничений языка MQL. (Подойдут только константные выражения типа { 2, 5, 3.1 } ).
Но поскольку вам все равно нужно преобразовывать двойки в строки, вы можете использовать StringFormat. Самое интересное в этой функции то, что она принимает произвольное количество аргументов.
С помощью StringSplit можно создать массив "на лету":
Я слишком долго пытался разобраться в этом, мне нужна помощь.
Значения конвертов не соответствуют rsiArray[0] или любому значению, которое я вижу на графиках, и я просто не могу понять, почему.
Есть идеи?
Спасибо
EDIT: (исправлено) Хорошо, все, что мне нужно было сделать, это перезапустить mt4, и код работал нормально.
Я потратил несколько часов, пытаясь заставить советника/утилиту работать правильно, и сделал несколько изменений, пока мой мозг не онемел. Прилагается предварительная версия, и я улучшу ее, как только преодолею препятствие основ правильной работы, которая заключается в подаче сигнала тревоги при добавлении открытого ордера на покупку/продажу и другого сигнала при закрытии открытого ордера на покупку/продажу. Эта версия иногда работает, а иногда нет, так что на данный момент она ненадежна.
Привет, ребята, я новичок. Я хочу сделать очень простую правку в этом индикаторе.
Как и где я могу просто поместить в поле Описание горизонтальной линии слово, Alert_ ?
чтобы оно автоматически появилось?
С нетерпением жду вашего ответа
Кто-нибудь может помочь мне закодировать это. Помещаю прямоугольник как максимум и минимум за последние 3 месяца, как показано на рисунке спасибо
кто-нибудь помогите со стоплоссом на предыдущем пересечении ma
Привет,
У меня есть идея. Но я не очень хорошо знаю код mq4.
Предыдущий максимум ниже 2-го предыдущего максимума, тогда покупаемотложенный ордер по предыдущему максимуму * 2% или 1% и когда цена на текущей свече коснется этого ордера покупаем.
Предыдущий минимум выше, чем 2 предыдущих минимума, то продаем отложенный ордер по предыдущему минимуму * -2% или -1% и когда цена на текущей свече коснется этой ордера продаем.
Любой период. Нет цели Нет стоп-лосса. Трейлинг стоп лосс как противоположный.
Благодарен всем, кто может сделать код mq4. Мне нужна помощь. Только MT4.
Привет...
Можете ли вы сделать эксперт для этой стратегии, пожалуйста
Эксперт по усилению
Настройки:
1.Вариант: только продажа / только покупка
2.TP: 50
3.Sl: 00
4.Шаг: 150
5.Стартовый лот: 0,1
6.Умножение: 1.2.4.8.16... ... ...
7.Всего заказов: 100
8.Магическое число: 111111
Метод работы:
1- Открытие позиции на старте автоматически на указанный размер лота .
2- Изменение Tp для всех сделок на каждом усилении .
Согласно следующему уравнению: Tp для последней двойной позиции покрывает нам весь плавающий убыток + прибыль последней позиции .
3- Возврат к начальному лоту .
Привет ...
Можете ли вы сделать эксперт для этой стратегии, пожалуйста
Эксперт по усилению
Настройки :
1. Опция: Только продажа / Только покупка
2. TP: 50
3. Sl: 00
4. Шаг: 150
5. Стартовый лот: 0,1
6. Умножение: 1.2.4.8.16... ... ...
7. Всего заказов: 100
8. Магическое число: 111111
Метод работы :
1- Открытие позиции на старте автоматически на указанный размер лота .
2- Изменение Tp для всех сделок на каждом усилении .
Согласно следующему уравнению: Tp для последней двойной позиции покрывает нам весь плавающий убыток + прибыль последней позиции .
3- Возврат к начальному лоту .
Опубликуйте это как работу в разделе Фриланс.