Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 486
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Если взять ваше число 108 то максимум в степень 151 получится возвести - 108^151=1,11426138071861е+307
108^152=1,20340229117609е+309 - уже слишком для программирования в МКЛ, не говоря уж о 108^4096
Что за вычисления что такие масштабы понадобились?
я пытаюсь синтезировать аналитику движения цены и нлп-управление вниманием, и мозг на автопилоте :)
Я начал изучать MQL4 и не могу понять как осуществляется выбор ордера
из учебника:
for(int i=1; i<=OrdersTotal(); i++) // Цикл перебора ордер
{
if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
{
if (OrderSymbol()!= Symb) continue;
Я понимаю так: Для i=1, пока i<= Количества ордеров
Если Выбранный ордер в позиции i-1(т.е ордер №0) существует
Сравнить его по символу
После этого к i прибавить 1(i++) и начать новую итерацию
Не могу понять комментарий // Если есть следующий (что имеется ввиду: следующий по позиции или этот ордер который выбирается в данный момент?)
Объясните пожалуйста русским языком.
наверно имелось ввилу если ордер есть, т.е. он существует под номером и-1 то идем к следующему условию.
Всегда будет находить ордер под нулевым номером (и-1 который). Дикий какой-то метод определения "следующего" ордера, воистину вводит в заблуждение...
Всегда будет находить ордер под нулевым номером (и-1 который). Дикий какой-то метод определения "следующего" ордера, воистину вводит в заблуждение...
если ордеров нет то при такой конструкции:
он не перейдет к следующему условию.
потому что ордера и-1 (в нашем случае =0) нет
конечно так писать не привычно, и не понятно почему именно так,
а не например так:
Здраствуйте господа прогеры,у меня вопрос не могу научить часть кода закрывать процент от баланса счета. он закрывает но не процент а все сразу и все ордера какие есть в рынке.мне надо что бы закрывал определенный ордер и вычесленный процент от баланса депозита.подскажите чего не так делаю ?
extern double Percent = 2.0;
extern int Slippage = 2;
double stop;
void OnStart()
{
if (Digits == 3 || Digits == 5)
{
Slippage *= 10;
}
for(int i = OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol())
{
if (OrderType() == OP_BUY || OrderType() == OP_SELL)
{
if(stop==AccountBalance()/100*Percent)
stop=AccountBalance()/100*Percent;
if(stop<=AccountBalance())
{
OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Aqua);
OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Aqua);
}//if(ostop<=AccountBalance())
}//if(ostop==AccountBalance()/100*Percent)
}//if (OrderSymbol() == Symbol() )
}//if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
}//for(int i = OrdersTotal()-1; i>=0; i--)
return;
}//void OnStart()
//+-----------------------------------------------------------------
это как?
а это:
никогда не выполниться
поэтому:
всегда будет работать при каждом ордере.
ВЫВОД: все неправильно.
Вашу функцию надо продумывать, быстрого ответа у меня нет.
но для начала хотя бы так:
если ордеров нет то при такой конструкции:
он не перейдет к следующему условию.
потому что ордера и-1 (в нашем случае =0) нет
конечно так писать не привычно, и не понятно почему именно так,
а не например так:
Да я тоже когда читал подумал, почему сразу не поставить i=0, вроде проще и понятней.
Вот весь код скрипта, посмотрите может есть веские причины почему автор написал i=1, а не i=0, я просто еще мало разбираюсь в этом и могу просто не увидеть, а мне нужно именно понять механизм работы, чтобы потом вопросов не возникало