- [АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3.
- Промывание мозгов советникам
- Скрипт орткрывающий несколько отложенных ордеров

- www.mql5.com

- www.mql5.com
https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/ctrade/ctradepositionmodify
спасибо, я не смогла найти в стандартном справочнике)
спасибо, я не смогла найти в стандартном справочнике)
Давайте лучше по порядку.
Как открыть позицию сразу с указанием Стоп лосс и Тейк профит. Такая постановка вопроса устраивает? Если да, то я приведу пример (простой пример).
стоп и тейк - можно по пунктам закрывать (скрыт от брокера)
Давайте лучше по порядку.
Как открыть позицию сразу с указанием Стоп лосс и Тейк профит. Такая постановка вопроса устраивает? Если да, то я приведу пример (простой пример).
да давайте так. я уже попыталась, почему то стоп и тейк не получается. еще пока не могу сообразить как прописать цену входа, понятно что надо присвоить цену BID переменой (дать ей имя) и использовать. но щас поздно уже, пока сделано по простому.
сделку открывает, стоп и тейк не ставит. хотя вывожу в Сomment, подсчет правильный. в журнал почему то перестали выводиться данные((
input int Lots =1; input int TPpr =50; input int SLpr =10; input int DDpr =40; //цена прошла 40% запрет входа //---------------------------------------------------------------- double ATR = ATRm[1]; //значение дневного АТР вчерашнего дня double TP = ATR/100*TPpr; double SL = ATR/100*SLpr; // значение от атр 50% double DD = ATR/100*DDpr; double PR = PositionGetDouble(POSITION_PRICE_OPEN); //цена открытия double PRTPl = PR+TP; //цена для тейка лонга double PRSLl = PR-SL; //цена для стопа лонга double PRTPs = PR-TP; // цена для тейка шорта double PRSLs = PR+SL; // цена для стопа шорта //------------------------------------------------------------------- double ATR = ATRm[1]; //значение дневного АТР вчерашнего дня double TP = ATR/100*TPpr; double SL = ATR/100*SLpr; // значение от атр 50% double DD = ATR/100*DDpr; double PR = PositionGetDouble(POSITION_PRICE_OPEN); //цена открытия double PRTPl = PR+TP; //цена для тейка лонга double PRSLl = PR-SL; //цена для стопа лонга double PRTPs = PR-TP; // цена для тейка шорта double PRSLs = PR+SL; // цена для стопа шорта //---------------------------------------------------------------- if (cl>op) { trader.Buy(Lots,NULL,cl,PRTPl,PRSLl); //то вход в лонг }
да давайте так. я уже попыталась, почему то стоп и тейк не получается. еще пока не могу сообразить как прописать цену входа, понятно что надо присвоить цену BID переменой (дать ей имя) и использовать. но щас поздно уже, пока сделано по простому.
сделку открывает, стоп и тейк не ставит. хотя вывожу в Сomment, подсчет правильный. в журнал почему то перестали выводиться данные((
Что это? Не нужно выдавать куски кода - прикрепите к сообщению полноценный файл, который можно скомпилировать.
Сейчас получается, что ВСЕ Ваши переменные находятся в области глобальных программных переменных - то есть они НЕ ВЫЧИСЛЯЮТСЯ.
Что это? Не нужно выдавать куски кода - прикрепите к сообщению полноценный файл, который можно скомпилировать.
Сейчас получается, что ВСЕ Ваши переменные находятся в области глобальных программных переменных - то есть они НЕ ВЫЧИСЛЯЮТСЯ.
как только добавляю значения стопа, перестает открывать сделку. почему? понять не могу.
trader.Buy(Lots,NULL,cl,PRTPl,PRSLl); если отсюда убрать PRTPl,PRSLl то будет открываться
//+------------------------------------------------------------------+ //| 1ый.mq5 | //| Copyright 2019, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2019, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" input double Lots =1.0; input int TPpr =50; input int SLpr =10; input int DDpr =40; //цена прошла 40% запрет входа int ATRy; //указатель на индикато атр double ATRm[]; //массив для атр //------------------------------------------ #include <Trade\Trade.mqh> CTrade trader; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { ATRy = iATR(NULL,PERIOD_D1,5); if (ATRy == INVALID_HANDLE) { Print("не удалось создать описатель индикатора XLO"); return(INIT_FAILED); } return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { IndicatorRelease(ATRy); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { datetime time = D'1980.07.19 10:01:00'; string TCtime = TimeToString(time,TIME_SECONDS); datetime timeCurrent = TimeCurrent(); string TC = TimeToString(timeCurrent,TIME_SECONDS); //---------------------------------------------------------- double cl = iClose(NULL,0,1); double op = iOpen(NULL,0,1); double high = iHigh(NULL,0,0); //хай цены double low = iLow(NULL,0,0); ArraySetAsSeries(ATRm,true); if (CopyBuffer(ATRy,0,0,100,ATRm)<0) // { Alert("Ошибка копирования буферов индикатора ATR - номер ошибки:",GetLastError(),"!!"); return; } double ATR = ATRm[1]; //значение дневного АТР вчерашнего дня double TP = ATR/100*TPpr; double SL = ATR/100*SLpr; // значение от атр 50% double DD = ATR/100*DDpr; double PR = PositionGetDouble(POSITION_PRICE_OPEN); //цена открытия double PRTPl = PR+TP; //цена для тейка лонга double PRSLl = PR-SL; //цена для стопа лонга double PRTPs = PR-TP; // цена для тейка шорта double PRSLs = PR+SL; // цена для стопа шорта Comment (low); //----------------------------ПОКУПКИ------------------------------------------------- if (!PositionSelect(_Symbol)) //если нет открытой позиции { if (TC == TCtime) //если время равно 10:01:00 { if (cl>op) //если открыти 1ой свечи > закрытия 1ой свечи { trader.Buy(Lots,NULL,cl,PRTPl,PRSLl); //то вход в лонг } } } //------------------------------ПРОДАЖИ-------------------------------------------------------- if (!PositionSelect(_Symbol)) //если нет открытой позиции { if (TC == TCtime) //если время равно 10:01:00 { if (cl<op) //если закрытие 1ой свечи < открытия 1ой свечи { trader.Sell(Lots,NULL,cl,PRSLs,PRTPs); //то вход в шорт } } } }
как только добавляю значения стопа, перестает открывать сделку. почему? понять не могу.
trader.Buy(Lots,NULL,cl,PRTPl,PRSLl); если отсюда убрать PRTPl,PRSLl то будет открываться

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования