Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 836
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
А ничего что указано
ничего, ветка для МТ4, соответственно и не обращаешь внимания на это
ладно, занимайтесь, скучно здесь
Приветствую всех. Удачи в жизни и профита в работе.
Обращаюсь с просьбой помочь(неожидано, да? :) ).
В Mql я нуб нубом, 2 дня "в теме". Риал заставляет перейти на автоматическую торговлю, пытаюсь "написать"(в реале собрать из разных частей) сову для своей флэтовой ТС и конечно на каждой строке запарки :). Вот уже часов 10 парюсь над очередной траблой и пока "а воз и ныне там". Если кто поможет советом или примером буду премного благодарен(устно и письменно, а главное в душЕ).
В общем так... Есть ТС, успешно используемая мной уже давненько. По торг.условиям на одном и том же инструменте возможны разнонаправленные рын.ордера(без отложенных). К просевшей позиции возможен долив при торг.сигнале, при условии, что позиция просела не менее чем на Х пипс, иногда бывает и долив к доливу(при тех же условиях (торг.сигнал + размер просадки)). Проблема(текущая) в открытии доп.позиций, а именно... как проверить и вернуть значение убытка по доливаемой позе. По примеру https://www.mql5.com/ru/forum/117061 подправил код для присвоение каждой позе своего Магика, но это и все. Как выбрать именно просевшую позу и вернуть значение её убытка.... :(.
"мой" код открытия сделок.
//-----------------
if (NumberOfPositions(Symbol(),OP_BUY, Magic)<1)
{
if (мои условия входа)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP = 0;
if (stoploss!=0) SL = NormalizeDouble(Bid - stoploss*Point,Digits); else SL = 0;
ticket=OrderSend(Symbol(),OP_BUY,LOT,NormalizeDouble(Ask,Digits),5,SL,TP,"BUY",Magic,0,Blue);
if(ticket < 0) { Print("Ошибка открытия ордера BUY #", GetLastError());}
}}
if (NumberOfPositions(Symbol(),OP_SELL, Magic)<1)
{
if (мои условия входа)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP = 0;
if (stoploss!=0) SL = NormalizeDouble(Ask + stoploss*Point,Digits); else SL = 0;
ticket=OrderSend(Symbol(),OP_SELL,LOT,NormalizeDouble(Bid,Digits),5,SL,TP,"SELL",Magic,0,Red);
if(ticket < 0) { Print("Ошибка открытия ордера SELL #", GetLastError());}
}}
//---------------
Дополнительные ордера планируется открывать по следующему коду...
//---------------
if (NumberOfPositions(Symbol(),OP_BUY, Magic)==1 && NumberOfPositions(Symbol(),OP_BUY, Magic_2)<1)
{
if (мои условия входа && GetProfitOpenPosInPoint(Symbol(),OP_BUY,Magic)>= LEVEL_1)
{
ticket=OrderSend(Symbol(),OP_BUY,LOT,NormalizeDouble(Ask,Digits),5,SL,TP,"доп. покупка",Magic_2,0,Blue);
if(ticket < 0) { Print("Ошибка открытия ордера BUY #", GetLastError()); }
} }
//---------------
И вот тут то я и встал :). Что использовать вместо GetProfitOpenPosInPoint(Symbol(),OP_BUY,Magic) . По идее надо Уровень_просадки(Symbol(),OP_BUY,Magic) заюзать, а вот как его получить...
Помогите плииз, будьте другами.
З.Ы. Если будете советовать, очень прошу, учитывайте, что я пока нубяра еще тот, не поленитесь чуток подробнее направить меня, ну типа если: ЛЕС ТАМ, то не забудьте направление указать <------ || ------>.
Спс за внимание:).
ничего, ветка для МТ4, соответственно и не обращаешь внимания на это
ладно, занимайтесь, скучно здесь
Подскажите где аналогичная ветка для МТ5, я там спрошу...
Подскажите где аналогичная ветка для МТ5, я там спрошу...
А ничего что указано
В МТ4 Вызов функции из Индикатора проходит без ошибок и работает как нужно (int handle=iEnvelopes(Symbol(), tf, period, method, shift, price, Deviation(kanal), buff);) Думал что и в МТ5 так же возможно.
Подскажите как правильно сделать ?
В МТ4 Вызов функции из Индикатора проходит без ошибок и работает как нужно (int handle=iEnvelopes(Symbol(), tf, period, method, shift, price, Deviation(kanal), buff);) Думал что и в МТ5 так же возможно.
Подскажите как правильно сделать ?
Так невозможно получить данные Envelopes в mql4
Вот код из МТ4
Всё отлично работает. Хотелось бы аналогичное в МТ5
Вот код из МТ4
Всё отлично работает. Хотелось бы аналогичное в МТ5
Ну так потому, что это иной код, и он будет работать.
Исправил в МТ5 коде передачу данных Индикатору:
Но ошибка та-же.
Вот код из МТ4
Всё отлично работает. Хотелось бы аналогичное в МТ5
Следите за руками:
В предыдущем моём сообщении выделено в вашем коде вот это
а в коде этого, цитируемого сообщения это объявление функции. Тоже выделил.
А вот это
вызов той пользовательской функции которая существует. Хоть такой метод программирования для меня неприемлем, но всё-же понятен. А вот как описать ошибочность в том коде я даже затрудняюсь.