Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Fiore_di_Vita 08.02.05 17:17
Questo script è il primo passo verso la GUO. È un'impostazione dell'ordine. Ed è ancora crudo....
Poi puoi fare modifiche, cancellazioni, ecc.
Quindi c'è già un primo software attraverso il quale, e così, si può facilmente piazzare un ordine pendente al livello in cui si trova il cursore del mouse
... Tutto quello che devi fare è cliccare con il tasto destro del mouse e poi passare il cursore sull'opzione "Trade" e selezionare il tipo di ordine desiderato (tra i due offerti). E il prezzo al quale si propone di piazzare l'ordine è immediatamente visibile lì, il che, secondo me, è molto più comodo che in questo script, perché è più veloce e realizzato con più competenza ;-)
E GUO è prima di tutto una modifica degli ordini già piazzati, trascinando le linee (livello, stop, profitto) proprio sul grafico ...
...e poi tutto il resto...
C'è già un software aggiuntivo
ma che dire dell'alce e del profitto? bisogna farlo manualmente....
Non pretendo di essere il "miglior programmatore" ;))) provare non è provare ;)
ma penserò alla gestione degli ordini già piazzati.....
In realtà stop e profitto sono anche ordini pendenti... (vanno solo insieme a un ordine principale)
cioè sono quelli che devono essere spostati e modificati nella maggior parte dei casi afferrando le linee
Ma lo script si è finora basato sull'immissione di un ordine pendente, che è stato implementato da tempo. Dov'è il grafico, dov'è la GUO?
Guardate, signori!
18.03.2005
Leggere le istruzioni prima di usarlo =)
//+------------------------------------------------------------------+ //| Modify_Order.mq4 | //| komposter | //| mailto:komposterius@mail.ru | //+------------------------------------------------------------------+ #property copyright "komposter" #property link "mailto:komposterius@mail.ru" /* -----------------------------В-Н-И-М-А-Н-И-Е--------------------------------- Перед запуском скрипта настоятельно рекомендую изучить следующее руководство: Скрипт предназначен для модификации/удаления/закрытия позиции/отложенного ордера. Для этого необходимо: 1) Ознакомиться с данным руководством =), !установить значения по умолчанию! (находятся под описанием, начинаются и заканчиваются строкой //+----------------------------------------------+ ), разрешить импорт внешних экспертов через меню "Сервис" -> "Настройки" -> "Советники" -> "Разрешить импортирование внешних экспертов" (необходимо для описания ошибки, которая может возникнуть при модификации ордера) 2) Перетащить скрипт на график недалеко от ордера/позиции, который(-ую) необходимо модифицировать. 3) Переместить все линии на необходимые уровни: - Open_Price_Line (по умолчанию - белая) - цена открытия (ТОЛЬКО ДЛЯ ОТЛОЖЕННЫХ ОРДЕРОВ) - Stop_Loss_Line (красная) - уровень Стоп Лосс - Take_Profit_Line (зелёная) - уровень Тейк Профит - Expiration_Line (жёлтая) - время истечения (ТОЛЬКО ДЛЯ ОТЛОЖЕННЫХ ОРДЕРОВ) Чтоб удалить Стоп Лосс/Тейк Профит/Время истечения - просто удалите соответствующую линию. Чтоб удалить отложенный ордер/закрыть позицию - удалите линию Open_Price_Line. 4) Когда всё будет готово, в появившемся окне нажать кнопку "ОК". Для прекращения работы скрипта в любой момент можно воспользоваться кнопкой "Отмена". Если Вами будет найдена ошибка в коде, или в логике работы скрипта, просьба сообщить на komposterius@mail.ru */ #include <stdlib.mqh> int first = 1; int start() { //+------------------------------------------------------------------+ // Максимальное расстояние в пунктах от места, на которое был "отпущен" скрипт, до // цены открытия ордера. Для макимальной точности работы используйте "0", // тогда ордер выделится только в случае точного попадания. int Order_Find_Radius = 10; // Расстояние между линией Take_Profit/Stop_Loss и линией Open_Price в пунктах по умолчанию. // Если Take_Profit/Stop_Loss использоваться не будет, установите 0 int Take_Profit = 50; int Stop_Loss = 50; // Максимальное отклонение от запрошенной цены (для закрытия позиции) int Slippage = 5; // Время истечения ордера, выраженное в свечах // Для периода графика H4 и Expiration_Shift = 3 время истечения наступит через 12 часов после установки // Если необходимо стандартное время истечения для всех периодов графика, укажите "0" (без кавычек), и переходите к следующей настройке // Если время истечения ордера использоваться не будет, установите 0 int Expiration_Shift = 0; // Время истечения ордера, выраженное в часах // Для того, чтоб использовать эту настройку, необходимо установить Expiration_Shift (см. выше на 2 строки) "0" (без кавычек) // Если время истечения ордера использоваться не будет, установите 0 int Expiration_Shift_H = 0; // Цвета отображения ордеров на графике color Buy_Color = Lime; //( для ордеров BUYSTOP и BUYLIMIT ) color Sell_Color = Red; //( для ордеров SELLLIMIT и SELLSTOP ) // Цвета линий: color Open_Price_Line_Color = White; color Stop_Loss_Line_Color = Red; color Take_Profit_Line_Color = Lime; color Expiration_Line_Color = Yellow; //+------------------------------------------------------------------+ double Open_Price_Level, Stop_Loss_Level, Take_Profit_Level; datetime Expiration_Time; int _break, error; double DropPrice = PriceOnDropped(); // поиск ордера for ( int x = 0; x <= Order_Find_Radius; x ++ ) { for ( int z = 0; z < OrdersTotal(); z ++ ) { OrderSelect( z, SELECT_BY_POS, MODE_TRADES ); if ( OrderSymbol() == Symbol() ) { if ( ( DropPrice - OrderOpenPrice() )/Point <= x && ( DropPrice - OrderOpenPrice() )/Point >= 0 ) { _break = 1; break; } if ( ( OrderOpenPrice() - DropPrice )/Point <= x && ( OrderOpenPrice() - DropPrice )/Point >= 0 ) { _break = 1; break; } } } if ( _break == 1 ) { break; } } if ( _break != 1 ) { MessageBox( "Не удалось найти ордер!\n\n" + "Переместите скрипт на график недалеко от цены открытия ордера, который хотите модифицировать ", "Начало работы", 0x00000000 | 0x00000010 | 0x00040000 ); return(0); } int _OrderType = OrderType(); int _OrderTicket = OrderTicket(); double _OrderOpenPrice = OrderOpenPrice(); double _OrderStopLoss = OrderStopLoss(); double _OrderTakeProfit = OrderTakeProfit(); datetime _OrderExpiration = OrderExpiration(); // Установка начальных значений: Open_Price_Level = _OrderOpenPrice; if ( _OrderStopLoss > 0 ) { Stop_Loss_Level = _OrderStopLoss; } else { if ( Stop_Loss > 0 ) { if ( _OrderType == OP_BUY || _OrderType == OP_BUYSTOP || _OrderType == OP_BUYLIMIT ) { Stop_Loss_Level = Open_Price_Level - Stop_Loss*Point; } else { Stop_Loss_Level = Open_Price_Level + Stop_Loss*Point; } } } if ( _OrderTakeProfit > 0 ) { Take_Profit_Level = _OrderTakeProfit; } else { if ( Take_Profit > 0 ) { if ( _OrderType == OP_BUY || _OrderType == OP_BUYSTOP || _OrderType == OP_BUYLIMIT ) { Take_Profit_Level = Open_Price_Level + Take_Profit*Point; } else { Take_Profit_Level = Open_Price_Level - Take_Profit*Point; } } } if ( _OrderExpiration > 0 ) { Expiration_Time = _OrderExpiration; } else { if ( _OrderType != OP_BUY && _OrderType != OP_SELL ) { if ( Expiration_Shift > 0 ) { Expiration_Time = CurTime() + Period()*60*Expiration_Shift; } else { if ( Expiration_Shift_H > 0 ) { Expiration_Time = CurTime() + 3600*Expiration_Shift_H; } } } } // Создание линий: if ( first == 1 ) { ObjectCreate( "Open_Price_Line", OBJ_HLINE, 0, 0, Open_Price_Level, 0, 0, 0, 0 ); ObjectSet( "Open_Price_Line", OBJPROP_COLOR, Open_Price_Line_Color ); ObjectSetText( "Open_Price_Line", "Open_Price_Line", 6, "Arial", Open_Price_Line_Color ); if ( Stop_Loss_Level > 0 ) { ObjectCreate( "Stop_Loss_Line", OBJ_HLINE, 0, 0, Stop_Loss_Level, 0, 0, 0, 0 ); ObjectSet( "Stop_Loss_Line", OBJPROP_COLOR, Stop_Loss_Line_Color ); ObjectSetText( "Stop_Loss_Line", "Stop_Loss_Line", 6, "Arial", Stop_Loss_Line_Color ); } if ( Take_Profit_Level > 0 ) { ObjectCreate( "Take_Profit_Line", OBJ_HLINE, 0, 0, Take_Profit_Level, 0, 0, 0, 0 ); ObjectSet( "Take_Profit_Line", OBJPROP_COLOR, Take_Profit_Line_Color ); ObjectSetText( "Take_Profit_Line", "Take_Profit_Line", 6, "Arial", Take_Profit_Line_Color ); } if ( Expiration_Time > 0 ) { ObjectCreate( "Expiration_Line", OBJ_VLINE, 0, Expiration_Time, 0, 0, 0, 0, 0 ); ObjectSet( "Expiration_Line", OBJPROP_COLOR, Expiration_Line_Color ); ObjectSetText( "Expiration_Line", "Expiration_Line", 6, "Arial", Expiration_Line_Color ); } // вывод месседжбокса string Question = "Для внесения изменений переместите линии на необходимые уровни и нажмите \"ОК\".\n" + "Чтоб отказаться от модификации и завершить работу, нажмите \"Отмена\"."; int Answer = MessageBox( Question, "Модификация ордера", 0x00000001 | 0x00000040 | 0x00040000 ); first = 0; // если нажата любая кроме "ОК" кнопка - выходим if ( Answer != 1 ) { deinit(); return(0); } } // считываем значения с объектов и нормализуем: Open_Price_Level = NormalizeDouble( ObjectGet( "Open_Price_Line", OBJPROP_PRICE1 ), MarketInfo( Symbol(), MODE_DIGITS ) ); Stop_Loss_Level = NormalizeDouble( ObjectGet( "Stop_Loss_Line", OBJPROP_PRICE1 ), MarketInfo( Symbol(), MODE_DIGITS ) ); Take_Profit_Level = NormalizeDouble( ObjectGet( "Take_Profit_Line", OBJPROP_PRICE1 ), MarketInfo( Symbol(), MODE_DIGITS ) ); Expiration_Time = ObjectGet( "Expiration_Line", OBJPROP_TIME1 ); if ( Open_Price_Level == 0 ) { int order; if ( _OrderType == OP_BUY || _OrderType == OP_SELL ) { if ( _OrderType == OP_BUY ) { order = OrderClose( _OrderTicket, OrderLots(), Bid, Slippage, Buy_Color ); } else { order = OrderClose( _OrderTicket, OrderLots(), Ask, Slippage, Sell_Color ); } } else { order = OrderDelete( _OrderTicket ); } if ( order > 0 ) { // если всё ок, выводим лог и выходим Print( "Ордер №", _OrderTicket, " закрыт/удалён успешно!"); return(0); } else { // если ошибка - выводим сообщение и выходим error = GetLastError(); Print("Ошибка при закрытии/удалении! GetLastError = ", error, ", ErrorDescription = \"", ErrorDescription( error ), "\"" ); MessageBox( "Ошибка при закрытии/удалении! GetLastError = " + error + ", ErrorDescription = \"" + ErrorDescription( error ) + "\"", "Ошибка закрытия/удаления ордера", 0x00000000 | 0x00000010 | 0x00040000 ); return(-1); } return(0); } color _Color = Buy_Color; // проверяем все значения if ( _OrderType == OP_BUY ) { if ( Bid - Stop_Loss_Level < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point && Stop_Loss_Level != 0 ) { Answer = MessageBox( "Неправильно установлена Stop_Loss_Line (красная линия)!\n" + "\n" + "Для Buy - позиции она должна быть НИЖЕ Bid. \n" + "Минимальный отступ (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " пунктов.\n" + "\n\n" + "Чтобы начать модификацию с начала, нажмите \"Повтор\".\n" + "Чтоб отказаться от модификации, нажмите \"Отмена\".", "Модификация ордера", 0x00000005 | 0x00000030 | 0x00040000 ); if ( Answer == 4 ) { start(); } deinit(); return(-1); } if ( Take_Profit_Level - Bid < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point && Take_Profit_Level != 0 ) { Answer = MessageBox( "Неправильно установлена Take_Profit_Line (зелёная линия)!\n" + "\n" + "Для Buy - позиции она должна быть ВЫШЕ Bid. \n" + "Минимальный отступ (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " пунктов.\n" + "\n\n" + "Чтобы начать модификацию с начала, нажмите \"Повтор\".\n" + "Чтоб отказаться от модификации, нажмите \"Отмена\".", "Модификация ордера", 0x00000005 | 0x00000030 | 0x00040000 ); if ( Answer == 4 ) { start(); } deinit(); return(-1); } } if ( _OrderType == OP_BUYSTOP || _OrderType == OP_BUYLIMIT ) { if ( Open_Price_Level - Stop_Loss_Level < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point && Stop_Loss_Level != 0 ) { Answer = MessageBox( "Неправильно установлена Stop_Loss_Line (красная линия)!\n" + "\n" + "Для Buy, BuyLimit и BuyStop - ордеров она должна быть НИЖЕ линии Open_Price_Line. \n" + "Минимальный отступ (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " пунктов.\n" + "\n\n" + "Чтобы начать модификацию с начала, нажмите \"Повтор\".\n" + "Чтоб отказаться от модификации, нажмите \"Отмена\".", "Модификация ордера", 0x00000005 | 0x00000030 | 0x00040000 ); if ( Answer == 4 ) { start(); } deinit(); return(-1); } if ( Take_Profit_Level - Open_Price_Level < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point && Take_Profit_Level != 0 ) { Answer = MessageBox( "Неправильно установлена Take_Profit_Line (зелёная линия)!\n" + "\n" + "Для Buy, BuyLimit и BuyStop - ордеров она должна быть ВЫШЕ линии Open_Price_Line. \n" + "Минимальный отступ (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " пунктов.\n" + "\n\n" + "Чтобы начать модификацию с начала, нажмите \"Повтор\".\n" + "Чтоб отказаться от модификации, нажмите \"Отмена\".", "Модификация ордера", 0x00000005 | 0x00000030 | 0x00040000 ); if ( Answer == 4 ) { start(); } deinit(); return(-1); } if ( _OrderType == OP_BUYSTOP ) { if ( Open_Price_Level - Bid < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point ) { Answer = MessageBox( "Неправильно установлена Open_Price_Line (белая линия)!\n" + "\n" + "Для BuyStop - ордера она должна быть ВЫШЕ текущей цены. \n" + "Минимальный отступ (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " пунктов.\n" + "\n\n" + "Чтобы начать модификацию с начала, нажмите \"Повтор\".\n" + "Чтоб отказаться от модификации, нажмите \"Отмена\".", "Модификация ордера", 0x00000005 | 0x00000030 | 0x00040000 ); if ( Answer == 4 ) { start(); } deinit(); return(-1); } } if ( _OrderType == OP_BUYLIMIT ) { if ( Bid - Open_Price_Level < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point ) { Answer = MessageBox( "Неправильно установлена Open_Price_Line (белая линия)!\n" + "\n" + "Для BuyLimit - ордера она должна быть НИЖЕ текущей цены. \n" + "Минимальный отступ (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " пунктов.\n" + "\n\n" + "Чтобы начать модификацию с начала, нажмите \"Повтор\".\n" + "Чтоб отказаться от модификации, нажмите \"Отмена\".", "Модификация ордера", 0x00000005 | 0x00000030 | 0x00040000 ); if ( Answer == 4 ) { start(); } deinit(); return(-1); } } } if ( _OrderType == OP_SELL ) { _Color = Sell_Color; if ( Stop_Loss_Level - Ask < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point && Stop_Loss_Level != 0 ) { Answer = MessageBox( "Неправильно установлена Stop_Loss_Line (красная линия)!\n" + "\n" + "Для Sell - позиции она должна быть ВЫШЕ Ask. \n" + "Минимальный отступ (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " пунктов.\n" + "\n\n" + "Чтобы начать модификацию с начала, нажмите \"Повтор\".\n" + "Чтоб отказаться от модификации, нажмите \"Отмена\".", "Модификация ордера", 0x00000005 | 0x00000030 | 0x00040000 ); if ( Answer == 4 ) { start(); } deinit(); return(-1); } if ( Ask - Take_Profit_Level < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point && Take_Profit_Level != 0 ) { Answer = MessageBox( "Неправильно установлена Take_Profit_Line (зелёная линия)!\n" + "\n" + "Для Sell - позиции она должна быть НИЖЕ Ask. \n" + "Минимальный отступ (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " пунктов.\n" + "\n\n" + "Чтобы начать модификацию с начала, нажмите \"Повтор\".\n" + "Чтоб отказаться от модификации, нажмите \"Отмена\".", "Модификация ордера", 0x00000005 | 0x00000030 | 0x00040000 ); if ( Answer == 4 ) { start(); } deinit(); return(-1); } } if ( _OrderType == OP_SELLLIMIT || _OrderType == OP_SELLSTOP ) { _Color = Sell_Color; if ( Stop_Loss_Level - Open_Price_Level < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point && Stop_Loss_Level != 0 ) { Answer = MessageBox( "Неправильно установлена Stop_Loss_Line (красная линия)!\n" + "\n" + "Для Sell, SellLimit и SellStop - ордеров она должна быть ВЫШЕ линии Open_Price_Line. \n" + "Минимальный отступ (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " пунктов.\n" + "\n\n" + "Чтобы начать модификацию с начала, нажмите \"Повтор\".\n" + "Чтоб отказаться от модификации, нажмите \"Отмена\".", "Модификация ордера", 0x00000005 | 0x00000030 | 0x00040000 ); if ( Answer == 4 ) { start(); } deinit(); return(-1); } if ( Open_Price_Level - Take_Profit_Level < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point && Take_Profit_Level != 0 ) { Answer = MessageBox( "Неправильно установлена Take_Profit_Line (зелёная линия)!\n" + "\n" + "Для Sell, SellLimit и SellStop - ордеров она должна быть НИЖЕ линии Open_Price_Line. \n" + "Минимальный отступ (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " пунктов.\n" + "\n\n" + "Чтобы начать модификацию с начала, нажмите \"Повтор\".\n" + "Чтоб отказаться от модификации, нажмите \"Отмена\".", "Модификация ордера", 0x00000005 | 0x00000030 | 0x00040000 ); if ( Answer == 4 ) { start(); } deinit(); return(-1); } if ( _OrderType == OP_SELLLIMIT ) { if ( Open_Price_Level - Ask < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point ) { Answer = MessageBox( "Неправильно установлена Open_Price_Line (белая линия)!\n" + "\n" + "Для SellLimit - ордера она должна быть НИЖЕ текущей цены. \n" + "Минимальный отступ (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " пунктов.\n" + "\n\n" + "Чтобы начать модификацию с начала, нажмите \"Повтор\".\n" + "Чтоб отказаться от модификации, нажмите \"Отмена\".", "Модификация ордера", 0x00000005 | 0x00000030 | 0x00040000 ); if ( Answer == 4 ) { start(); } deinit(); return(-1); } } if ( _OrderType == OP_SELLSTOP ) { if ( Ask - Open_Price_Level < MarketInfo( Symbol(), MODE_STOPLEVEL )*Point ) { Answer = MessageBox( "Неправильно установлена Open_Price_Line (белая линия)!\n" + "\n" + "Для SellStop - ордера она должна быть ВЫШЕ текущей цены. \n" + "Минимальный отступ (" + Symbol() + ") - " + DoubleToStr( MarketInfo( Symbol(), MODE_STOPLEVEL ), 0 ) + " пунктов.\n" + "\n\n" + "Чтобы начать модификацию с начала, нажмите \"Повтор\".\n" + "Чтоб отказаться от модификации, нажмите \"Отмена\".", "Модификация ордера", 0x00000005 | 0x00000030 | 0x00040000 ); if ( Answer == 4 ) { start(); } deinit(); return(-1); } } } if ( _OrderType == OP_BUY || _OrderType == OP_SELL ) { if ( Open_Price_Level != _OrderOpenPrice ) { Answer = MessageBox( "Нельзя двигать Open_Price_Line (белая линия) для уже открытых позиций!\n" + "\n\n" + "Чтобы установить линию в начальное положение и начать модификацию с начала, нажмите \"Повтор\".\n" + "Чтоб отказаться от модификации, нажмите \"Отмена\".", "Модификация ордера", 0x00000005 | 0x00000030 | 0x00040000 ); if ( Answer == 4 ) { ObjectSet( "Open_Price_Line", OBJPROP_PRICE1, _OrderOpenPrice ); start(); } deinit(); return(-1); } if ( Expiration_Time != 0 ) { Answer = MessageBox( "Нельзя устанавливать Expiration_Line (жёлтая линия) для уже открытых позиций!\n" + "\n\n" + "Чтобы удалить линию и начать модификацию с начала, нажмите \"Повтор\".\n" + "Чтоб отказаться от модификации, нажмите \"Отмена\".", "Модификация ордера", 0x00000005 | 0x00000030 | 0x00040000 ); if ( Answer == 4 ) { ObjectDelete( "Expiration_Line" ); start(); } deinit(); return(-1); } } else { if ( Expiration_Time <= CurTime() && Expiration_Time != 0 ) { Answer = MessageBox( "Неправильно установлена Expiration_Line (жёлтая линия)!\n" + "\n" + "Срок истечения ордера не может быть в прошедшем времени! \n" + "\n\n" + "Чтобы начать модификацию с начала, нажмите \"Повтор\".\n" + "Чтоб отказаться от модификации, нажмите \"Отмена\".", "Модификация ордера", 0x00000005 | 0x00000030 | 0x00040000 ); if ( Answer == 4 ) { start(); } deinit(); return(-1); } } // выводим инфу о запросе и пытаемся модифицировать ордер Print( "OrderTicket=",_OrderTicket, ",_OrderType=",_OrderType, ",Open_Price_Level=",Open_Price_Level, ",Stop_Loss_Level=", Stop_Loss_Level, ",Take_Profit_Level=", Take_Profit_Level, ",Expiration_Time=", Expiration_Time, ",_Color=", _Color ); int ordermodify = OrderModify( _OrderTicket, Open_Price_Level, Stop_Loss_Level, Take_Profit_Level, Expiration_Time, _Color ); if ( ordermodify > 0 ) { // если всё ок, выводим лог и выходим OrderPrint(); Print( "Ордер №", _OrderTicket, " модифицирован успешно!"); return(0); } // если ошибка - выводим сообщение и выходим error = GetLastError(); Print("Ошибка при модификации! GetLastError = ", error, ", ErrorDescription = \"", ErrorDescription( error ), "\"" ); MessageBox( "Ошибка при модификации! GetLastError = " + error + ", ErrorDescription = \"" + ErrorDescription( error ) + "\"", "Ошибка модификации ордера", 0x00000000 | 0x00000010 | 0x00040000 ); return(-1); } int deinit() { // удаление всех объектов, созданных скриптом ObjectDelete( "Open_Price_Line" ); ObjectDelete( "Stop_Loss_Line" ); ObjectDelete( "Take_Profit_Line" ); ObjectDelete( "Expiration_Line" ); return(0); }Capito...... va bene.
Dovremmo anche creare una variabile per il colore del prezzo dell'ordine, in modo da non dover cercare nel codice il posto giusto per cambiarlo
È difficile vedere dove si trova la linea di prezzo aperta su un grafico nero (molti grafici la lasciano nera di default).
Ho già fatto i colori, ma è troppo presto per il catalogo - ho bisogno di testare.... ci saranno sicuramente molti glitch =)