Добрый день.
Есть добрые люди кто может перенести скрипт из MT4 в MT5
Суть простая.
Перетянул на график, получаешь три линии
Желтая цена по которой будем ставить
Красная стоп лосс
Зеленая тейк
Линии соответственно можно двигать для удобного выбора цены и целей.
Так же есть два поля для указания объема ордера, комментария к ордеру и кнопка "ОК" по нажатию которой все это дело устанавливается.
На MT4 работает прекрасно
Если хочется побыстрее то сюда
- 2024.10.04
- www.mql5.com
Добрый день.
Есть добрые люди кто может перенести скрипт из MT4 в MT5
Суть простая.
Перетянул на график, получаешь три линии
Желтая цена по которой будем ставить
Красная стоп лосс
Зеленая тейк
Линии соответственно можно двигать для удобного выбора цены и целей.
Так же есть два поля для указания объема ордера, комментария к ордеру и кнопка "ОК" по нажатию которой все это дело устанавливается.
На MT4 работает прекрасно
вот
//+------------------------------------------------------------------+ //| BuyStop.mq5 | //| Copyright 2024, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property script_show_inputs #define Ask SymbolInfoDouble(_Symbol,SYMBOL_ASK) #include <Trade\Trade.mqh> CTrade mTrade; input double DefaultLotSize = 0.03; // Исходный размер лота input int Slippage = 3; // Допустимое проскальзывание //+------------------------------------------------------------------+ void OnStart() { mTrade.SetDeviationInPoints(Slippage); // Установка линий double buyStopPrice = 0; double takeProfitPrice = 0; double stopLossPrice = 0; string orderComment = ""; // Создание линии Buy Stop if(ObjectFind(0, "BuyStopLine") < 0) { buyStopPrice = NormalizeDouble(Ask + 20 * _Point, _Digits); ObjectCreate(0, "BuyStopLine", OBJ_HLINE, 0, iTime(_Symbol, PERIOD_CURRENT, 0), buyStopPrice); ObjectSetInteger(0, "BuyStopLine", OBJPROP_COLOR, clrYellow); ObjectSetInteger(0, "BuyStopLine", OBJPROP_STYLE, STYLE_SOLID); ObjectSetInteger(0, "BuyStopLine", OBJPROP_SELECTABLE, true); ObjectSetInteger(0, "BuyStopLine", OBJPROP_SELECTED, true); } // Создание линии Take Profit if(ObjectFind(0, "TakeProfitLine") < 0) { takeProfitPrice = NormalizeDouble(buyStopPrice + 20 * _Point, _Digits); // Устанавливаем выше buyStopPrice ObjectCreate(0, "TakeProfitLine", OBJ_HLINE, 0, iTime(_Symbol, PERIOD_CURRENT, 0), takeProfitPrice); ObjectSetInteger(0, "TakeProfitLine", OBJPROP_COLOR, clrLime); ObjectSetInteger(0, "TakeProfitLine", OBJPROP_STYLE, STYLE_SOLID); ObjectSetInteger(0, "TakeProfitLine", OBJPROP_SELECTABLE, true); ObjectSetInteger(0, "TakeProfitLine", OBJPROP_SELECTED, true); } // Создание линии Stop Loss if(ObjectFind(0, "StopLossLine") < 0) { stopLossPrice = NormalizeDouble(buyStopPrice - 40 * _Point, _Digits); // Устанавливаем ниже buyStopPrice ObjectCreate(0, "StopLossLine", OBJ_HLINE, 0, iTime(_Symbol, PERIOD_CURRENT, 0), stopLossPrice); ObjectSetInteger(0, "StopLossLine", OBJPROP_COLOR, clrRed); ObjectSetInteger(0, "StopLossLine", OBJPROP_STYLE, STYLE_SOLID); ObjectSetInteger(0, "StopLossLine", OBJPROP_SELECTABLE, true); ObjectSetInteger(0, "StopLossLine", OBJPROP_SELECTED, true); } // Создание поля для лота if(ObjectFind(0, "LotEdit") < 0) { ObjectCreate(0, "LotEdit", OBJ_EDIT, 0, 0, 0); ObjectSetInteger(0, "LotEdit", OBJPROP_CORNER, 0); ObjectSetInteger(0, "LotEdit", OBJPROP_XDISTANCE, 10); ObjectSetInteger(0, "LotEdit", OBJPROP_YDISTANCE, 20); ObjectSetInteger(0, "LotEdit", OBJPROP_WIDTH, 80); // Ширина для 20 символов ObjectSetString(0, "LotEdit", OBJPROP_TEXT, DoubleToString(DefaultLotSize, 2)); // Округление до сотых } // Создание текстового поля для комментария if(ObjectFind(0, "CommentEdit") < 0) { ObjectCreate(0, "CommentEdit", OBJ_EDIT, 0, 0, 0); ObjectSetInteger(0, "CommentEdit", OBJPROP_CORNER, 0); ObjectSetInteger(0, "CommentEdit", OBJPROP_XDISTANCE, 80); // Отступ от поля лота ObjectSetInteger(0, "CommentEdit", OBJPROP_YDISTANCE, 20); ObjectSetInteger(0, "CommentEdit", OBJPROP_WIDTH, 320); // Увеличенная ширина для комментария } // Создание кнопки "ОК" if(ObjectFind(0, "OkButton") < 0) { ObjectCreate(0, "OkButton", OBJ_BUTTON, 0, 0, 0); ObjectSetString(0, "OkButton", OBJPROP_TEXT, "OK"); ObjectSetInteger(0, "OkButton", OBJPROP_CORNER, 0); ObjectSetInteger(0, "OkButton", OBJPROP_XDISTANCE, 150); // Расположить кнопку справа от полей ObjectSetInteger(0, "OkButton", OBJPROP_YDISTANCE, 20); ObjectSetInteger(0, "OkButton", OBJPROP_WIDTH, 50); } // Основной цикл while(!IsStopped()) { // Проверка нажатия кнопки "ОК" if(ObjectGetInteger(0, "OkButton", OBJPROP_STATE) == 1) { // Получение лота и комментария double lotSize = StringToDouble(ObjectGetString(0, "LotEdit", OBJPROP_TEXT)); lotSize = NormalizeDouble(lotSize, 2); // Округление лота до сотых orderComment = ObjectGetString(0, "CommentEdit", OBJPROP_TEXT); // Получение цен линий buyStopPrice = ObjectGetDouble(0, "BuyStopLine", OBJPROP_PRICE); takeProfitPrice = ObjectGetDouble(0, "TakeProfitLine", OBJPROP_PRICE); stopLossPrice = ObjectGetDouble(0, "StopLossLine", OBJPROP_PRICE); // Проверка корректности цен if(buyStopPrice > Ask && takeProfitPrice > buyStopPrice && stopLossPrice < buyStopPrice) { // Normalize prices to the correct number of decimal places buyStopPrice = NormalizeDouble(buyStopPrice, _Digits); takeProfitPrice = NormalizeDouble(takeProfitPrice, _Digits); stopLossPrice = NormalizeDouble(stopLossPrice, _Digits); // Открытие ордера Buy Stop mTrade.BuyStop(lotSize, buyStopPrice, _Symbol, stopLossPrice, takeProfitPrice, 0, 0, orderComment); ulong ticket = mTrade.ResultOrder(); if(ticket <= 0) { Print("Ошибка открытия ордера: ", GetLastError()); } else { Print("Buy Stop ордер открыт: ", ticket); } // Удаляем линии и кнопку после открытия ордера ObjectDelete(0, "BuyStopLine"); ObjectDelete(0, "TakeProfitLine"); ObjectDelete(0, "StopLossLine"); ObjectDelete(0, "OkButton"); ObjectDelete(0, "CommentEdit"); ObjectDelete(0, "LotEdit"); } else { Print("Некорректные цены для открытия ордера."); } break; } Sleep(100); } } //+------------------------------------------------------------------+
посмотрите VirtualTradePad One Click Trading Panel в маркете.
в бесплатной(!) версии почти всё необходимое есть - в том числе установка таких ордеров.
чтобы не создавать новую тему - может кто сможет и такое на мт5 переписать:
линия по средней цене ордеров (отдельно на покупку и продажу для хеджсчетов)
//+------------------------------------------------------------------+ //| Middle_Order_Price_5.mq4 | //| StSpirit | //| | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Middle_Order_Price.mq4 | //| StSpirit | //| | //+------------------------------------------------------------------+ #property copyright "StSpirit" #property link "" #property indicator_chart_window extern color LineColor = Magenta; //цвет линии extern int LineWidth = 2; //толщина линии extern bool Text_With_Line = true; //включить или выключить подпись к линии extern string Text="Middle Order Price"; //текст подписи к линии extern color TextColor = Violet; //цвет шрифта подписи к линии extern int FontSize = 8; //размер шрифта подписи к линии string LineName = "Middle_Order_Price"; //название линии string TextName = "Text_MOP"; //название метки с текстом //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators //---- return(0); } void OrderMiddleLine(string Name, double Value) { string objectName = Name; if(ObjectFind("Middle_Order_Price")!=0)// такого объекта нет { ObjectCreate(objectName, OBJ_HLINE, 0, 0, Value); ObjectSet(objectName, OBJPROP_COLOR, LineColor); ObjectSet(objectName, OBJPROP_WIDTH, LineWidth); ObjectSet(objectName, OBJPROP_BACK, true); } else // объект есть, передвигаем его { ObjectMove(objectName, 0, Time[0],Value); } return(0); } void LineText(string Name, double MOP) { string objectName = Name; if(ObjectFind("Text_MOP")!=0)// такого объекта нет { ObjectCreate(objectName, OBJ_TEXT, 0, Time[5],MOP); ObjectSetText(objectName, Text, FontSize, "Arial", TextColor); //параметры вывода объекта ObjectSet(objectName, OBJPROP_BACK, true); } else // объект есть, передвигаем его { ObjectMove(objectName, 0, Time[5],MOP); } return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- ObjectDelete(LineName); ObjectDelete(TextName); Comment(""); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { double a=0, b=0, price_ask=0, price_bid=0; //---- if (OrdersTotal()!=0) { for (int i = 0; i < OrdersTotal(); i++) { if (OrderSelect(i, SELECT_BY_POS)==true) { if (OrderSymbol() == Symbol()) { if (OrderType() == OP_BUY) { price_ask = price_ask + OrderOpenPrice() * OrderLots(); a = a + OrderLots(); } if (OrderType() == OP_SELL) { price_bid = price_bid + OrderOpenPrice() * OrderLots(); b = b + OrderLots(); } } } } } if (a==0 && b==0) { ObjectDelete(LineName); ObjectDelete(TextName); Comment("AVERAGE NONE"); } if (a != 0) { Comment("AVERAGE"," BUY = ",a," : ",DoubleToStr(price_ask/a,6)); OrderMiddleLine(LineName, price_ask/a); if (Text_With_Line!=false) LineText(TextName, price_ask/a); a=0; price_ask=0; } if (b != 0) { Comment("AVERAGE"," SELL = ",b," : ", DoubleToStr(price_bid/b,6)); OrderMiddleLine(LineName, price_bid/b); if (Text_With_Line!=false) LineText(TextName, price_bid/b); b=0; price_bid=0; /* if (OrdersTotal()==0) { ObjectDelete(LineName); ObjectDelete(TextName); }*/ } //---- return(0); } //+------------------------------------------------------------------+
Очень хочется) буду премного благодарен.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день.
Есть добрые люди кто может перенести скрипт из MT4 в MT5
Суть простая.
Перетянул на график, получаешь три линии
Желтая цена по которой будем ставить
Красная стоп лосс
Зеленая тейк
Линии соответственно можно двигать для удобного выбора цены и целей.
Так же есть два поля для указания объема ордера, комментария к ордеру и кнопка "ОК" по нажатию которой все это дело устанавливается.
На MT4 работает прекрасно