[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 81
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
extern bool BUY = true;
extern int Magic = 0;
extern double Lot = 0.1;
extern int takeprofit = 0;
extern int stoploss = 0;
extern int slippage = 3;
double SL,TP;
int init(){
return(0);
}
int start()
{
if (BUY)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;
OPENORDER ("Buy");
BUY=false;
}
return(0);
}
void OPENORDER(string ord)
{
int error;
while (true)
{ error=true;
if (ord=="Buy") error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0){BUY = false;}
}
return;
}
Дайте, пожалуйста, пример. Я только учусь, и ещё не сталкивался с задачей установки флага. )
Подскажите, пожалуйста, как в советнике разрешить лишь однократное выполнение условия (к примеру, открытие ордера), а не повторение его с каждым тиком. При этом при закрытии позиции советник не должен открывать новую. Я попытался изобразить, но не выходит, что задумывалось.
Заранее благодарю.почему Вы назвали переменную в которую сохранится тикет ордера error ?
if (ord=="Buy") error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0){BUY = false;}
почитайте про OrderSend(), думаю вопросы сами снимутся, я бы написал примерно так:
Может вы читали чуть ранее я озвучил свою проблму. Вроде как подобрали решение, но я не могу айти в книжке как в mql работать со строкой(
как вынуть поштучно из строки цифры?
Может вы читали чуть ранее я озвучил свою проблму. Вроде как подобрали решение, но я не могу айти в книжке как в mql работать со строкой(
как вынуть поштучно из строки цифры?
Создайте скрипт, который поэкспериментирует со строковыми функциями MQL4 - смотрите тут https://docs.mql4.com/ru/strings
ZERO
по каким правилам, к примеру?
Создайте скрипт, который поэкспериментирует со строковыми функциями MQL4 - смотрите тут https://docs.mql4.com/ru/strings/StringSubstr
спасибо!
Может вы читали чуть ранее я озвучил свою проблму. Вроде как подобрали решение, но я не могу айти в книжке как в mql работать со строкой(
как вынуть поштучно из строки цифры?
нужно перевести число в строку https://docs.mql4.com/ru/convert/DoubleToStr
нужно отрезать от начала https://docs.mql4.com/ru/strings/StringLen часть строки https://docs.mql4.com/ru/strings/StringSubstr
и перевести всё обратно в вещественный тип https://docs.mql4.com/ru/convert/StrToDouble
вот и все необходимые ф-ции по работе со строками, возможно Вам хватит StrToDouble()
но таким "некрасивым способом" Вы точно отрежете, а не округлите число, есть еще вариант: умножить вещественное число на 10 в степени х, и присвоить результат типу int - если не ошибаюсь, то округления тоже не будет, затем разделите int на 10 в степени x
нужно перевести число в строку https://docs.mql4.com/ru/convert/DoubleToStr
нужно отрезать от начала https://docs.mql4.com/ru/strings/StringLen часть строки https://docs.mql4.com/ru/strings/StringSubstr
и перевести всё обратно в вещественный тип https://docs.mql4.com/ru/convert/StrToDouble
вот и все необходимые ф-ции по работе со строками, возможно Вам хватит StrToDouble()
но таким "некрасивым способом" Вы точно отрежете, а не округлите число, есть еще вариант: умножить вещественное число на 10 в степени х, и присвоить результат типу int - если не ошибаюсь, то округления тоже не будет, затем разделите int на 10 в степени x
мне хотябы *отрезать*, т.к. число получается вынуть из индикатора только в строку.. спасибо за совет, буду экспериментировать)
IgorM:
NameLess: