Доработка ботов (советников, индикаторов)

Статус
Закрыто для дальнейших ответов.

TvikN

Активный участник
Спасибо borobor,но нельзя-ли вынести и тип линий.
 

Energetik777

Активный участник
Помогите с написанием функции

Подскажите пожалуйста каким образом можно закрыть несколько профитных ордеров и самый убыточный, если общий профит этих позиций превышает заданное значение профита.
Пример:
Имеются открытые ордера
1) -100 п
2) -80 п
3) -40 п
4) -10 п
5) 20 п
6) 40 п
7) 60 п
Как автоматически выбрать и закрыть ордера 1, 5, 6, 7?
 

seraliev66

Интересующийся
доброго все времени суток.
помогите подалуйста подлечить советник Vsignale_M1_LOT.ex4
требует лицензионній ключ.
за ранее благодарен)

Попробуй номер счёта вписать,у меня даже на другом ДЦ работает.
 

expforex

Программиров
Подскажите пожалуйста каким образом можно закрыть несколько профитных ордеров и самый убыточный, если общий профит этих позиций превышает заданное значение профита.
Пример:
Имеются открытые ордера
1) -100 п
2) -80 п
3) -40 п
4) -10 п
5) 20 п
6) 40 п
7) 60 п
Как автоматически выбрать и закрыть ордера 1, 5, 6, 7?

все это делается функциями, тут скорее надо ставить вопрос кто напишет советник который Вам нужен.

но я бы закрыл не только 1&5&6&7 но и 4 например ведь сумма то больше
 

Energetik777

Активный участник
все это делается функциями, тут скорее надо ставить вопрос кто напишет советник который Вам нужен.

но я бы закрыл не только 1&5&6&7 но и 4 например ведь сумма то больше

Возможно заказать написание советника и было бы лучше, но хотелось бы самому разобраться. Если не возражаете то задам очередной вопрос по написанию данных функций.
С поиском ордера с максимальной просадкой проблем нет, то есть через цикл перебора нахожу интересующий меня ордер и создаю переменную хранящую номер тикета для дальнейших операций с ним.
Но как быть с профитными ордерами, ведь мы заранее не знаем количество ордеров, удовлетворяющих условию, то есть не можем сказать какое количество переменных нам понадобится для хранения номеров тикетов, с которыми в дальнейшем будем работать?
Или более простым решением данной задачи будет процедура подсчета общего профита у ордеров с положительным значением и если оно нас устраивает, то следующей функцией закрываем все профитные ордера.
 

TvikN

Активный участник
Парни,очень Вас прошу,посмотреть советника.Выставляет стоп и тралит его,но не хочет закрывать сделки частями.Заранее премного благодарен.
PS.Может есть другой такой же.
 

Вложения

Energetik777

Активный участник
Подскажите пожалуйста каким образом можно закрыть несколько профитных ордеров и самый убыточный, если общий профит этих позиций превышает заданное значение профита.
Пример:
Имеются открытые ордера
1) -100 п
2) -80 п
3) -40 п
4) -10 п
5) 20 п
6) 40 п
7) 60 п
Как автоматически выбрать и закрыть ордера 1, 5, 6, 7?

Всем спасибо, разобрался. Вопрос более не актуален.
 
Последнее редактирование:

Energetik777

Активный участник
разобрались Выкладывайте код

В общем то использовал все функции от KimIV с небольшой корректировкой, но если есть желание указать на ошибки, то пожалуйста.
Правда хочу заметить, что не все комментарии соответствуют действительности.
 

Вложения

Последнее редактирование:

max020780

Новичок форума
Помогите правильно составить цикл !
необходимо чтоб допустим линия индикатора А<Б то на каждом новом баре открывался ордер на sell и наоборот если А>Б то на каждом новом баре ордер на BUY
 

Variator

Новичок форума
Возможно заказать написание советника и было бы лучше, но хотелось бы самому разобраться. Если не возражаете то задам очередной вопрос по написанию данных функций.
С поиском ордера с максимальной просадкой проблем нет, то есть через цикл перебора нахожу интересующий меня ордер и создаю переменную хранящую номер тикета для дальнейших операций с ним.
Но как быть с профитными ордерами, ведь мы заранее не знаем количество ордеров, удовлетворяющих условию, то есть не можем сказать какое количество переменных нам понадобится для хранения номеров тикетов, с которыми в дальнейшем будем работать?
Или более простым решением данной задачи будет процедура подсчета общего профита у ордеров с положительным значением и если оно нас устраивает, то следующей функцией закрываем все профитные ордера.

Ну запрашиваемые функции (закрытия ряда позиций с суммарным профитом превышающим определенную величину) реализовано в советнике например EUREKA v7.0 и выше, а для реализации возможности работы с неизвестным числом на данный момент переменных можете воспользоваться динамически изменяемыми массивами (ArrayResize), но в таких ситуациях лучше применять возможность усреднения с использаванием соманды встречного закрытия ордеров(orderclosedby)
Удачи и успехов в изучении MQL4
 

Energetik777

Активный участник
Помогите правильно составить цикл !
необходимо чтоб допустим линия индикатора А<Б то на каждом новом баре открывался ордер на sell и наоборот если А>Б то на каждом новом баре ордер на BUY

Попробуйте добавить в условие на открытие такую строку кода:

if (High[0]==Open[0] && Low[0]==Open[0] && свои условия)
{
открытие ордеров
}
 

venamax

= ##$$$## =
Помогите исправить баг...т.к. индюк тормозит - свечи новые уже на графике, а он стоит. При переключении туда-сюда, все встает на свои места.
 

Вложения

Последнее редактирование:

max020780

Новичок форума
Попробуйте добавить в условие на открытие такую строку кода:

if (High[0]==Open[0] && Low[0]==Open[0] && свои условия)
{
открытие ордеров
}

спасибо за ответ проблема оказывается зарыта глубже я не правильно определил параметры для сравнения по видимому ! помогите разобраться как мне правильно взять данные с индикатора чтобы когда высвечивалась нижняя тройка открывался ордер каждый бар допустим на бай а когда верхняя тройка в противоположную сторону.
посмотрите пожалуйста в чем здесь у меня ошибка!?
extern double Period1=5;
extern double Period2=13;
extern double Period3=34;
extern string Dev_Step_1="1,3";
extern string Dev_Step_2="8,5";
extern string Dev_Step_3="21,12";
extern int Symbol_1_Kod=140;
extern int Symbol_2_Kod=141;
extern int Symbol_3_Kod=142;
int New_Bar;
int TimeBar;


int start()
{

int P1= Period1 ;
int P2= Period2 ;
int P3= Period3 ;
if (TimeBar==Time[0]) return(0);
TimeBar=Time[0];

double L_4=iCustom(NULL,PERIOD_H1,"volna",P1,P2,P3,4,0);
double L_5=iCustom(NULL,PERIOD_H1,"volna",P1,P2,P3,5,0);



if (L_4<L_5 ) {

Comment("Работаем на SELL");

OrderSend(Symbol(),OP_SELL,0.01,Bid,30,0,Bid-250*Point);
}

if (L_4>L_5 ){
Comment("Работаем на BUY");

OrderSend(Symbol(),OP_BUY,0.01,Ask,30,0,Ask+250*Po int);
}

}
 

Вложения

  • volna.mq4
    volna.mq4
    8,2 КБ · Просмотры: 64

Energetik777

Активный участник
спасибо за ответ проблема оказывается зарыта глубже я не правильно определил параметры для сравнения по видимому ! помогите разобраться как мне правильно взять данные с индикатора чтобы когда высвечивалась нижняя тройка открывался ордер каждый бар допустим на бай а когда верхняя тройка в противоположную сторону.
посмотрите пожалуйста в чем здесь у меня ошибка!?

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

borobor

Элитный участник
спасибо за ответ проблема оказывается зарыта глубже я не правильно определил параметры для сравнения по видимому ! помогите разобраться как мне правильно взять данные с индикатора чтобы когда высвечивалась нижняя тройка открывался ордер каждый бар допустим на бай а когда верхняя тройка в противоположную сторону.
посмотрите пожалуйста в чем здесь у меня ошибка!?
extern double Period1=5;
extern double Period2=13;
extern double Period3=34;
extern string Dev_Step_1="1,3";
extern string Dev_Step_2="8,5";
extern string Dev_Step_3="21,12";
extern int Symbol_1_Kod=140;
extern int Symbol_2_Kod=141;
extern int Symbol_3_Kod=142;
int New_Bar;
int TimeBar;


int start()
{

int P1= Period1 ;
int P2= Period2 ;
int P3= Period3 ;
if (TimeBar==Time[0]) return(0);
TimeBar=Time[0];

double L_4=iCustom(NULL,PERIOD_H1,"volna",P1,P2,P3,4,0);
double L_5=iCustom(NULL,PERIOD_H1,"volna",P1,P2,P3,5,0);



if (L_4<L_5 ) {

Comment("Работаем на SELL");

OrderSend(Symbol(),OP_SELL,0.01,Bid,30,0,Bid-250*Point);
}

if (L_4>L_5 ){
Comment("Работаем на BUY");

OrderSend(Symbol(),OP_BUY,0.01,Ask,30,0,Ask+250*Po int);
}

}
у тебя неправильно прописаны сигналы бай и селл if (L_4>L_5 ) и if (L_4<L_5 )
по функциям индюк похож на зигзаг или фрактал(один не может быть меньше или больше другого)
поищи советники с этими индюками и посмотри как можно сделать
 
Статус
Закрыто для дальнейших ответов.

Отслеживают (859) Посмотреть

Верх