0
РЕШИЛ все это намного проще поставил 2 советника
один от Кима на один граф следит за общим счетом. другой от Владимира на второй ставит стопы тейки и трелинг. все работает и все хорошо.

спасибо за помощь. если кого интересует — советник от Ким Игорь e-CloseByLossOrProfit

Советник закрывает все позиции при достижении заданного уровня убытка или профита в валюте депозита.

советник от Владимира cmillion TrailingStopLight

выставляет автоматом стопы и тейк. переводит в безубыток и тралит позиции
avatar

eduard9898

  • 31 декабря 2021, 09:53
0
ок. сегодня мне наверное хватит — голова что совсем не варит. но с тем что вы сделали думаю будет проще разобраться.

хотел добавить что я торгую в ручную поэтому сам советник только нужен для
1.выстовляет стопы и тейк
2. трал
3. закрытие по общему минусу (на случай что зашел не одним ордером)
avatar

eduard9898

  • 29 декабря 2021, 20:34
0
вроде сначала было все просто (и даже работало)сейчас решил установить общий убыток и уже не все так легко.

а началось все с того что старался зайти в минус — добился что слил все что за день натыркал и пришло понимание

думаю что попробую взять все что можно от кима тогда манера написания будет одна и проще будет найти ошибки
avatar

eduard9898

  • 29 декабря 2021, 18:44
0
ок пробую еще раз просто сделал все по порядку и в конце высыпало ошибок штук 10

еще раз спасибо за понимание. все сделал. сейчас надо добавлять стопы и тейки и т.д
avatar

eduard9898

  • 29 декабря 2021, 18:04
0
спасибочки. но я в програмировании ноль. ( просто собираю кубики ну или подчти)
я добовлял от кима функции но не понимаю главной ошибки что раньше и как сложить

буду дальше пробывать.я так понимаю что сейчас надо все это вместе соединить.

да я поменял слова ( я понимаю что должны быть условия и должно быть выполнение их и это разные вещи) т.к вылетала ошибка — зато ошибок не стало
avatar

eduard9898

  • 29 декабря 2021, 13:19
0
вот второй вариант но тоже общий минус не срабатывает


добавил

//+----------------------------------------------------------------------------+
//|  Закрытие всех позиций по общему убытку таблетка от жадности               |
//+----------------------------------------------------------------------------+

//+----------------------------------------------------------------------------+
//|       Функция возвращает тип операции в виде текста (string)               |
//+----------------------------------------------------------------------------+



string NameOrd(
               int type) // тип ордера
  {
   string tx="Unknown Order Type";
   switch(type)
     {
      case 0 : tx="Buy";break;
      case 1 : tx="Sell";break;
      case 2 : tx="Buy Limit";break;
      case 3 : tx="Sell Limit";break;
      case 4 : tx="Buy Stop";break;
      case 5 : tx="Sell Stop";
     }
   return(tx);
  }

//+----------------------------------------------------------------------------------------+
//|  Функция обрабатывает торговые ошибки, возникающие при открытии и закрытии ордеров.    |
//+----------------------------------------------------------------------------------------+

bool ErrorChecking(
                   int error) // код ошибки
  {
   switch(error)
     {
      case 2:return(false);
      case 3:return(false);
      case 131:return(false);
      case 132:return(false);
      case 133:return(false);
      case 134:return(false);
      case 139:return(false);
      case 140:return(false);
      case 147:return(false);
      case 148:return(false);
      case 149:return(false);
      case 150:return(false);
      case 4110:return(false);
      case 4111:return(false);
      case 4108:return(false);
     }
   return (true);
  }
  
  
//+----------------------------------------------------------------------------------------+
//|    Функция закрывает предварительно выбранный рыночный ордер (позицию)                 |
//+----------------------------------------------------------------------------------------+
// Включаемый файл 
 #include <stdlib.mqh>
// Входные параметры
input int   NumOfTry=10;               // Количество попыток закрыть ордер
input color clrCloseBuy=clrRed;        // Цвет стрелки закрытия Buy
input color clrCloseSell=clrBlue;      // Цвет стрелки закрытия Sell
input int   Slippage=40;               // Максимально допустимое отклонение цены
//---

void ClosePosBySelect()
  {
   bool   res;
   color  clrClose;
   double lo,opPr;
   int    err;
   if(OrderType()<2)
     {
      for(int nm=1; nm<=NumOfTry; nm++)
        {
         // Выходим с цикла если принудительно завершили работу советника
         if(!IsTesting() && (!IsExpertEnabled() || IsStopped()))
            break;
         // Если поток для совершения операций занят, ждем 4 секунды
         while(!IsTradeAllowed())
            Sleep(4000);
         // Обновляем данные
         RefreshRates();
         if(OrderType()==OP_BUY)
           {
            opPr=MarketInfo(OrderSymbol(),MODE_BID);
            clrClose=clrCloseBuy;
           }
         else
           {
            opPr=MarketInfo(OrderSymbol(),MODE_ASK);
            clrClose=clrCloseSell;
           }
         lo=OrderLots();
         res=OrderClose(OrderTicket(),lo,opPr,Slippage,clrClose);
         // Если удалось закрыть ордер, выходим с цикла
         if(res)
           {
            Print("Order: "+(string)OrderTicket()+" has been closed successfully");
            break;
           }
         // Если не удалось закрыть ордер...
         else
           {
            err=GetLastError();
            Print("Error("+(string)err+") Order close error: "+ErrorDescription(err));
            // Если ошибка не критичная, ждем 2 секунду и пытаемся закрыть ордер повторно
            if(ErrorChecking(err))
              {
               Sleep(2000);
              }
            // Если ошибка критичная, выходим с цикла
            else
              {
               Print("?losing stopped!");
               return;
              }
           }
        }
     }
   else Print("Incorrect trading operation. Close "+NameOrd(OrderType()));
  }


//+----------------------------------------------------------------------------+
//|   Закрытие определенных позиций, у которых убыток в валюте депозита        | 
//|              на данный момент больше чем некоторое значение                | 
//+----------------------------------------------------------------------------+

//Параметры:
//sy - наименование инструмента ("" - любой символ,NULL - текущий символ)
//op - операция (-1 - любая позиция)
//mn - MagicNumber (-1 - любой магик)
//pr - профит/убыток

void ClosePosBySizeLossInCurrency(string sy="", int op=-1, int mn=-1, double pr=0) {
  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) {
            if (OrderProfit()+OrderSwap()<-MathAbs(pr)) ClosePosBySizeLossInCurrency();
          }
        }
      }
    }
  }
}

//+----------------------------------------------------------------------------+
//|  вот вроде и собрал чудо                                                   |
//+----------------------------------------------------------------------------+
avatar

eduard9898

  • 29 декабря 2021, 09:01
0
извеняюсь вчера просто не понял о чем речь (впрочем как и сегодня )
если можно поподробнее.
в данный момент работает советник с такими параметрами



т.е захожу лотом (если в + то на 50$ закрыл если в минус то через 10 пунктов срабатывает отложенный на 2 лота вышли в + 50 $ вышли из сделки и т.д

где еще что можно проконтролировать?
avatar

eduard9898

  • 8 декабря 2021, 09:00
0


думаю если еще добавляется то удвоениями можно слить депозит.

кроме того зачем в принципе советник для скальпинга. но если уменьшить вход и увиличить расстояние то можно и на среднюю дистанция пойти.

если интересно то работаю с несколькими индикаторами могу скинуть но они в ex4

avatar

eduard9898

  • 7 декабря 2021, 22:24
0
спасибо сейчас есть чем заняться буду проверять и оптимизировать
avatar

eduard9898

  • 7 декабря 2021, 14:32
0
вау как все быстро (не ожидал)

думаю что все таки еще стопы нужны.т.е общие стопы чтобы не сидеть в замках и потом в просадке лучше чтобы закрывались в минус
avatar

eduard9898

  • 7 декабря 2021, 13:46
0
спасибо буду экспериментировать *hi* 

и сразу вопрос если первый ордер закрываю в ручную то отложенный должен быть удалён?
и если можно добавить общий стоп лосс.
avatar

eduard9898

  • 7 декабря 2021, 13:24
0


ок. попробую по порядку.

1. вход в рынок в ручную в любую сторону.(первый ордер)
2. при входе советник должен выставлять противоположный ордер увеличенный на коэффициент.(второй ордер)
3. при срабатывании второго ордера выставлять противоположный (третий ордер )
4.и так далее при срабатывании 3 ордера открывается 4 и 5 и т.д советник должен контролировать разницу в баях и селлах и выстовлять отложеник.
5.это буду называть серия и она должна быть ограничена допустим 5 баев и 5 селлов


6.но если серия закончилась и я открываю любую часть замка то должен выставляется отложеник на разницу.
7.нет не стопов не тейков

avatar

eduard9898

  • 19 августа 2021, 04:50
0
если что то не хватает для объяснения с удовольствием добавлю.
avatar

eduard9898

  • 17 августа 2021, 05:13
0
так основная проблема что он не всегда выставляет отложенники то да то нет



avatar

eduard9898

  • 16 августа 2021, 17:29