RinsWind

 
Уровень 3


Группа "Стол заказов MQL"

Рейтинг 2081



РЕКОМЕНДУЮ




Лучшее от RinsWind



Скрипт для закрытия ордеров Комментариев 15
2019-06-30 12:40:32Рейтинг 0

Совок для ТМА от AМ2 Комментариев 3
2021-09-21 14:07:42Рейтинг 0

Fiбо iNdюк Комментариев 2
2021-11-30 03:01:44Рейтинг 0

Скрипт для закрытия ордеров

Требуется create скрипт который будет закрывать 1-ВСЕ ордера. 2 — Только убыточные — 3 Только прибыльные 4 — Только все Sell ордера 5 — Только Buy ордера
Так же важно добавить возможность установить интервал между закрытиями ордеров ( в секундах )
Нужен поручитель*za* 
  • +1
  • Просмотров: 1731
  • 30 июня 2019, 12:40
  • RinsWind
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Помощь с советником
29 июня 2019
30 июня 2019

Комментарии (15)

+
0
avatar

  9  Servir Сообщений: 84

  • 30 июня 2019, 13:12
+
0
Или делись исходником или проваливай отсюдова. Даже тестить не буду твой архив.
avatar

  3  RinsWind Автор Сообщений: 38

  • 30 июня 2019, 13:52
комментарий был удален 2019-06-30 18:21:54 RinsWind

+
0
Судя по посту неуважение так и прет.
Уважаемый Вам делаешь добро а «вы в говно», тестировать или нет только ваше дело.
Если кто хочет делиться исходником — пусть, в правилах такого нет, так что или пользуйся а этого мы не узнаем
или прикройся и ЖДИ.
avatar

  9  Servir Сообщений: 84

  • 30 июня 2019, 13:59
+
0
Неуважение!!! Это скидывать файлы без исходного кода… ТЫ ТУТ САМЫЙ УМНЫЙ АЛЛО !?!
Видел где ни будь что бы AM2 прикреплял ex4 файлы без исходников…
Или помогай или проваливай
avatar

  3  RinsWind Автор Сообщений: 38

  • 30 июня 2019, 14:15
+
+1
Я так понимаю, если вы обратились на этот форум, то МОЗГОВ вам и не хватает, что бы создать то что просите, а это элементарно. обвинять других в их недостаточности верх хамства.
avatar

  9  Servir Сообщений: 84

  • 30 июня 2019, 14:25
+
0
Я тут уже очень давно, это ты тут зеленый какой то помагатель… Если бы твой выкаканый ex4 файл слил бы мне деп в 7k$ бачинских то я тебя нашел бы и на пики надел)
Это ты тут играешь в плохого программиста. АМ2 — это надежность + открытость
Или помогай или проваливай
Тут многим не хватает мозгов времени и денег. Ты не исключение
avatar

  3  RinsWind Автор Сообщений: 38

  • 30 июня 2019, 14:40
+
0
Даааа угрозы стоящие…
Подскажу — даже самый продвинутый трейдер перед тем как что то ставить на реал проверяет как минимум на демо.
avatar

  9  Servir Сообщений: 84

  • 30 июня 2019, 14:47
+
0
Даже самый тупой программист понимать должен что даже самый тупой трейдер не кинет на график файл не понимая (видя) кода. Если не полностью то частично! хотя бы
avatar

  3  RinsWind Автор Сообщений: 38

  • 30 июня 2019, 14:52
+
0
А зачем вам код если вы в нем не разбираетесь
а если да то почему не напишете самостоятельно?
avatar

  9  Servir Сообщений: 84

  • 30 июня 2019, 15:00
+
0
Я могу читать и понимать. Не писать. Руки оторвало в авгане вместе с навыком построения логических цепей
avatar

  3  RinsWind Автор Сообщений: 38

  • 30 июня 2019, 15:06
+
+1
Ну читай
#property copyright "GDV"
#property show_inputs
extern bool ALL=True;//ВСЕ
extern bool ALL_Profit=False;//ВСЕ +
extern bool ALL_NULL=False;//ВСЕ -
extern bool ALL_BUY=False;//ВСЕ BUY
extern bool ALL_SELL=False;//ВСЕ SELL
extern int Profit=5;//Min. профит для закрытия в +
extern int slippage1=3000;//3 sek.
extern int slippage=3;
void start()
{
      int ask, bid, open;
      double point;
      Sleep(slippage1);
if (ALL==true)
      {  
      for (int i=OrdersTotal()-1; i>=0; i--)
      {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
      if (OrderType()==OP_BUY)
      {
         point=MarketInfo(OrderSymbol(),MODE_POINT);
         if (point==0) break;
         bid=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point);
         open=MathRound(OrderOpenPrice()/point);
         if (bid-open>Profit) continue;
         OrderClose(OrderTicket(),OrderLots(),bid*point,slippage);
      }
      if (OrderType()==OP_SELL)
      {
         point=MarketInfo(OrderSymbol(),MODE_POINT);
         if (point==0) break;
         ask=MathRound(MarketInfo(OrderSymbol(),MODE_ASK)/point);
         open=MathRound(OrderOpenPrice()/point);
         if (open-ask>Profit) continue;
         OrderClose (OrderTicket(),OrderLots(),ask*point,slippage);
      }
      }
      for (int ii=OrdersTotal()-1; ii>=0; ii--)
      {
      if (!OrderSelect(ii,SELECT_BY_POS,MODE_TRADES)) break;
      if (OrderType()==OP_BUY)
      {
         point=MarketInfo(OrderSymbol(),MODE_POINT);
         if (point==0) break;
         bid=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point);
         open=MathRound(OrderOpenPrice()/point);
         if (bid-open<Profit) continue;
         OrderClose(OrderTicket(),OrderLots(),bid*point,slippage);
      }
      if (OrderType()==OP_SELL)
      {
         point=MarketInfo(OrderSymbol(),MODE_POINT);
         if (point==0) break;
         ask=MathRound(MarketInfo(OrderSymbol(),MODE_ASK)/point);
         open=MathRound(OrderOpenPrice()/point);
         if (open-ask<Profit) continue;
         OrderClose (OrderTicket(),OrderLots(),ask*point,slippage);
      }
      }   
      for (int iii=OrdersTotal()-1; iii>=0; iii--)
      if (!OrderSelect(iii,SELECT_BY_POS,MODE_TRADES))
      if (OrderType()==OP_SELL || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP) OrderClose (OrderTicket(),OrderLots(),Ask,slippage);
      for (int ji=OrdersTotal()-1; ji>=0; ji--)
      if (OrderSelect(ji, SELECT_BY_POS))
      if (OrderType()==OP_BUY || OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP ) bool cl=OrderClose (OrderTicket(),OrderLots(),Bid,slippage);
      }
if(ALL_Profit==True)
      {
      for (int ki=OrdersTotal()-1; ki>=0; ki--)
      {
      if (!OrderSelect(ki,SELECT_BY_POS,MODE_TRADES)) break;
      if (OrderType()==OP_BUY)
      {
         point=MarketInfo(OrderSymbol(),MODE_POINT);
         if (point==0) break;
         bid=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point);
         open=MathRound(OrderOpenPrice()/point);
         if (bid-open<Profit) continue;
         OrderClose(OrderTicket(),OrderLots(),bid*point,slippage);
      }
      if (OrderType()==OP_SELL)
      {
         point=MarketInfo(OrderSymbol(),MODE_POINT);
         if (point==0) break;
         ask=MathRound(MarketInfo(OrderSymbol(),MODE_ASK)/point);
         open=MathRound(OrderOpenPrice()/point);
         if (open-ask<Profit) continue;
         OrderClose (OrderTicket(),OrderLots(),ask*point,slippage);
      }
      }
      }
if(ALL_NULL==True)
      {
      for (int kki=OrdersTotal()-1; kki>=0; kki--)
      {
      if (!OrderSelect(kki,SELECT_BY_POS,MODE_TRADES)) break;
      if (OrderType()==OP_BUY)
      {
         point=MarketInfo(OrderSymbol(),MODE_POINT);
         if (point==0) break;
         bid=MathRound(MarketInfo(OrderSymbol(),MODE_BID)/point);
         open=MathRound(OrderOpenPrice()/point);
         if (bid-open>Profit) continue;
         OrderClose(OrderTicket(),OrderLots(),bid*point,slippage);
      }
      if (OrderType()==OP_SELL)
      {
         point=MarketInfo(OrderSymbol(),MODE_POINT);
         if (point==0) break;
         ask=MathRound(MarketInfo(OrderSymbol(),MODE_ASK)/point);
         open=MathRound(OrderOpenPrice()/point);
         if (open-ask>Profit) continue;
         OrderClose (OrderTicket(),OrderLots(),ask*point,slippage);
      }
      }
      }
if(ALL_SELL==True)
      {
         for (int kiii=OrdersTotal()-1; kiii>=0; kiii--)
         if (!OrderSelect(kiii,SELECT_BY_POS,MODE_TRADES))
         if (OrderType()==OP_SELL || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP) OrderClose (OrderTicket(),OrderLots(),Ask,slippage);
      }   
 if(ALL_BUY==True)
      {
         for (int kji=OrdersTotal()-1; kji>=0; kji--)
         if (OrderSelect(kji, SELECT_BY_POS))
         if (OrderType()==OP_BUY || OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP ) OrderClose (OrderTicket(),OrderLots(),Bid,slippage);
      }  
      }
avatar

  9  Servir Сообщений: 84

  • 30 июня 2019, 15:07
+
0
Вот так бы и сразу.Больше так не лажай ( приду почитаю )
avatar

  3  RinsWind Автор Сообщений: 38

  • 30 июня 2019, 15:10
+
+1
Слушай а для старика ты круто ногами печатаешь
avatar

  9  Servir Сообщений: 84

  • 30 июня 2019, 15:22
+
+1
Мужчины, из -за чего такая дискуссия? В свободном доступе, с открытым исходником, масса разнообразных скриптов. Например такой. Отличный функционал.

//+------------------------------------------------------------------+
#property copyright "Vladimir Khlistov"
#property link      "http://cmillion.narod.ru"
#property show_inputs
#include <WinUser32.mqh>
//+------------------------------------------------------------------+
extern int   Magic       = 0;   //закрывать только сделки с магиком 0-открытые вручную
extern bool  MagicAll    = true;//если true - закрывать все
extern int   Profit      = 0;   //закрывать только сделки с профитом больше Profit
extern int   TipOrder    = 0;   //(0) - все ордера   (1) - Buy     (-1) - Sell
extern bool  SymbolAll   = false;//если true - все валютные пары   false - только текущие
extern bool  DeleteOrders= true;//если true - удалять и отложенные   false - только рыночные
extern int   attempts   = 10;    //кол-во попыток закрытия
int   slippage    = 5;
int nn;
//+------------------------------------------------------------------+
int start()
{  
   Comment("Запуск скрипта CloseAllOrders ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
   if (Digits==5 || Digits==3) slippage=30;
   bool error=true;
   int Ошибка,DIGITS,OT,Ticket;
   string txt;
   double ASK,BID,POINT;
   if (!MagicAll)  txt=StringConcatenate(txt,"Cкрипт закрытия ордеров с Magic=",Magic);
   else  txt=StringConcatenate(txt,"Cкрипт закрытия всех ордеров");
   Comment("");
   int ret=MessageBox("Закрыть все ордера (Да)   Закрыть только профитные (Нет)",
       txt, MB_YESNOCANCEL|MB_TOPMOST);
   if (ret==IDCANCEL) return;
   while(true)
   {
      for (int j = OrdersTotal()-1; j >= 0; j--)
      {
         if (OrderSelect(j, SELECT_BY_POS))
         {
            if ((OrderSymbol() == Symbol()||SymbolAll) && (OrderMagicNumber() == Magic || MagicAll))
            {
               DIGITS = MarketInfo(OrderSymbol(),MODE_DIGITS);
               ASK = NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),DIGITS);
               BID = NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),DIGITS);
               POINT = MarketInfo(OrderSymbol(),MODE_POINT);
               OT = OrderType();
               Ticket=OrderTicket();
               if (OT==OP_BUY && (TipOrder == 1||TipOrder ==0)) 
               {
                  if (ret==IDNO && Profit > (BID-OrderOpenPrice())/POINT) continue;
                  error=OrderClose(Ticket,OrderLots(),BID,slippage,Red);
                  if (error) Alert("Закрыт ордер N ",Ticket,"  прибыль ",OrderProfit(),
                                     "     ",TimeToStr(TimeCurrent(),TIME_SECONDS));
               }
               if (OT==OP_SELL && (TipOrder ==-1||TipOrder ==0)) 
               {
                  if (ret==IDNO && Profit > (OrderOpenPrice()-ASK)/POINT) continue;
                  error=OrderClose(Ticket,OrderLots(),ASK,slippage,Red);
                  if (error) Alert("Закрыт ордер N ",Ticket,"  прибыль ",OrderProfit(),
                                     "     ",TimeToStr(TimeCurrent(),TIME_SECONDS));
               }
               if (OT>1 && DeleteOrders) 
                  if (OrderDelete(Ticket))
                     Comment("Ордер ",Ticket," успешно удален ",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS));
                  else
                     Comment("Ордер ",Ticket," ошибка удаления ",GetLastError());
               
               if (!error) 
               {
                  Ошибка = GetLastError();
                  if (Ошибка<2) continue;
                  if (Ошибка==129) 
                  {  Comment("Неправильная цена ",TimeToStr(TimeCurrent(),TIME_SECONDS));
                     Sleep(5000);
                     RefreshRates();
                     continue;
                  }
                  if (Ошибка==146) 
                  {
                     int ret1=MessageBox("Подсистема торговли занята"," ", 
                         MB_RETRYCANCEL|MB_TOPMOST|MB_ICONWARNING);
                     if (ret1==IDCANCEL) return;
                     j++;
                     if (IsTradeContextBusy()) Sleep(2000);
                     continue;
                  }
                  Comment("Ошибка ",Ошибка," закрытия ордера N ",Ticket,"     ",TimeToStr(TimeCurrent(),TIME_SECONDS));
               }
            }
         }
      }
      int n=0;
      for (j = 0; j < OrdersTotal(); j++)
      {
         if (OrderSelect(j, SELECT_BY_POS))
         {
            if ((OrderSymbol() == Symbol()||SymbolAll) && (OrderMagicNumber() == Magic || MagicAll))
            {
               DIGITS = MarketInfo(OrderSymbol(),MODE_DIGITS);
               ASK = NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),DIGITS);
               BID = NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),DIGITS);
               POINT = MarketInfo(OrderSymbol(),MODE_POINT);
               if (OrderType()==OP_BUY  && (TipOrder == 1||TipOrder ==0))
               {
                  if (ret==IDNO && Profit > (BID-OrderOpenPrice())/POINT) continue;
                  n++;
               }
               if (OrderType()==OP_SELL && (TipOrder ==-1||TipOrder ==0))
               {
                  if (ret==IDNO && Profit > (OrderOpenPrice()-ASK)/POINT) continue;
                  n++;
               }
               if (OT>1 && DeleteOrders) n++;
            }
         }  
      }
      if (n==0) break;
      nn++;
      if (nn>attempts) {Comment("Не удалось закрыть все сделки, осталось еще ",n);break;}
      Sleep(1000);
      RefreshRates();
   }
   return(0);
}
//+------------------------------------------------------------------+


avatar

  18  GAWroch Сообщений: 84 - Вячеслав

  • 2 июля 2019, 02:48

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари