Лента последних комментариев


0
Вижу тема не вошла.
Ладно. Картинки то красивые мне можно?
Когда при спичит.
avatar

kvashnin007

  • 11 июня 2026, 01:31
0
Да, по ходу отметились еще нюансы. Потихоньку реагирую.
avatar

kvashnin007

  • 8 июня 2026, 23:54
0
Привет, Игривый.

Подвис я с советником.

Хрень всякую выдает, а по алгоритму не хочет. Условия ему жесткие выставляю, а эта падла все норовит по своему усмотрению.

ТИПА ВОТ ТАК:



Под линеечку (загиб — раннее закрытий не отработавших ордеров). Прибыль даже какоя-то есть за месяц. Эквити всегда выше депозита — закрывай в любой момент, если на молоко не хватает. Че те надобно то еще, Старче?

Да в том то и дело — денег на молоко.

Сдвинешь время на пораньше так на недельку и… ВСЕ. Гнилая слива

Да и тестер — то работает по этим настройкам, то сливает, а то вообще сделок не открывает.

Видимо не умею я с ним таки разговаривать.

Короче — пытаюсь заставить этого не хорошего человека работать по алгоритму. Иногда работает. Иногда хрень выдает. ЗамУчал, падла. Но еще не замОчил.
avatar

kvashnin007

  • 8 июня 2026, 23:53
0
Завтра будем открывать ордера.
А пока, всем доброй ночи.
avatar

kvashnin007

  • 6 июня 2026, 22:35
0
Ладно.
Остряков много, как я посмотрю, а займемся таки делом.

Для начала создал СКЕЛЕТ, на который и будем всех собак вешать.
<code>

//+------------------------------------------------------------------+
//|                                                  ТрахТибиДох.mq4 |
//|                                              Copyright 2026, KAE |
//|                                            kvashnin007@gmail.com |
//+------------------------------------------------------------------+
#property version   "1.00"
#property strict

//--- Inputs       Чем их меньше, тем быстрее и проще оптимизировать
extern int    CountOrders    = 20;       // Число позиций в серии
extern bool   Reverse        = false;    // Обратный сигнал
extern double Lots           = 0.02;     // Стартовый лот
extern double Risk           = 1.0;      // Риск в % от маржи
extern int    TrailingStop   = 255;      // Дистанция трала БУ
//---
extern int    Slippage       = 30;       // Проскальзывание
extern int    MagicNumber    = 1961;     // Магик

string   Comm = "ТрахТибиДох";  // Тут и коню понятно.
datetime CurrentTime = 0;       // Для того, чтобы на свече было не более одного ордера.
double   BuySL = 0, SellSL = 0; // Значения тралов БУ. Всем нужна эта инфа.
// По ходу творчества внешние переменные будем добавлять.
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   Comment("");
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{                                                         // Получение сигнала на покупку-продажу 
         bool Buy, Sell, B=0, S=0;
         
         B = Close[2]<Open[2];                            // Свеча закрылась вверх - сигнал Buy
         S = Close[2]>Open[2];                            // Свеча закрылась вниз - сигнал Sell
         //---
         Buy  = B; Sell = S;
         if(Reverse)  {Buy  = S; Sell = B;}               // Если Reverse - наоборот
//--------------------- Открываем ордера - один на свечу ----------------------------------
         if(CurrentTime!=Time[0])
            {
            
            CurrentTime=Time[0];
            }
}
//+------------------------------------------------------------------+

                                           // Напишем несколько функций, которые на первое время понадобятся.
                                           
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type)
{
            int r=0;
            color clr=clrNONE;
            double sl=0,tp=0,price=0;
         
            if(type==OP_SELL)
               {
               clr=Red;
               price=Bid;
               }
         
            if(type==OP_BUY)
               {
               clr=Blue;
               price=Ask;
               }
       r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,_Digits),Slippage,0,0,Comm,MagicNumber,0,clr);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
{
         double lot=Lots;
         
         if(Risk>0 && MarketInfo(Symbol(), MODE_MARGINREQUIRED)!=0)
            lot=AccountFreeMargin()*Risk/100/MarketInfo(Symbol(), MODE_MARGINREQUIRED);
   return(NormalizeDouble(lot,2));
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(int ot=-1)
{
         int countB=0, countS=0;
      
         for(int i=OrdersTotal()-1; i>=0; i--)
            if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
               if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
                 {
                  if(OrderType()==OP_BUY)
                     countB++;
                  if(OrderType()==OP_SELL)
                     countS++;
                 }
         if (ot == OP_BUY)
            return (countB);
         if (ot == OP_SELL)
            return (countS);
         if (ot == 11)             // CountTrades(11) - количество всех ордеров
            return (countB+countS);
   return(0);
}
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void TrailingAll()
{
         bool rez=false;
      
         double all=0, allB=0, allS=0, countB=0, countS=0; BuySL=0; SellSL=0;
      
         for(int i=OrdersTotal()-1; i>=0; i--)
            if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
               if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
                  {
                  if(OrderType()==OP_BUY)
                     {
                     allB+=OrderOpenPrice()*OrderLots();
                     countB+=OrderLots();
                     }         
                  if(OrderType()==OP_SELL)
                     {
                     allS+=OrderOpenPrice()*OrderLots();
                     countS+=OrderLots();
                     }         
                  }
         if(countB>0)
            allB=NormalizeDouble(allB/countB,_Digits);
         if(countS>0)
            allS=NormalizeDouble(allS/countS,_Digits);
         if((countB+countS)>0)
            all=NormalizeDouble((allB+allB),_Digits);//NormalizeDouble((allB+allB)/(countB+countS),_Digits);//
      
         for(int i=OrdersTotal()-1; i>=0; i--)
            if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
               if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
                  {
                  if(OrderType()==OP_BUY)
                      if(Bid-allB>TrailingStop*_Point)
                         if(OrderStopLoss()<Bid-TrailingStop*_Point)
                           {
                           BuySL=NormalizeDouble(Bid-TrailingStop*_Point,_Digits);
                           if(OrderStopLoss()!=BuySL)
                              rez=OrderModify(OrderTicket(),OrderOpenPrice(),BuySL,OrderTakeProfit(),0,Yellow);
                           }
                  if(OrderType()==OP_SELL)
                      if(BuySL-Ask>TrailingStop*_Point)
                         if((OrderStopLoss()>(Ask+TrailingStop*_Point)) || (OrderStopLoss()==0))
                           {
                           SellSL=NormalizeDouble(Bid+TrailingStop*_Point,_Digits);
                           if(OrderStopLoss()!=SellSL)
                              rez=OrderModify(OrderTicket(),OrderOpenPrice(),SellSL,OrderTakeProfit(),0,Yellow);
                           }
                  }
}
//+------------------------------------------------------------------+
//|   Удаление самого старого крайнего ордера.                       |
//+------------------------------------------------------------------+
void CloseOld(int type)
{
            double PriceBuyMin=0,PriceSellMax=0,LotBuyMin=0,LotSellMax=0;
            int    TicketBuyMin=0,TicketSellMax=0;
            bool   rez=false;
            
            for(int i=OrdersTotal()-1; i>=0; i--)
               if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
                  if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
                     {
                     double lt  = OrderLots(),
                            op  = OrderOpenPrice();
                     int    tic = OrderTicket();
                     
                     if (type==OP_BUY && OrderType()==OP_BUY)
                        if (PriceBuyMin==0 || op<PriceBuyMin)
                           {
                           PriceBuyMin  = op;
                           LotBuyMin    = lt;
                           TicketBuyMin = tic;
                           }
                     if (OrderType()==OP_SELL)
                        if (PriceSellMax==0 || op>PriceSellMax)
                           {
                           PriceSellMax  = op;
                           LotSellMax    = lt;
                           TicketSellMax = tic;
                           }
                     //---
                     if (type == OP_BUY)
                        rez = OrderClose(TicketBuyMin,LotBuyMin,Bid,Slippage);
                        
                     if (type == OP_SELL)
                        rez = OrderClose(TicketSellMax,LotSellMax,Ask,Slippage);
                     }
}

<code>
avatar

kvashnin007

  • 6 июня 2026, 22:23
0
Что имеете? Не подумайтеплохого.Ввиду.
И что вы можете предложить?
Или это тоже не для вас?

Тема обозначена. Идея изложена. Менеджмент? Изложен буковками и картинкой.
Что не понятно — уточняйте.
В конце концов посомневайтесь, что ли.
avatar

kvashnin007

  • 6 июня 2026, 21:45
0
а что там с менеджментом сделок или это не для нас
avatar

igrun

  • 6 июня 2026, 18:31
0
Alex, доброго дня.

В топе заявлено: побольше оборот лотов, для КэшБэка и при минимальных рисках.
По-этому в данном советнике не рассматривается вопрос прибыли. Главное чтобы не убыток.
Но уверяю вас, то что я вижу — прибыль будет не малая. Опять же при минимальных рисках.

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

Так-что не надо язвить. Хотите участвовать — побольше позитива. Хорошие идеи тоже не помешают.

Иначе проходите мимо.

Хорошего дня.
avatar

kvashnin007

  • 6 июня 2026, 13:21
0
Просто:

Два одинаковых разнонаправленных ордера не имеют общего безубытка.
по простой причине:

AllBU = (OOP_Buy*Lot_Buy — OOP_Sell*LotSell)/(LotBuy-LotSell);

Но каждый ордер получит свой SL, равный дистанции трала, если цена его достигнет.
На самом деле тралится SL каждого ордера, равный тралу БУ.

Опять язвите. Ничего никому не продаю и ничего не показываю. Тем более, что советник только собираюсь писать, в том числе при помощи заинтересованных лиц.

Вы к ним явно не относитесь. Балы что ли зарабатываете?
ЗарабатывайтеСЬ в другом месте.

Просто не мешайте.

И Вам не хворать.
avatar

kvashnin007

  • 6 июня 2026, 13:19
0
И ещё вопрос: как одновременно открыть два противоположных ордера и что бы по ним был общий положительный безубыток.Если не трудно то покажите на демосчёте.
avatar

alex30774

  • 6 июня 2026, 12:47
0
4. Доходность не принципиальна.

Здравствуйте.Если доходность не принципиально, тогда что важно: стабильный слив дерозита?
avatar

alex30774

  • 6 июня 2026, 12:41
0
Теперь за нюансы выше, отложенные на потом.

1. Закрывать или нет второй ордер из стартовых? Думаю лучше оставить. И вот почему:

— Во-первых нет падения депозита. А то что он тянет за собой минус — не беда.
— Во-вторых тралим то мы все равно ОБЩИЙ БУ. А наличие противоположного ордера, при всех прочих равных, ставит трал БУ в более выгодное положение, что дает больше меневра.
Это практически не заметно, но… всё таки.Иногда.
— В -третьих при закрытии серии по общему БУ оставшийся ордер, в зависимость от его положения, может, при прочих равных, тоже «улучшить» расположение трала для увеличения маневра.

2. А может двух! Имеется ввиду открытие в зоне безопасности ордеров в двух направлениях. Надо пробовать. И вот в чем мыслЯ. В принципе нам не важно какие ордера. Лишь бы побольше. В пределах разумного конечно.
А открытие противонаправленных ордеров дают замок, что не влияет на общий БУ, и просадку по эквити. Ну кроме поборов брокера. Так и там тоже не без них.
Зато этот маневр не дает тралу так стремительно приближаться к изменчивой цене.
Что в свою очередь способствует продлению сессии. С другой стороны снижается доходность. Но мы же не о ней? А то, что снижается просадка, об этом в иретьем нюансе.

3. Третий нюанс.
Просадки низкой ожидать не приходится. По прикидкам — более 50%. Но… Любимое НО…
Любая текущая просадка ограничивается ТРАЛОМ БУ.
И раздражает эта просадка только до закрытия сессии.
А с другой стороны радует то, что работают не 2-5% «просадочных» денег, а все 50%.

Нюансов будет еще много. Например, работа без SL и ТР.

avatar

kvashnin007

  • 6 июня 2026, 12:30
0
Ордера можем открывать по любому принципу. Да хоть:
bool buy = Close[1]>Open[1];
bool sell = Close[1]<Open[1];
Или наоборот. Пока не важно. Главное — побольше, побольше.

Беда в другом:
Цена за внешней границей, общий SL стоит. Да и еще в плюсе.
А мы все кидаем и кидаем себе ордера до срабатывания SL БУ.
Вернее мы спокойно спим, а ордера кидает советник.
Просыпаемся утром, смотрим — гочерга. Идем в журнал, а там черным по белому: StopOut.
Да и еще по марже чего-то там должны.

Я не зря сделал выше оговорку по фрейду за смерть… Это про смерть депозита.
Оказывается, что безмерное открытие ордеров в безопасной зоне привело к тому,
что залоговые средства съели всю маржу. Вот тебе и Тришкин кафтан безопасной зоны.

Решения этой проблемы есть:

1. Можно определять лотность каждого ордера, как процент от, например, 70% свободной
маржи. Когда она будет заканчиваться, не открывать ордера из-за Lot=0.
Тогда за повышение лотности можно забыть. Тралим прибыль. Что тоже не плохо.
Но… это другое.

2. Можно установить ограничение на количество ордеров в серии. Например, coun=20;
Решает проблему? ЧАСТИЧНО. Во-первых оптимальное количество ордеров сильно
зависит от волатильности рынка, правильно подобранной дистанции трала.
Кроме того, можно тоже забыть за повышение лотностию Тралим прибыль.

3. Есть убойный вариант. И лотность повышаем и прибыль повышаем.
Для этого берем первый (предпочтительнее) или второй (проще) вариант решения.
Но… Или лоты снизнтились до ноля, или количество ордеров стало предельным,
мы просто закрываем старейший ордер в серии, тем самым возвращаем залог за него в
свободную маржу, плюс, туда же кладем пего прибыль.
Депо повысилось, свободных средств стало поболее. Просто и изящно.Мечта главбуха.

avatar

kvashnin007

  • 6 июня 2026, 11:25
0
Извините за ошибки в топе. Съел что-то не то.

Часто попадаются записи на сайте о том, что хотелось бы иметь такой советник.

Я этим вопросом не заморачивался, а сейчас в командировке.
Дело было вечером, делать было… Ну совсем.

Идея советника проста. Как семь рублей одной купюрой.
Дождаться, когда можно и открываться, пока можно.

Рашифрую девиз.

Цели поставлены в топе.

Предлагаю простую идею для написания советника.



Пока без извращений.

Запускаем советник. Открываются два ордера одинаковым лотом в двух направлениях.
Без SL. Запускаем ТРАЛ безубытка каждого из них. Спим спокойно, ибо полный замок хоть и не дает расти прибыль, так и не допускает роста убытков.
Цена ходит туды-сюды. Ходит… и ВСЕГДА наступает такой момент, когда цена отрывается от открытия какого-нибудь из ордеров на дистанцию заданного трала. Этот ордер получает свой SL. который тралится. Второй (Не обязательно! Позже поясню) можем закрыть.
Снова спим спокойно: SL есть, и он в плюсе.

Далее наступают веселые мгновенья, а иногда и недели с месяцами. Зависит от дистанции трала и длительности тренда. Посмотрите на японца — непрерывно падает. Тралим себе.
Веселье в том, что пока цена находится за наружными пределами трала общего БУ, мы можем кидать кучу ордеров нужного направления (А может и двух? Надо подумать!!!) сколь душе угодно. До тех пор, пока смерть не...(пардон), пока цена не достигнет нашего, вполне подвижного трала.

Дальше — по-новому.

СРАЗУ ЗАЯВЛЯЮ: Я НЕ ОБЯЗУЮСЬ САМ НАПИСАТЬ СОВЕТНИК. ТЕМ БОЛЕЕ ДЛЯ ТОРГОВЛИ. ПРОСТО ГИМНАСТИКА ДЛЯ УМА. НАДЕЮСЬ — НЕ ТОЛЬКО.
avatar

kvashnin007

  • 6 июня 2026, 10:25
0
Понятно.OSA правду написал, что этих умников увидишь сразу.Это как бомжики, всё знают всё делают, а сами бедные без денег.Беги от них, это великие мозгоёбы.
avatar

zaharik100

  • 3 июня 2026, 09:56
0
бабла бы, индюки не требуются
avatar

igrun

  • 2 июня 2026, 23:06
0
а как с оплатой, каков бюджет
avatar

igrun

  • 2 июня 2026, 22:43