Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 686

 
Maxim Kuznetsov:

найти предыдущую сделку в истории и посмотреть :-) если закрылась по стоп-лосс то у неё:

- в коммент добавлено [sl] или (sl) - насколько понимаю это от настроек сервера. Как правило первое.

- цена закрытия около stoploss

это их нужно фильтровать по времени 

 
Roman Sharanov:

это их нужно фильтровать по времени 

??

у вашего советника глубокий склероз и он не помнит ордер который открыл ?

 
Maxim Kuznetsov:

??

у вашего советника глубокий склероз и он не помнит ордер который открыл ?

Дело не в "помнит", а в правильном перезапуске без потери данных. Для этого нужно не помнить, а найти. Для тестера конечно и запоминание пойдёт.
 

Здравствуйте, что-то я жестко туплю.

Как создать ассоциативный массив в mql4? Нужно хранить ключ - timecurrent и значение - цена тика. Ну и потом работать с этими парами.

 
Roman Sharanov:

Еще вопрос, почему МТ5 отказывает импортировать тики?

У меня есть CSV файл с котировками, что ему надо?

ему надо чтобы разделитель полей был правильный и дата,время в отдельных полях и нужном формате ..

и возможно чтобы строки разделялись \r\n (не помню берёт ли он просто \n или это сильно зависит от кодировки)

 
Artyom Trishkin:
Дело не в "помнит", а в правильном перезапуске без потери данных. Для этого нужно не помнить, а найти. Для тестера конечно и запоминание пойдёт.

Это один раз на первом тике - пройти доступную историю и выбрать самый последний из своих :-)

(у ТС судя по вопросу более 1-го открытого ордера в рынке нет, и в историю они пачками не улетают)

дальше просто помнить..

 

Привет профессионалам!
Нужна помощь в написании части кода советника.
Хочу в советнике реализовать динамическую установку StopLoss и TakeProfit в зависимости от входных данных.
Данные беру по HIGH и LOW за период (например, предыдущие 24 бара).
         

...использовал для этого такие строки:

Ind_HIGH=High[iHighest(Symbol(),0,MODE_HIGH,24,1)];                // получаем индексы экстремумов за период
Ind_LOW =Low[iLowest(Symbol(),0,MODE_LOW,24,1)];                  // получаем индексы экстремумов за период

далее, определял значение цены на этих экстремумах:

Ind_H =iHigh(Symbol(),0,Ind_HIGH);                                            // получаем значение цены HIGH
Ind_L =iLow(Symbol(),0,Ind_LOW);                                              // получаем значение цены LOW

...и значение цены на 1 баре: 

Ind_C  =iClose(Symbol(),0,1);                                                      // получаем значение цены CLOSE

Сравнивая значения цен на Ind_C и Ind_H : Ind_L хотел получить разницу цены и перевести её в пункты, ведь для SL и TP нужны, вроде, целые числа.
Но, почему-то, ничего не получается. Нужно чтобы на выходе получалось например, 290 и 193 (как на картинке)
Помогите написать эту часть кода...
Заранее спасибо!


 
concilere:

Привет профессионалам!
Нужна помощь в написании части кода советника.
Хочу в советнике реализовать динамическую установку StopLoss и TakeProfit в зависимости от входных данных.
Данные беру по HIGH и LOW за период (например, предыдущие 24 бара).
         

...использовал для этого такие строки:

Ind_HIGH=High[iHighest(Symbol(),0,MODE_HIGH,24,1)];                // получаем индексы экстремумов за период
Ind_LOW =Low[iLowest(Symbol(),0,MODE_LOW,24,1)];                  // получаем индексы экстремумов за период

далее, определял значение цены на этих экстремумах:

Ind_H =iHigh(Symbol(),0,Ind_HIGH);                                            // получаем значение цены HIGH
Ind_L =iLow(Symbol(),0,Ind_LOW);                                              // получаем значение цены LOW

...и значение цены на 1 баре: 

Ind_C  =iClose(Symbol(),0,1);                                                      // получаем значение цены CLOSE

Сравнивая значения цен на Ind_C и Ind_H : Ind_L хотел получить разницу цены и перевести её в пункты, ведь для SL и TP нужны, вроде, целые числа.
Но, почему-то, ничего не получается. Нужно чтобы на выходе получалось например, 290 и 193 (как на картинке)
Помогите написать эту часть кода...
Заранее спасибо!


Вот где индекс макс/мин бара

Ind_HIGH=iHighest(Symbol(),0,MODE_HIGH,24,1);                // получаем индексы экстремумов за период
Ind_LOW =iLowest(Symbol(),0,MODE_LOW,24,1);                  // получаем индексы экстремумов за период

 
Vitaly Muzichenko:

Вот где индекс макс/мин бара

Ind_HIGH=iHighest(Symbol(),0,MODE_HIGH,24,1);                // получаем индексы экстремумов за период
Ind_LOW =iLowest(Symbol(),0,MODE_LOW,24,1);                  // получаем индексы экстремумов за период

Да, ура! Заработало!
Виталий, спасибо!

Сначала, терминал начал ругаться. Пришлось изменить метод исчисления,
было так:

StopLoss=(Ind_C1-Ind_L24);                                                    //Вычисление SL откр.Buy
TakeProfit=(Ind_C1-Ind_L24);                                                 //Вычисление TP откр.Buy

а стало вот так:

StopLoss=(Ind_C1-Ind_L24)/Point;                                          //Вычисление SL откр.Buy
TakeProfit=(Ind_C1-Ind_L24)/Point;                                       //Вычисление TP откр.Buy

и всё заработало...))



 

Есть индикатор rsx-nrp-coronforex.mq4 скажите какие ему параметры подставлять чтобы получить данные с кривой?

double RSX_M = iCustom(Symbol(),PERIOD_CURRENT,"\\rsx-nrp-coronforex",??? Что тут писать ???);

Файлы: