Уроки по программированию на языке MQL4 от eevviill

Aterk

Новичок форума
А что там не так? У меня открылось сразу 2 отложенных ордера.

Увидел.
Через эту строчку советник не доходит до подсчёта и открытия ордеров. Кстати. Для чего она?
if (n>0 || Profit!=0) return;

Вот именно eevviill!!!! блин и даром там не нужна!!! теперь все в полном порядке!!! Условие выполняется полностью.
Только что-то в визуализация в тестере отсутствует, в чем проблема может быть?
 

eevviill

Заблокирован
Вот именно eevviill!!!! блин и даром там не нужна!!! теперь все в полном порядке!!! Условие выполняется полностью.
Только что-то в визуализация в тестере отсутствует, в чем проблема может быть?
У меня всё визуализирует.
 

Aterk

Новичок форума
У меня всё визуализирует.
Так, все в порядке, заработало. Терминал завис, испугался что-ли).
Спасибо, eevviill. С этим уроком я разобрался почти на все 100%.
сейчас множитель лота прикрутить и можно будет смотреть что за зверь.
 

Aterk

Новичок форума
У меня всё визуализирует.

eevviill еще один вопрос, как реализовать в моем примере увеличение лота на коэфициент K_Lot с каждым новым отложенным ордером. Вроде как по ходу мысли понятно, а вот програмно отразить не получается.
 

eevviill

Заблокирован
eevviill еще один вопрос, как реализовать в моем примере увеличение лота на коэфициент K_Lot с каждым новым отложенным ордером. Вроде как по ходу мысли понятно, а вот програмно отразить не получается.
Если те что на графике, то думаю так.
PHP:
extern int K_Lot=2;
 
int start()
{
...
CountOpenPositions();
int koef_BS_orders=buy_stop;
int koef_SS_orders=sell_stop;
double Lot_BS=Lot;
if(buy_stop>0){
Lot_BS=Lot*K_Lot*koef_BS_orders;
}
double Lot_SS=Lot;
if(sell_stop>0){
Lot_SS=Lot*K_Lot*koef_SS_orders;
}
 
 if (buy_stop<MaxStopOrders)
 OrderSend(Symbol(),OP_BUYSTOP,Lot_BS,Ask+delta*point,slippage,StopLoss,TakeProfit,comment,magic,0,Green); 
 if (sell_stop<MaxStopOrders)
 OrderSend(Symbol(),OP_SELLSTOP,Lot_SS,Bid-delta*point,slippage,StopLoss,TakeProfit,comment,magic,0,OrangeRed);
Но потом тебе ещё надо будет упорядочить Лот. Чтобы он был таким как разрешает брокер. Пригодится
PHP:
NormalizeDouble,MODE_MINSTEP,MODE_MINLOT
 

Вложения

  • 1.mq4
    5,4 КБ · Просмотры: 46

Aterk

Новичок форума
Если те что на графике, то думаю так.
PHP:
extern int K_Lot=2;
 
int start()
{
...
CountOpenPositions();
int koef_BS_orders=buy_stop;
int koef_SS_orders=sell_stop;
double Lot_BS=Lot;
if(buy_stop>0){
Lot_BS=Lot*K_Lot*koef_BS_orders;
}
double Lot_SS=Lot;
if(sell_stop>0){
Lot_SS=Lot*K_Lot*koef_SS_orders;
}
 
 if (buy_stop<MaxStopOrders)
 OrderSend(Symbol(),OP_BUYSTOP,Lot_BS,Ask+delta*point,slippage,StopLoss,TakeProfit,comment,magic,0,Green); 
 if (sell_stop<MaxStopOrders)
 OrderSend(Symbol(),OP_SELLSTOP,Lot_SS,Bid-delta*point,slippage,StopLoss,TakeProfit,comment,magic,0,OrangeRed);
Но потом тебе ещё надо будет упорядочить Лот. Чтобы он был таким как разрешает брокер. Пригодится
PHP:
NormalizeDouble,MODE_MINSTEP,MODE_MINLOT

Благодарю, будем крутить гайки дальше)
 

777igor777

Прохожий
eevviill,добрый день-вопрос по функции iCustom. Вы пишете : Наш пример будет основан на советнике который берет данные с индикатора sidus : и далее текст программы.
Я понял что этот текст- и есть советник.
Но затем скачал текст прикрепленного внизу индикатора siduc и увидел тот же текст?!
Так где-же индикатор, а где советник я так и не понял. Помогите разобраться пожалуйста.
 

eevviill

Заблокирован
Но затем скачал текст
Я думаю вам надо сначало все уроки перечитать.

Так где-же индикатор, а где советник я так и не понял. Помогите разобраться пожалуйста.
Если прикреплено 2 файла. 1 из них советник, то наверно второй индикатор.
 

Aterk

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

eevviill

Заблокирован
Я так понимаю тема массивы сложна не на шутку, но может eevviill попробует растолковать от самых мелочей, с чего начинать, как заполнять масссив и как использовать эти данные.
О. Вот с этим не дружу. Пока обхожусь без них.
 

saenko

Интересующийся
У меня вопрос по 13 уроку...

3)Условие на покупку. Мы указали что если значение arrow_up больше 0 то бай.

if(arrow_up>0)
if(arrow_down>0)

Почему эти значения больше 0? Обьясните почему вы именно такое условие задаете?
 

eevviill

Заблокирован
У меня вопрос по 13 уроку...

3)Условие на покупку. Мы указали что если значение arrow_up больше 0 то бай.

if(arrow_up>0)
if(arrow_down>0)

Почему эти значения больше 0? Обьясните почему вы именно такое условие задаете?
Цытируюю себя. Более подробно объяснить не могу.
[IMPORTANT]
3)Условие на покупку. Мы указали что если значение arrow_up больше 0 то бай.
Почему именно так???
Тут надо проводить опыт.
3.1)После функции iCustom где нибудь в конце пишем строчку
Alert(arrow_up," ",arrow_down). Это делается для того чтобы узнать что(какое значение) нам возвращает индикатор.
3.2)Заходим в тестер. Запускаем советник с визуализацией. После окончания тестирования заходим в вкладку журнал тестера и смотрим что там нам Алерт писал.
3.3)Итак. Когда стрелок нет Алерт выдаёт (0 0). Вывод (0-стрелки вверх нету 0-стрелки вниз нету).
Если (1.2345 0). Вывод. Ага! Если появилась стрелка вверх, то индикатор возвпащает цену где появилась. Ну и наоборот.
Конечный итог. 0=нету сигнала. >0 есть сигнал.
[/IMPORTANT]

P.S. Обычно индикаторы если нет сигнала возвращают что то типа 567765543. Тогда надо так if(arrow_up<50000).
 

eevviill

Заблокирован
Я так понимаю тема массивы сложна не на шутку, но может eevviill попробует растолковать от самых мелочей, с чего начинать, как заполнять масссив и как использовать эти данные.
Вот нашел.
[IMPORTANT]
Массивы (Arrays)

В жизни мы часто группируем похожие объекты. В программировании тоже очень удобно группировать данные одного типа. Для достижения этой цели используются массивы.
Массив - это упорядоченное множество элементов одного типа. Нумерация в массиве начинается с нуля.
Объявление массива:
int my_array[50];

Здесь мы объявили массив, в котором может содержатся до 50 (включительно) элементов типа integer.
Доступ к элементу происходит по его индексу.
Например, доступ к 0-вому элементу массива и присваивания ему значения 16 выглядит так:
my_array[0] = 16;

Массив можно инициализировать в строчке его объявления. Делается это так:int my_array[5] = {16,24,15,8901,17}
[/IMPORTANT]
Я то в принцыпе понимаю что это, и в самых простых случаях могу даже их применить, но не более. Это что то типа групирования данных.

int mass[45]; это обявление размера массива(46 елементов).
...
mass[23]=78; это мы присвоили 24 елементу массива число 78;

Бывает в виде матрицы(многомерными) .
int mass[5][45]; тоесть на каждый элемент 1-ой групы есть 46 элементов второй.
 

saenko

Интересующийся
а вы определяете какое значение возвращает индикатор?
 

Aterk

Новичок форума
Вот нашел.
[IMPORTANT]
Массивы (Arrays)

В жизни мы часто группируем похожие объекты. В программировании тоже очень удобно группировать данные одного типа. Для достижения этой цели используются массивы.
Массив - это упорядоченное множество элементов одного типа. Нумерация в массиве начинается с нуля.
Объявление массива:
int my_array[50];

Здесь мы объявили массив, в котором может содержатся до 50 (включительно) элементов типа integer.
Доступ к элементу происходит по его индексу.
Например, доступ к 0-вому элементу массива и присваивания ему значения 16 выглядит так:
my_array[0] = 16;

Массив можно инициализировать в строчке его объявления. Делается это так:int my_array[5] = {16,24,15,8901,17}
[/IMPORTANT]
Я то в принцыпе понимаю что это, и в самых простых случаях могу даже их применить, но не более. Это что то типа групирования данных.

int mass[45]; это обявление размера массива(46 елементов).
...
mass[23]=78; это мы присвоили 24 елементу массива число 78;

Бывает в виде матрицы(многомерными) .
int mass[5][45]; тоесть на каждый элемент 1-ой групы есть 46 элементов второй.

Я так понимаю это как сетка где [x][y] координаты нужной нам ячейки, типа "морской бой". Занесли по координатам инфу, потом по ним же читаем. А чтобы понимать что меняется в массиве, сравниваем массив с предыдущего тика с массивом на текущем. И видим куда уплыли наши корабли... Вот как то так.
 
Верх