Страница 100 из 100
#2479
20 часов назад, dotodot сказал:

Есть старенький мультиволютный советник. В нем заложен довольно интересный принцип работы: локирование и выход из просадки с профитом. Но не устраивает его настройки в старых пунктах, неудобно на пятизнаке и золоте. Кто может это поправить? Хотелось бы иметь настройки отступов в понятных пунктах.

Глянул, это декомпил еще в придачу идет с неизвестной dll, вряд ли кто-то за это возьмется. 

#2480
7 часов назад, ademen сказал:

Глянул, это декомпил еще в придачу идет с неизвестной dll, вряд ли кто-то за это возьмется. 

dll безопасна, если в этом загвостка. У меня он стоял на трех брокерах. Проблем небыло.

#2481

 

Уважаемые программисты, кто шарит в коде  
Помогите добавить пожалуйста к советнику следующие параметры

Если можно в тоже табло что уже есть в советнике, впилить:
1. Закрыть все ордера Sell
2. Закрыть все ордера Buy
(Необходимо чтобы все ордера которые были открыты закрылись, приносят прибыль или нет, не важно) 
Возможно добавить к таблу общий профит (и колво лотов набраных) от сети buy и sell, чтобы я мог видеть эту строку.
Возможно добавить в сам робот фиксированный профит, например если вся сеть приност более 1% профит, то она закрылась.

Планирую использовать в полуавтоматическом режиме, строить сеть на не волатильных инструментах, под разными меджиками в sell и buy одновременно. 

Софт считаю годным, взят из форума. Больше подходит под разгонный вариант, никаких 5% в месяц)
Выкладываю робота и сам сет.

 

EURGBP 5M10000CENT 0.01RISKHIGH.set10 скач. X-43A.mq421 скач.

#2482

Добрый день. Подскажите советник (кусок кода) который может тралить отложенные ордера. Интересуют стоповые ордера. Заранее благодарю.^:)^

#2483

Уважаемые програмисты кто может посмотреть советника? В тестере огонь на деле молчит код открытый там китайские иероглифы поподаются, может из за них советник каменный. Прошу оживить кто может! Если оживите можно будет веложить в ветку советников. Заранее Благодарю! 

SuperEATMA.mq415 скач.

Изменено 24 января, 2025 пользователем Neotrade

#2484
2 часа назад, Neotrade сказал:

Заранее Благодарю! 

Бесполезный мусор, чтение истории в тестах. На дворе 2025 год, такие примитивные фейки пора научиться за секунды определять

#2485

Да извиняюсь сам проверил, и ещё закоментировав доступ советника в dll, слив полный! Поспешил надо было сразу проверить!

Изменено 24 января, 2025 пользователем Neotrade

#2486

Доброго всем, долго искал наипростейший помощник и без всякого опыта и знаний в чате GPT сотворил, простая панель управления (купить, продать, закрыть прибыльные и закрыть все), советник откроет одновременно 5 сделок, новые не открывает пока не закроются первые, может нужен кому, спасибо, еще доработал

Дони_6.ex48 скач. Дони_6.mq413 скач.

Помощник_Автомат.ex49 скач. Помощник_Автомат.mq412 скач.

Изменено 29 января, 2025 пользователем Doni

#2487

Пожалуйста ребята, кто в сову сможет добавить пачку индикаторов, любых на ваш выбор rsi, adx, atr, ema, разных на выбор. Обязательно отблагодарю чашкой кофе, кто шарит могу поделиться как буду использовать данный сов

X-43A.mq46 скач.

#2488

Здравствуйте товарищи, ей богу ни хера не понимаю но создаю в чате GPT помощники, советники,скрипты, вот создал тендовый советник с привязкой индикатора Супер тренд, не навязываю просто посмотрите просто, иногда приходилось простой скрипт покупать но оказывается всё просто

Дони_Тренд.ex44 скач. Дони_Тренд.mq410 скач. Закрыть_все.ex40 скач. Закрыть_все.mq42 скач. Закрыть_прибыльные.ex40 скач. Закрыть_прибыльные.mq44 скач.

#2489
3 часа назад, Doni сказал:

ни хера не понимаю

Что обьяснить?

#2490

Всем добрый день. Вопрос по советнику 1.7 Николаус Рефакт (Ilan1.7Refact), тот который в блоге можно скачать. Хочу попросить, можно ли его доработать, а именно: при построении сетки сов выставляет ТП, но иногда рыночная цена не позволяет в некоторых сделках выставить ТП и получается, что данная сделка (несколько сделок) висит как сама по себе или же со старым ТП. Можно дописать в коде так, что бы на каждом круге или ещё как то, советник проверял на всех ли сделках в сетке выставлен ТП и если не на всех, то доставлял. Спасибо.

Во вложении вложил его.

Ilan1.7Refact.mq48 скач.

#2491
В 07.04.2025 в 17:38, kuharev сказал:

Всем добрый день. Вопрос по советнику 1.7 Николаус Рефакт (Ilan1.7Refact), тот который в блоге можно скачать. Хочу попросить, можно ли его доработать, а именно: при построении сетки сов выставляет ТП, но иногда рыночная цена не позволяет в некоторых сделках выставить ТП и получается, что данная сделка (несколько сделок) висит как сама по себе или же со старым ТП. Можно дописать в коде так, что бы на каждом круге или ещё как то, советник проверял на всех ли сделках в сетке выставлен ТП и если не на всех, то доставлял. Спасибо.

Во вложении вложил его.

Ilan1.7Refact.mq4 20.81 \u043a\u0411 · 1 загрузка

 

Проверяет на каждом тике, свежие ли ТП у сетки. 
Если несвежие - отправляется ордер на модификацию.

Ilan1.7Refact v1.1.mq419 скач.

Изменено 9 апреля, 2025 пользователем Capital Plus

#2492
В 09.04.2025 в 07:41, Capital Plus сказал:

 

Проверяет на каждом тике, свежие ли ТП у сетки. 
Если несвежие - отправляется ордер на модификацию.

Ilan1.7Refact v1.1.mq4 44.73 \u043a\u0411 · 5 загрузок

Capital Plus, здравствуйте 

Я сейчас тестирую этот вариант, он довольно забавный с такой логикой. Но что по умолчанию должен делать советник: советник открывает сел, потом если цена против, то бай, а потом открывает уже сетку, в сторону противоположную текущей цене и в этой сетке ставит ТП, в ней же и должен сов контролировать ТП. А сов сейчас получается открывает, например , сел (первую сделку) и сразу в ней устанавливает ТП...., потом если цена пошла вверх, открывает бай и тоже устанавливает в ней ТП. В итоге мы имеем по одной сделке вверх и вниз с выставленными на них ТП. Хотя по логике советника первые(первая) сделки открываются без ТП. Это потом, когда начинает выстраиваться сетка, то начинают устанавливаться ТП..скажем програмно, в ту сторону, в которую открыто больше сделок, в ту и должны устанавливаться и потом поддерживаться ТП. но обязательно со второй сделку в одну сторону. Можно это поправить? И если что, то можете просто указать, где нужно в новом коде указать, что бы данный факт учитывался? Я со своими знаниями пытался этот момент сам исправить, но не разобрался...

Изменено 11 апреля, 2025 пользователем kuharev

#2493
23 часа назад, kuharev сказал:

Capital Plus, здравствуйте 

Я сейчас тестирую этот вариант, он довольно забавный с такой логикой. Но что по умолчанию должен делать советник: советник открывает сел, потом если цена против, то бай, а потом открывает уже сетку, в сторону противоположную текущей цене и в этой сетке ставит ТП, в ней же и должен сов контролировать ТП. А сов сейчас получается открывает, например , сел (первую сделку) и сразу в ней устанавливает ТП...., потом если цена пошла вверх, открывает бай и тоже устанавливает в ней ТП. В итоге мы имеем по одной сделке вверх и вниз с выставленными на них ТП. Хотя по логике советника первые(первая) сделки открываются без ТП. Это потом, когда начинает выстраиваться сетка, то начинают устанавливаться ТП..скажем програмно, в ту сторону, в которую открыто больше сделок, в ту и должны устанавливаться и потом поддерживаться ТП. но обязательно со второй сделку в одну сторону. Можно это поправить? И если что, то можете просто указать, где нужно в новом коде указать, что бы данный факт учитывался? Я со своими знаниями пытался этот момент сам исправить, но не разобрался...

или просто поставить условие, если больше или равно 1, то....и выполняется проверка

#2494
В 11.04.2025 в 17:05, kuharev сказал:

Capital Plus, здравствуйте 

Я сейчас тестирую этот вариант, он довольно забавный с такой логикой. Но что по умолчанию должен делать советник: советник открывает сел, потом если цена против, то бай, а потом открывает уже сетку, в сторону противоположную текущей цене и в этой сетке ставит ТП, в ней же и должен сов контролировать ТП. А сов сейчас получается открывает, например , сел (первую сделку) и сразу в ней устанавливает ТП...., потом если цена пошла вверх, открывает бай и тоже устанавливает в ней ТП. В итоге мы имеем по одной сделке вверх и вниз с выставленными на них ТП. Хотя по логике советника первые(первая) сделки открываются без ТП. Это потом, когда начинает выстраиваться сетка, то начинают устанавливаться ТП..скажем програмно, в ту сторону, в которую открыто больше сделок, в ту и должны устанавливаться и потом поддерживаться ТП. но обязательно со второй сделку в одну сторону. Можно это поправить? И если что, то можете просто указать, где нужно в новом коде указать, что бы данный факт учитывался? Я со своими знаниями пытался этот момент сам исправить, но не разобрался...


Добрый день

409-ая строчка, с "0" заменил на "2"
Попробуйте
image.png.2f5dabffe27ca03213ee46833197051b.png

Ilan1.7Refact v1.2.mq47 скач.

#2495
7 часов назад, Capital Plus сказал:


Добрый день

409-ая строчка, с "0" заменил на "2"
Попробуйте
image.png.2f5dabffe27ca03213ee46833197051b.png

Ilan1.7Refact v1.2.mq4

Спасибо. Вроде бы пошло нормально. Пока ещё не раскачегарился сов, пока только по две сделки, наблюдаю. Спасибо.

#2496

Всем добрый день. Я не сильно в этом разбираюсь, вставлял в советник блок для открывания лока и кое что сам своим разумением дописывал, но он не корректно работает. Задумка была такой: строится сетка, после того как свободной маржи становится мало, открывается лок, при этом сбрасываются все ТП и СЛ, отправляется в терминал сообщение и всё, советник ждёт моего вмешательства, далее сам не торгует.

Что в итоге получилось: лок выставляется, ТП и СЛ сбрасываются, сообщение в терминал приходит, но пачками, пока не зайду в терминал и не выключу пуш уведомления и что самое главное: сетка то продолжает открываться и при этом открывается к ней и лок! В итоге открывает по 5-10 не нужных противоположных сделок. А и в комментарии на локовой сделке пусто-нет ничего.

Прошу, подправьте, если можно. Код этого блока вот он:

 

double LB=0,LS=0;
   int b=0,s=0;
   int Ticket;
   double OSL,OTP,OOP;
   static bool one = true;
    // свободной маржи осталось "Х" % - открываем лок, при этом сбрасываем все SL и TP  
         if (AccountFreeMargin()<= AccountBalance()/100*percent_loc)
         {   for (int i=0; i<OrdersTotal(); i++)
   {    
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      { 
         if (OrderSymbol()==Symbol())
         { 
          OSL = NormalizeDouble(OrderStopLoss(),Digits);
            OTP = NormalizeDouble(OrderTakeProfit(),Digits);
            OOP = NormalizeDouble(OrderOpenPrice(),Digits);
            Ticket = OrderTicket();
            int tip = OrderType(); 
            if (tip==OP_BUY)             
            {  
               LB  += OrderLots();
               b++; 
            }                                         
            if (tip==OP_SELL)        
            {
               LS  += OrderLots();
               s++;
            } 
            if (OSL!=0 || OTP!=0)             
            {
               comment=EAName+"-"+Symbol()+"Лок";
               RefreshRates();
               if (!OrderModify(Ticket,OOP,0,comment,0,White))
                  Alert(Symbol()," ошибка Modify ",GetLastError()," Ticket ",Ticket);
            }
         }
      }
   }
   //---
   Comment(b," Buy  ",DoubleToStr(LB,2)," lot",
      "\n",s," Sell  ",DoubleToStr(LS,2)," lot");
   //--- отсылаем сообщение об открытии лока на телефон в терминал
   if (one && LS<LB)
   {
   one = false;
      if (OrderSend(Symbol(),OP_SELL,LB-LS,NormalizeDouble(Bid,Digits),100,0,0,NULL,MagicSell,0,CLR_NONE)==-1)
         Print("Ошибка ",GetLastError()," открытия ордера ");
         Comment("Открыт лок SELL");
       if (PushMessagesOn==True) 
            { 
              SendNotification(_Symbol + " открыт лок SELL ");
              Print (_Symbol + "открыт лок SELL");
            }
        } else one = true;
 
   if (one && LS>LB)
   {
   one = false;
      if (OrderSend(Symbol(),OP_BUY,LS-LB,NormalizeDouble(Ask,Digits),100,0,0,NULL,MagicBuy,0,CLR_NONE)==-1)
         Print("Ошибка ",GetLastError()," открытия ордера ");
         Comment("Открыт лок BUY");
         if (PushMessagesOn==True) 
            { 
              SendNotification(_Symbol + "открыт лок BUY");
              Print (_Symbol + "открыт лок BUY");
            }
        } else one = true;
}
}
}

#2497
В 19.06.2025 в 10:58, kuharev сказал:

Всем добрый день. Я не сильно в этом разбираюсь, вставлял в советник блок для открывания лока и кое что сам своим разумением дописывал, но он не корректно работает. Задумка была такой: строится сетка, после того как свободной маржи становится мало, открывается лок, при этом сбрасываются все ТП и СЛ, отправляется в терминал сообщение и всё, советник ждёт моего вмешательства, далее сам не торгует.

Что в итоге получилось: лок выставляется, ТП и СЛ сбрасываются, сообщение в терминал приходит, но пачками, пока не зайду в терминал и не выключу пуш уведомления и что самое главное: сетка то продолжает открываться и при этом открывается к ней и лок! В итоге открывает по 5-10 не нужных противоположных сделок. А и в комментарии на локовой сделке пусто-нет ничего.

Прошу, подправьте, если можно. Код этого блока вот он:

 

double LB=0,LS=0;
   int b=0,s=0;
   int Ticket;
   double OSL,OTP,OOP;
   static bool one = true;
    // свободной маржи осталось "Х" % - открываем лок, при этом сбрасываем все SL и TP  
         if (AccountFreeMargin()<= AccountBalance()/100*percent_loc)
         {   for (int i=0; i<OrdersTotal(); i++)
   {    
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      { 
         if (OrderSymbol()==Symbol())
         { 
          OSL = NormalizeDouble(OrderStopLoss(),Digits);
            OTP = NormalizeDouble(OrderTakeProfit(),Digits);
            OOP = NormalizeDouble(OrderOpenPrice(),Digits);
            Ticket = OrderTicket();
            int tip = OrderType(); 
            if (tip==OP_BUY)             
            {  
               LB  += OrderLots();
               b++; 
            }                                         
            if (tip==OP_SELL)        
            {
               LS  += OrderLots();
               s++;
            } 
            if (OSL!=0 || OTP!=0)             
            {
               comment=EAName+"-"+Symbol()+"Лок";
               RefreshRates();
               if (!OrderModify(Ticket,OOP,0,comment,0,White))
                  Alert(Symbol()," ошибка Modify ",GetLastError()," Ticket ",Ticket);
            }
         }
      }
   }
   //---
   Comment(b," Buy  ",DoubleToStr(LB,2)," lot",
      "\n",s," Sell  ",DoubleToStr(LS,2)," lot");
   //--- отсылаем сообщение об открытии лока на телефон в терминал
   if (one && LS<LB)
   {
   one = false;
      if (OrderSend(Symbol(),OP_SELL,LB-LS,NormalizeDouble(Bid,Digits),100,0,0,NULL,MagicSell,0,CLR_NONE)==-1)
         Print("Ошибка ",GetLastError()," открытия ордера ");
         Comment("Открыт лок SELL");
       if (PushMessagesOn==True) 
            { 
              SendNotification(_Symbol + " открыт лок SELL ");
              Print (_Symbol + "открыт лок SELL");
            }
        } else one = true;
 
   if (one && LS>LB)
   {
   one = false;
      if (OrderSend(Symbol(),OP_BUY,LS-LB,NormalizeDouble(Ask,Digits),100,0,0,NULL,MagicBuy,0,CLR_NONE)==-1)
         Print("Ошибка ",GetLastError()," открытия ордера ");
         Comment("Открыт лок BUY");
         if (PushMessagesOn==True) 
            { 
              SendNotification(_Symbol + "открыт лок BUY");
              Print (_Symbol + "открыт лок BUY");
            }
        } else one = true;
}
}
}

 

double LB=0, LS=0; 
int b=0, s=0; 
int Ticket; 
double OSL, OTP, OOP; 
static bool LockOpened = false; // флаг что лок УЖЕ открыт
static bool AdvisorStopped = false; // флаг полной остановки советника

// Если советник уже остановлен - выходим из функции немедленно
if (AdvisorStopped) {
   Comment("Советник остановлен. Открыт лок. Требуется ручное вмешательство.");
   return;
}

// Проверка свободной маржи - открываем лок ОДИН РАЗ
if (AccountFreeMargin() <= AccountBalance()/100*percent_loc && !LockOpened) 
{
   // Сбрасываем TP и SL у всех ордеров
   for (int i=OrdersTotal()-1; i>=0; i--) 
   {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
      {
         if (OrderSymbol()==Symbol() && (OrderMagicNumber()==MagicBuy || OrderMagicNumber()==MagicSell)) 
         {
            OTP = OrderTakeProfit();
            OSL = OrderStopLoss();
            OOP = OrderOpenPrice();
            
            if (OTP!=0 || OSL!=0) 
            {
               if (!OrderModify(OrderTicket(), OOP, 0, 0, 0, CLR_NONE)) 
                  Print("Ошибка ", GetLastError(), " сброса SL/TP ордера #", OrderTicket());
            }
         }
      }
   }
   
   // Подсчитываем объемы Buy и Sell
   LB = 0; LS = 0; b = 0; s = 0;
   
   for (int i=0; i<OrdersTotal(); i++) 
   {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
      {
         if (OrderSymbol()==Symbol() && (OrderMagicNumber()==MagicBuy || OrderMagicNumber()==MagicSell)) 
         {
            if (OrderType()==OP_BUY) { LB += OrderLots(); b++; }
            if (OrderType()==OP_SELL) { LS += OrderLots(); s++; }
         }
      }
   }
   
   // Открываем локирующий ордер ОДИН РАЗ
   if (LS > LB) 
   {
      double lockVolume = NormalizeDouble(LS - LB, 2);
      Ticket = OrderSend(Symbol(), OP_BUY, lockVolume, NormalizeDouble(Ask, Digits), 100, 0, 0, "LOCK", MagicBuy, 0, CLR_NONE);
      
      if (Ticket == -1) 
         Print("Ошибка ", GetLastError(), " открытия локирующего BUY ордера");
      else 
      {
         LockOpened = true;
         AdvisorStopped = true; // ПОЛНАЯ ОСТАНОВКА советника
         Comment("Открыт лок BUY #", Ticket, ". Советник остановлен.");
         
         if (PushMessagesOn == True) 
         {
            SendNotification(_Symbol + " открыт лок BUY #" + IntegerToString(Ticket) + ". Советник остановлен.");
            Print(_Symbol + " открыт лок BUY. Советник остановлен.");
         }
      }
   }
   else if (LB > LS) 
   {
      double lockVolume = NormalizeDouble(LB - LS, 2);
      Ticket = OrderSend(Symbol(), OP_SELL, lockVolume, NormalizeDouble(Bid, Digits), 100, 0, 0, "LOCK", MagicSell, 0, CLR_NONE);
      
      if (Ticket == -1) 
         Print("Ошибка ", GetLastError(), " открытия локирующего SELL ордера");
      else 
      {
         LockOpened = true;
         AdvisorStopped = true; // ПОЛНАЯ ОСТАНОВКА советника
         Comment("Открыт лок SELL #", Ticket, ". Советник остановлен.");
         
         if (PushMessagesOn == True) 
         {
            SendNotification(_Symbol + " открыт лок SELL #" + IntegerToString(Ticket) + ". Советник остановлен.");
            Print(_Symbol + " открыт лок SELL. Советник остановлен.");
         }
      }
   }
}

 

#2498

Здравствуйте коллеги с наступающим вас! Кто подскажет как дописать в исходник функцию подсчёта потенциального убытка связанного с расходами на своп и комиссию? К тому же у меня мартышка, а в ней у каждого ордера свои расходы! Пробовал озадачить джипити, так он нагородил мама не горюй!

 

Здравствуйте коллеги с наступающим вас! Кто подскажет как дописать в исходник функцию подсчёта потенциального убытка связанного с расходами на своп и комиссию? К тому же у меня мартышка, а в ней у каждого ордера свои расходы! Пробовал озадачить джипити, так он нагородил мама не горюй! Исходник вышлю.

Страница 100 из 100

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025