Перейти к содержанию

Доработка советников: общая тема


Рекомендуемые сообщения

Доработка советников: общая тема Опубликовано

Добрый день всем)

 

Помогите пожалуйста сделать нормальную модификацию ордеров в советнике по мартингейлу. Дело в том что когда цена уходит ТП выставляется слишком большой, смысла не вижу в нем, ведь вся задумка чтоб советник вышел в небольшой плюс и закрыл все ордера, а тут получается что он выходит в большую прибль и только тогда закрывается.

 

Советник во вложении, функция ModyfyOrders. Сам советник делал по видео урокам, пересматривал но так и не пойму логику расчета ТП, помогите разобраться пожалуйста.

 

Вот скрин открытых сделок

image.thumb.png.d436a89d465d2ec94fe8ecbb4a2f6d85.png

Мартин тест 2.rar

Изменено пользователем Ronnnnn
Ссылка на сообщение
Поделиться на другие сайты

  • Ответов 2,5k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Версия с правками. Я немного свернул код, чтобы не перебирались ордера попусту и чтобы проверка красной/синей зоны делалась в одном месте. Прогнал в тесте с настройками по умолчанию. Ожидаемо лье

Перейти

Нате 1_2_3 _Fraktal.mq4

Перейти

Система маятника, или попрыгунчика, или фиг ее знает как ее еще назвать не намного младше сетки мартингейла. Мы в далеком 2017 писали по ней сов с индикатором на вход: https://tlap.com/forum/labo

Перейти
Доработка советников: общая тема Опубликовано
2 часа назад, drobayura сказал:

Идея в общем такая:

От любого закрытого ордера с профитом берём скажем 30%  и ТР убыточного ордера переносим в убыток и таким образом тралим его в убыток до закрытия (это своеобразный SL, только сначала берем прибыль потом возвращаем процент от этой прибыли.

Система "сначала взял, потом отдал"). Уверен такого алгоритма нет нигде. Если открывать  ордера на каждом баре на пробой хай, лоу,  то берем всё движение минус процент, который возвращаем для закрытия самого убыточного ордера.

чтобы не пересчитывать это все в тейки и стопы, проще всего принимать решение о закрытии по результатам расчета, по профиту.

 

на самом деле похожий алгоритм есть в нескольких вариантах реализации. Взять, например, Stupido из Stupido Challenger или других веток.

Но в остальном да, почему нет.

 

Если хочется пересчитать в пункты, как я уже сказал, нужно поделить профит на TickValue, потом на TickSize и умножить на Point

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
45 минут назад, Rigal сказал:

чтобы не пересчитывать это все в тейки и стопы, проще всего принимать решение о закрытии по результатам расчета, по профиту.

 

на самом деле похожий алгоритм есть в нескольких вариантах реализации. Взять, например, Stupido из Stupido Challenger или других веток.

Но в остальном да, почему нет.

 

Если хочется пересчитать в пункты, как я уже сказал, нужно поделить профит на TickValue, потом на TickSize и умножить на Point

Реализацию посмотреть не удалось, т.к. нет исходника

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
12 минут назад, drobayura сказал:

Реализацию посмотреть не удалось, т.к. нет исходника

Это да.

Но работает он и без исходника.

А сделать лучше - исходник не нужен.

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
21 минуту назад, drobayura сказал:

Реализацию посмотреть не удалось, т.к. нет исходника

Вот так сделал сейчас выдаёт ошибку 1 - нет ошибок, но результат неизвестен

//+------------------------------------------------------------------+
void _OrdersModify()

bool m;
double _profitByu=0.0, _profitSell=0.0;
   int i; 
   for (i=OrdersHistoryTotal()-1; i>=0; i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)){
         if (OrderType()==OP_BUY && OrderProfit()>0)  
         if (OrderProfit()>0)  _profitByu += OrderProfit() + OrderSwap();         
           if (OrderProfit() < 0) _profitByu = 0;
     }      
       if (OrderType()==OP_SELL && OrderProfit()>0)    
       if (OrderProfit()>0) _profitSell += (OrderProfit() + OrderSwap());           
       if (OrderProfit() < 0) _profitSell = 0;   
       
        {
               Comment("Посчитаем профит:" ,"\n","Buy ", _profitByu,
                  "\n"," Sell ", _profitSell);
            }   
      double Summ=MarketInfo(Symbol(),MODE_TICKVALUE) * NormalizeDouble(lot, 2) * Point;
      double sMax=0;
      double bMin=10000;
      int ticketBuy=0,ticketSell=0;
      double BID=MarketInfo(Symbol(),MODE_BID);
      double ASK=MarketInfo(Symbol(),MODE_ASK);
      for(i=OrdersTotal()-1; i>=0; i--)
         {
            if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
               {                 
                  if(OrderType()==OP_BUY && bMin>OrderOpenPrice() && OrderOpenPrice()<BID)
                     {
                         bMin=OrderOpenPrice();
                         ticketBuy=OrderTicket();//тикет минимального BUY
                     }
                  if(OrderType()==OP_SELL && sMax<OrderOpenPrice() && OrderOpenPrice()>ASK)
                     {
                         ticketSell=OrderTicket();//тикет максимального SELL
                         sMax=OrderOpenPrice();
                     }
               }
         }
     if(ticketBuy!=0)
         {
      m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),
        NormalizeDouble(OrderOpenPrice() - _profitSell * Summ * _procent,Digits),OrderExpiration(),CLR_NONE);  
         }
     if(ticketSell!=0) 
         {
     m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),
       NormalizeDouble(OrderOpenPrice() + _profitByu * Summ * _procent,Digits),OrderExpiration(),CLR_NONE);  
         }
      }
   return;
}
//+------------------------------------------------------------------+
 

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
8 минут назад, drobayura сказал:

if (OrderType()==OP_SELL && OrderProfit()>0)    
       if (OrderProfit()>0) _profitSell += (OrderProfit() + OrderSwap());           
       if (OrderProfit() < 0) _profitSell = 0;

Вторая строчка этого блока выполняется только для продаж и там if(OrderProfit() > 0) уже не нужен, это условие проверяется выше строкой

А вот третья выполняется независимо от типа ордеров.

Вы, видимо, хотели вот так:

if (OrderType() == OP_SELL) {    
    if (OrderProfit() > 0) 
		_profitSell += (OrderProfit() + OrderSwap());           
	else
		_profitSell = 0;
}

проблема в том, что так тоже не добавляется предсказуемости: если у вас больше одного исторического ордера (а рано, или поздно, его будет больше одного), вы будете сбрасывать в ноль и снова прибавлять.

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

Теперь кусок с модификацией:

15 минут назад, drobayura сказал:

int ticketBuy=0,ticketSell=0;

Ордер номер 0 - теоретически может иметь место. Осмысленнее -1

18 минут назад, drobayura сказал:

m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),
        NormalizeDouble(OrderOpenPrice() - _profitSell * Summ * _procent,Digits),OrderExpiration(),CLR_NONE);

В выражении для Summ отсутствует TickSize, но это мелочи, там обычно единица.

А вот вычитая из цены открытия покупки (которая сейчас в профите, мы проверили, что цена ниже BID) некую величину и пытаясь поставить туда тейк мы получаем ожидаемую ошибку: нельзя поставить тейк покупки ниже текущей цены ее закрытия.

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
1 час назад, Rigal сказал:

Это да.

Но работает он и без исходника.

А сделать лучше - исходник не нужен.

А мой не работает.

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
1 час назад, Rigal сказал:

Вторая строчка этого блока выполняется только для продаж и там if(OrderProfit() > 0) уже не нужен, это условие проверяется выше строкой

А вот третья выполняется независимо от типа ордеров.

Вы, видимо, хотели вот так:

if (OrderType() == OP_SELL) {    
    if (OrderProfit() > 0) 
		_profitSell += (OrderProfit() + OrderSwap());           
	else
		_profitSell = 0;
}

проблема в том, что так тоже не добавляется предсказуемости: если у вас больше одного исторического ордера (а рано, или поздно, его будет больше одного), вы будете сбрасывать в ноль и снова прибавлять.

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

Теперь кусок с модификацией:

Ордер номер 0 - теоретически может иметь место. Осмысленнее -1

В выражении для Summ отсутствует TickSize, но это мелочи, там обычно единица.

А вот вычитая из цены открытия покупки (которая сейчас в профите, мы проверили, что цена ниже BID) некую величину и пытаясь поставить туда тейк мы получаем ожидаемую ошибку: нельзя поставить тейк покупки ниже текущей цены ее закрытия.

. . .  нельзя поставить тейк покупки ниже текущей цены ее закрытия.

а если текущая цена на много ниже, то тейк можно поставить. Тейк для BUY всегда стоит выше текущей цены и для SELL ниже текущей цены на этом и основана идея "сначала взял потом отдал".

Вот пример с реального счета обратите внимание на номер (Tiket) ордера. Таким образом модификацию провожу ручками, но если работать на часовом таймфрейме можно легко запутаться, т.к. модификацию нужно проводить каждый час, а может и чаще иногда в час закрывается несколько ордеров.

 

 

skrin_1.jpg

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
1 минуту назад, drobayura сказал:

. . .  нельзя поставить тейк покупки ниже текущей цены ее закрытия.

а если текущая цена на много ниже, то тейк можно поставить. Тейк для BUY всегда стоит выше текущей цены и для SELL ниже текущей цены на этом и основана идея "сначала взял потом отдал".

Вот пример с реального счета обратите внимание на номер (Tiket) ордера. Таким образом модификацию провожу ручками, но если работать на часовом таймфрейме можно легко запутаться, т.к. модификацию нужно проводить каждый час, а может и чаще иногда в час закрывается несколько ордеров.

 

 

skrin_1.jpg

поэтому без программиста я сам не справлюсь, пожалуйста помогите.

вот код:

 

High_Low.mq4

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
void _OrdersModify()
{ 
bool m;
double _profitByu=0.0, _profitSell=0.0;
   int i; 
   for (i=OrdersHistoryTotal()-1; i>=0; i--)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {
         if (OrderType()==OP_BUY && OrderProfit()>0) 
         {  
            if (OrderProfit()>0)  _profitByu += OrderProfit() + OrderSwap();         
            if (OrderProfit() < 0) _profitByu = 0;
         }   
         else if (OrderType()==OP_SELL)
         { 
         if (OrderProfit()>0) _profitSell += (OrderProfit() + OrderSwap());           
         else                 _profitSell = 0;  // скорее всего это нужно убрать, т.к. если последний ордер в истории будет убыточным, то весь накопленный профит                                                     //обнулится
           										// БАЙ- кусок нужно сделать аналогично
         }
      }
   }
    Comment("Посчитаем профит:" ,"\n","Buy ", _profitByu,
                  "\n"," Sell ", _profitSell);
//+------------------------------------------------------------------+
 // Уже в этом цикле по историческим ордерам у Вас ошибка. Я писал- разберитесь со скобками {}
//  Если я правильно понял логику(суммирование только положительной прибыли в исторических ордерах), то должно быть так

 

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
32 минуты назад, drobayura сказал:

. . .  нельзя поставить тейк покупки ниже текущей цены ее закрытия.

а если текущая цена на много ниже, то тейк можно поставить.

 

2 часа назад, drobayura сказал:

if(OrderType()==OP_BUY && bMin>OrderOpenPrice() && OrderOpenPrice()<BID)
                     {
                         bMin=OrderOpenPrice();
                         ticketBuy=OrderTicket();//тикет минимального BUY
                     }

 

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
22 минуты назад, usver73 сказал:
void _OrdersModify()
{ 
bool m;
double _profitByu=0.0, _profitSell=0.0;
   int i; 
   for (i=OrdersHistoryTotal()-1; i>=0; i--)
   {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {
         if (OrderType()==OP_BUY && OrderProfit()>0) 
         {  
            if (OrderProfit()>0)  _profitByu += OrderProfit() + OrderSwap();         
            if (OrderProfit() < 0) _profitByu = 0;
         }   
         else if (OrderType()==OP_SELL)
         { 
         if (OrderProfit()>0) _profitSell += (OrderProfit() + OrderSwap());           
         else                 _profitSell = 0;  // скорее всего это нужно убрать, т.к. если последний ордер в истории будет убыточным, то весь накопленный профит                                                     //обнулится
           										// БАЙ- кусок нужно сделать аналогично
         }
      }
   }
    Comment("Посчитаем профит:" ,"\n","Buy ", _profitByu,
                  "\n"," Sell ", _profitSell);
//+------------------------------------------------------------------+
 // Уже в этом цикле по историческим ордерам у Вас ошибка. Я писал- разберитесь со скобками {}
//  Если я правильно понял логику(суммирование только положительной прибыли в исторических ордерах), то должно быть так

 

Если б я был программистом, то конечно бы попробовал разобраться, а так что то не получается. Да Вы всё правильно поняли.

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
8 часов назад, drobayura сказал:

Идея в общем такая:

От любого закрытого ордера с профитом берём скажем 30%  и ТР убыточного ордера переносим в убыток и таким образом тралим его в убыток до закрытия (это своеобразный SL, только сначала берем прибыль потом возвращаем процент от этой прибыли.

Система "сначала взял, потом отдал"). Уверен такого алгоритма нет нигде. Если открывать  ордера на каждом баре на пробой хай, лоу,  то берем всё движение минус процент, который возвращаем для закрытия самого убыточного ордера.

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

Из описания выше неочевидно, что именно вы хотите делать.

Давайте разберем по пунктам:

Предположим, у вас есть десяток сделок закрытых в профит.

После них сделка, закрытая в убыток - видимо, вы сбрасываете счетчик потому, что предполагаете, что часть профита предыдущих сделок была использована для закрытия этого убытка, ну ок.

Допустим, последние несколько сделок в профит, скажем, 100$.

У вас открыта сделка и болтается в убыток -3$

Уже переносим тейк куда-то, или ждем?

До каких пор ждем? Пока убыток в этой сделке не превысит заданный процент от 100$?

 

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
40 минут назад, drobayura сказал:

Если б я был программистом, то конечно бы попробовал разобраться, а так что то не получается. Да Вы всё правильно поняли.

Если Вы не программист,  то почему в этой ветке пишете?

Если хотите научиться,  то нужно пробовать разобраться. 

Если хотите получить сову под свою идею, то попросите программиста за деньги или заинтересуйте торговой идеей, чтобы написали бесплатно...

Но в том виде,  как есть сейчас- открытие одновременно встречных ордеров- идея так себе.  Если это не программная ошибка ...

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
45 минут назад, Rigal сказал:

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

Из описания выше неочевидно, что именно вы хотите делать.

Давайте разберем по пунктам:

Предположим, у вас есть десяток сделок закрытых в профит.

После них сделка, закрытая в убыток - видимо, вы сбрасываете счетчик потому, что предполагаете, что часть профита предыдущих сделок была использована для закрытия этого убытка, ну ок.

Допустим, последние несколько сделок в профит, скажем, 100$.

У вас открыта сделка и болтается в убыток -3$

Уже переносим тейк куда-то, или ждем?

До каких пор ждем? Пока убыток в этой сделке не превысит заданный процент от 100$?

 

Вот примерный алгоритм:

1. Советник открывает ордера на каждом пробое свечи High - Buy, Low - Sell.

2. ТР равен одному ATR. 

3. После закрытия ордера по ТР советник берёт самый убыточный ордер и 30% от ТР закрывшегося ордера (вывести в переменные данные советника отдельно для Buy и для Sell, т.к. свопы разные).

   тралит ТР убыточного ордера в отрицательную зону (работает по принципу в начале взял потом отдал процент от прибыли)

   и таким образом ведёт убыточный ордер до его закрытия с убытком. Далее советник снова находит самый убыточный ордер и ведёт его до закрытия с убытком.

4. Для трала убыточного ордера, ТР может быть от любого ордера как от BUY так и от SELL.

После закрытия ордера с убытком счетчик обнуляется. 

 

   в каждой такой серии мы будем получать прибыль как минимум 60% с учётом свопа и коммисий.

Я думаю в процессе работы будем уточнять алгоритм.

Для наглядности скрин - 

 

skrin.jpg

Изменено пользователем drobayura
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
11 минут назад, usver73 сказал:

Если Вы не программист,  то почему в этой ветке пишете?

Если хотите научиться,  то нужно пробовать разобраться. 

Если хотите получить сову под свою идею, то попросите программиста за деньги или заинтересуйте торговой идеей, чтобы написали бесплатно...

Но в том виде,  как есть сейчас- открытие одновременно встречных ордеров- идея так себе.  Если это не программная ошибка ...

. . . или заинтересуйте торговой идеей, . . . 

Я и пытаюсь заинтересовать идеей, думаю что такого алгоритма нет в интернете. А код это не мой просто пытался сделать цыкл модификации ордеров опять же по образу и подобию. Не получилось. Вот и обращаюсь за помощью ну чтоб не с пустыми словами, а с чем то. 

Прошу извинить меня, если что не так. Программирование это сложная штука и всем не дано.

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Это по сути система лока,  которая не работает.  

Допустим,  открыли два ордера , сначала  бай, потом селл, по теням одной свечи. Свеча хай-лоу 20 пп.

После открытия селл совокупный посадка будет 20пп+спред. 

Далее цена пошла вниз. Через 5 пп селл закрылся по тейку. Посадка бай составит 25пп+спред. Даже 100% полученного профита не хватит, чтобы закрыть просевший бай ордер.

 

А дальше,  если развивать Вашу логику, встанет вопрос,  как учитывать профит по закрытому ордеру для целей закрытия просевших в рынке ордеров? 

Откусили,  Допустим, 30%, переместили ТП. НА следующей итерации мы ещё откусываем 30% или больше его не трогаем? А если не трогаем, то как-то нужно это запомнить...

Ну и все в таком духе.  Вопросы будут как снежный ком копиться 

 

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
20 минут назад, usver73 сказал:

Это по сути система лока,  которая не работает.  

Допустим,  открыли два ордера , сначала  бай, потом селл, по теням одной свечи. Свеча хай-лоу 20 пп.

После открытия селл совокупный посадка будет 20пп+спред. 

Далее цена пошла вниз. Через 5 пп селл закрылся по тейку. Посадка бай составит 25пп+спред. Даже 100% полученного профита не хватит, чтобы закрыть просевший бай ордер.

 

А дальше,  если развивать Вашу логику, встанет вопрос,  как учитывать профит по закрытому ордеру для целей закрытия просевших в рынке ордеров? 

Откусили,  Допустим, 30%, переместили ТП. НА следующей итерации мы ещё откусываем 30% или больше его не трогаем? А если не трогаем, то как-то нужно это запомнить...

Ну и все в таком духе.  Вопросы будут как снежный ком копиться 

 

"НА следующей итерации мы ещё откусываем 30% или , , ,  " да еще опускаем на 30% и так пока не закроем. Как известно рынок в одну сторону не идет всегда есть коррекция и если она будет на старших таймфреймах, то наш убыточный ордер закроется и от этой серии мы возьмём как минимум 50% - 40% от движения. После закрытия убыточного ордера счетчик обнуляется и цыкл начинает работать снова.

Вот пример из истории счета обратите внимание на дату открытия и закрытия ордера отдавал 25% от Тр прибылных ордеров. А дольше идут два ордера и они уже перекрывают убыток этого ордера. Вот SL  это утопия и усреднение даже не всегда спасёт Депозит.

А эту систему надо проверить на дистанции. 

 

skrin_2.jpg

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Ещё раз:

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

Без вариантов (ну, разве что усредняться)

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
1 час назад, usver73 сказал:

Ещё раз:

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

Без вариантов (ну, разве что усредняться)

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

Взять тот же Ассар.

Но, как и у Ассара, у этой идеи есть проблемная зона: тренд.

Предположим, начался тренд вниз, встрял один ордер в покупку.

При этом вы, конечно, открываете ордера в продажу и закрываете их по тейку раз за разом, но они не покрывают даже всем своим профитом убытка этого одного ордера - за счет спреда и разрывов дистанции.

Если отката тренда не будет хватать для закрытия вашей ПЕРВОЙ сделки в покупку достаточно долго, то будет застревать все больше и больше сделок в покупку.

 

Тем не менее, самым наглядным способом демонстрации этого будет... накидать такой советник.

Забавная тема, как ассар примерно, я набросаю на досуге.

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
3 часа назад, drobayura сказал:

Вот примерный алгоритм:

1. Советник открывает ордера на каждом пробое свечи High - Buy, Low - Sell.

2. ТР равен одному ATR. 

3. После закрытия ордера по ТР советник берёт самый убыточный ордер и 30% от ТР закрывшегося ордера (вывести в переменные данные советника отдельно для Buy и для Sell, т.к. свопы разные).

   тралит ТР убыточного ордера в отрицательную зону (работает по принципу в начале взял потом отдал процент от прибыли)

   и таким образом ведёт убыточный ордер до его закрытия с убытком. Далее советник снова находит самый убыточный ордер и ведёт его до закрытия с убытком.

4. Для трала убыточного ордера, ТР может быть от любого ордера как от BUY так и от SELL.

После закрытия ордера с убытком счетчик обнуляется. 

 

   в каждой такой серии мы будем получать прибыль как минимум 60% с учётом свопа и коммисий.

Я думаю в процессе работы будем уточнять алгоритм.

Для наглядности скрин - 

 

skrin.jpg

Ну вы как-то пропустили мои вопросы.

Я пронумерую, чтобы вы не пропустили:

1. В какой момент начинать переставлять тейк убыточной позиции? Сразу, независимо от того, насколько она в убытке?

2. У нас есть какой-то недавний профит по закрытым позициям и есть убыточные позиции в рынке в обе стороны, которую сторону тралить?

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
2 часа назад, usver73 сказал:

Ещё раз:

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

Без вариантов (ну, разве что усредняться)

Вот тест с 2020.01.06 - 2021.07.14 прибыльные сделки 96.3% убыточные - 3.7%.

А Вы более прибыльную систему знаете, если да то прошу создать советник.

Вот отчёт 

 

skrin_2.jpg

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

В закрепе советник.

Торгует на пробой хай-лоу предыдущей свечи.

За отступами не следит (никто, вроде, не упоминал про отступы), просто входит на пробой.

При этом делает вот ровно то, что попросили: жертвует указанный процент прибыли всех доселе собранных в профит ордеров для закрытия самого неудачного ордера на графике (сдвигая его тейк, соответственно)

Выглядит вот так:

Спойлер

image.png.cbf1d780ecd1a53ee01979f2f085a5ef.pngimage.png.13b0499863a0f2e03df063b09beed603.png

Martyr.ex4

 

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

Получилось немного более похоже, но график эквити, как и ожидалось, с графиком баланса на тренде не дружит вообще:

Спойлер

Шаг 50 пипсов при тейке 10:

image.png.ab2ae3dd9974685a512b406fdea0826d.png

image.thumb.png.dace40a3c25b79013b2e9209cf13fdda.png

 

Шаг 1000 пипсов (одна сделка залипла и в эту сторону больше не торгуем):

image.png.fb068be13bbe4cbad4a4bdaa4b2d52df.png

image.thumb.png.3f08c8fb1d93c07d539b14494da31748.png

MartyrSpacing.ex4

Играйтесь

 

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Немного поправил условие по времени - я зачем-то отслеживал задержку, а отслеживать надо, конечно, старт свечи.

Поправленные версии и исходники (исключительно с ознакомительными целями, они у вас не соберутся, к сожалению, там вагон библиотек моих цепляется)

 

 

Martyr.mq4 MartyrSpacing.ex4 MartyrSpacing.mq4 Martyr.ex4

Изменено пользователем Rigal
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
36 минут назад, drobayura сказал:

Вот тест с 2020.01.06 - 2021.07.14 прибыльные сделки 96.3% убыточные - 3.7%.

А Вы более прибыльную систему знаете, если да то прошу создать советник.

Вот отчёт 

 

skrin_2.jpg

Вам достался участок диапазонного рынка.

Когда он ходит то вверх, то вниз.

На таком рынке не важно, куда вы открывались, оно со временем закроется в профит.

Как только рынок уйдет из диапазона, все сделки одного из направлений застрянут в этом диапазоне.

Вот тогда нужно будет смотреть на стейт и историю ордеров.

 

К счастью, не обязательно ждать - можно все это в тестере воспроизвести.

 

А Ассар, который я упомянул, я намедни еще разок переписал, тоже из чистого любопытства.

У него ровно та же проблема - можете глянуть, в закрепе.

HedgeOnSteroids_NewDawn.ex4

Ссылка на сообщение
Поделиться на другие сайты

  • idinesh changed the title to Assae Elite Pro tlap version source code need i have plan convert this mt4 to mt5 and it possible mt4 dll file modified mt5 version

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

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • ×
    ×
    • Создать...