Скрипт
extern int Slippage = 7; // Проскальзывание int start() { bool Result; int i,Pos,Error,Total; //int Dgts=MarketInfo(Symbol(),MODE_DIGITS); string FileName, str; //---- Total=OrdersTotal(); if(Total>0) { for(i=Total-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)==true) { // Только Buy и Sell по символу Pos=OrderType(); if(Pos==OP_BUY || Pos==OP_SELL) { RefreshRates(); if(Pos==OP_BUY) Result=OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(MarketInfo(Symbol(),MODE_BID),Digits), Slippage, CLR_NONE); else Result=OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),Digits), Slippage, CLR_NONE); if(Result!=true) { Error=GetLastError(); Alert("_CloseAllBuySell LastError = ",Error); } else Error=0; } } } } return(0); }
вот, сделал себе из функций Кима, можно:
1. закрывать всё
2. закрывать сделки по определённому инструменту
3. закрывать определённые сделки - бай/селл
4. закрывать сделки по определённому магику
в общем - что хотите, то и закрывайте
//+----------------------------------------------------------------------------+ //| CloseAllPositions.mq4 | //| Версия : 27.10.2008 | //| Описание : Скрипт закрытия позиций по рыночной цене, с возможностью | //| выбора параметров закрываемых позиций | //+----------------------------------------------------------------------------+ #property copyright "" #property link "" #property show_inputs //------- Внешние параметры скрипта -------------------------------------------+ extern string _P_Trade = "---------- Параметры торговли"; extern string sy = ""; //наименование инструмента //("" - любой символ,NULL - текущий символ) extern int op = -1; //операция (-1 - любая позиция) extern int mn = -1; //MagicNumber (-1 - любой магик) extern string _P_Performance = "---------- Параметры исполнения"; extern bool UseSound = False; // Исп. звуковой сигнал extern string SoundSuccess = "ok.wav"; // Звук успеха extern string SoundError = "timeout.wav"; // Звук ошибки extern int Slippage = 3; // Проскальзывание цены extern int NumberOfTry = 5; // Количество попыток //------- Глобальные переменные скрипта ---------------------------------------+ color clCloseBuy = Blue; // Цвет значка закрытия покупки color clCloseSell = Red; // Цвет значка закрытия продажи color clDelete = Yellow; // Цвет значка удаления ордера //------- Подключение внешних модулей -----------------------------------------+ #include <stdlib.mqh> // Стандартная библиотека МТ4 //+----------------------------------------------------------------------------+ //| script program start function | //+----------------------------------------------------------------------------+ void start() { int i, k=OrdersTotal(); if (sy=="0") sy=Symbol(); for (i=k-1; i>=0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (mn<0 || OrderMagicNumber()==mn) ClosePosBySelect(); } } } } } //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 19.02.2008 | //| Описание: Закрытие одной предварительно выбранной позиции | //+----------------------------------------------------------------------------+ void ClosePosBySelect() { bool fc; color clClose; double ll, pa, pb, pp; int err, it; if (OrderType()==OP_BUY || OrderType()==OP_SELL) { for (it=1; it<=NumberOfTry; it++) { if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break; while (!IsTradeAllowed()) Sleep(5000); RefreshRates(); pa=MarketInfo(OrderSymbol(), MODE_ASK); pb=MarketInfo(OrderSymbol(), MODE_BID); if (OrderType()==OP_BUY) { pp=pb; clClose=clCloseBuy; } else { pp=pa; clClose=clCloseSell; } ll=OrderLots(); fc=OrderClose(OrderTicket(), ll, pp, Slippage, clClose); if (fc) { if (UseSound) PlaySound(SoundSuccess); break; } else { err=GetLastError(); if (UseSound) PlaySound(SoundError); if (err==146) while (IsTradeContextBusy()) Sleep(1000*11); Print("Error(",err,") Close ",GetNameOP(OrderType())," ", ErrorDescription(err),", try ",it); Print(OrderTicket()," Ask=",pa," Bid=",pb," pp=",pp); Print("sy=",OrderSymbol()," ll=",ll," sl=",OrderStopLoss(), " tp=",OrderTakeProfit()," mn=",OrderMagicNumber()); Sleep(1000*5); } } } else Print("Некорректная торговая операция. Close ",GetNameOP(OrderType())); } //+----------------------------------------------------------------------------+ //| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru | //+----------------------------------------------------------------------------+ //| Версия : 01.09.2005 | //| Описание : Возвращает наименование торговой операции | //+----------------------------------------------------------------------------+ //| Параметры: | //| op - идентификатор торговой операции | //+----------------------------------------------------------------------------+ string GetNameOP(int op) { switch (op) { case OP_BUY : return("Buy"); case OP_SELL : return("Sell"); case OP_BUYLIMIT : return("BuyLimit"); case OP_SELLLIMIT: return("SellLimit"); case OP_BUYSTOP : return("BuyStop"); case OP_SELLSTOP : return("SellStop"); default : return("Unknown Operation"); } } //+----------------------------------------------------------------------------+
А зачем ломать голову, если эти скрипты есть в стандартной поставке МТ4? Для закрытия скрипт - Close, для удаления отложенников - delete_pendin.
alexx_v >>:
вот, сделал себе из функций Кима, можно:
1. закрывать всё
2. закрывать сделки по определённому инструменту
3. закрывать определённые сделки - бай/селл
4. закрывать сделки по определённому магику
в общем - что хотите, то и закрывайте
Огромное спасибо! Это то, что я искала! Стабильных профитов вам и всем кто откликнулся!
стандартные скрипты решают стандартные задачи, если просящему не нужен НЕ стандартный скрипт для НЕ стандартных задач, он воспользуется Вашим советом :)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Голову сломала уже! Должно же быть такое!
Прошу помочь с поиском данного скрипта, толи поиском не умею пользоваться, толи такой скрипт не возможен.
Скрипт должен закрывать все ордера по любым инструментам.
Спасибо за внимание!