Функция трейлинга средств (эквити) - может кто встречал готовую? - страница 5

 

Vitalya_1983 спасибо, ткнул слепого. =) Буду пробовать.

Хотя вариант с процентами не идеален: чем больше будет достигнут профит, тем меньше будет фиксированно по откату.

А хочется решение про которое говорил топикстартер:  

ЗЫ: вот собственно то, о чем говорил, про "на издохе движения", и как раз в такие моменты хорошо иметь тралл под рукой..

Т.е. храповик на профит, так-что предложение к xrust в силе.
 
ToKa_TuXa >>:

xrust - у меня к вам предложение-просьба - можете ли вы привести код вашей версии трала эквити в виде самостоятельного советника.

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

Ищу такую вещь очень давно, но ничего подходящего не встречал, а сам я в коде не силен (точнее - слаб).

Было бы здорово...

 

Сделаю...

 

Сделаю...

Спасибо авансом =)

 
xrust >>:

Сделаю...

Ждем ...

 

xrust - плиз, намекните о сроках.

Может кто-нибудь таки знает готовое решение, и готов, по доброте душевной, поделиться? 

 
ToKa_TuXa писал(а) >>

xrust - плиз, намекните о сроках.

Может кто-нибудь таки знает готовое решение, и готов, по доброте душевной, поделиться?

//+------------------------------------------------------------------+
//|                                           EqutyTrawlerXR_V00.mq4 |
//|                                 Copyright © 2009, XrustSolution. |
//|                                        http://www.xrust.ucoz.net |
//+------------------------------------------------------------------+
#property copyright "#Copyright © 2009, XrustSolution.#"
#property link      "#http://www.xrust.ucoz.net#"
extern double       EqutyPersent      =   1;
extern double       RepeatTimeinSec   =   1;
//+------------------------------------------------------------------+
void start(){double step=1;
  if(RepeatTimeinSec==0){RepeatTimeinSec=0.1;}
  while(!IsStopped()&&IsExpertEnabled()){
    Sleep(1000*RepeatTimeinSec);
    if(AccountEquity()>AccountBalance()){
      if(AccountProfit()>AccountEquity()/100*EqutyPersent*step){step++;}
      if(step>1){
        if(AccountProfit()<=AccountEquity()/100*EqutyPersent*(step-1)){
          CloseAll();
        }
      }
    }
  }
return;}
//+------------------------------------------------------------------+
// Закрывает все ордера на данном инструменте                        |
//+------------------------------------------------------------------+
void CloseAll(){
for(int n=OrdersTotal()+1;n>=0;n--){
  if(OrderSelect(n,SELECT_BY_POS,MODE_TRADES)){ 
    if(OrderType()<2){ 
      del(OrderTicket());
    }  
  }    
}  
return;    
}
//+------------------------------------------------------------------+
//Удаляет рыночный ордер с указанным ей тикетом                      |
//+------------------------------------------------------------------+
void del(int ticket){int err;
for(int i=0;i<1;i++){
   GetLastError();//обнуляем ошику
   OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES);
   string symbol = OrderSymbol();
   if(OrderType()==OP_BUY){RefreshRates();
     double prise = MarketInfo(symbol,MODE_BID);
     if(!OrderClose(ticket,OrderLots(),prise,3,Green)){err = GetLastError();}}
   if(OrderType()==OP_SELL){RefreshRates();
     prise = MarketInfo(symbol,MODE_ASK);
     if(!OrderClose(ticket,OrderLots(),prise,3,Green)){err = GetLastError();}}
if(err == 0){PlaySound("expert.wav");break;} 
if(err != 0){PlaySound("timeout.wav");Print("Error for Close Funtion =",err);} 
while(!IsTradeAllowed()){Sleep(5000);}// если рынок занят то подождем 5 сек 
if (err==146) while (IsTradeContextBusy()) Sleep(1000*11);
} 
}
 
Спасибо, Руст, по-изучаю.
 
погоняй хорошенько - проверь
 

Спасибо, будем тестить...

Сходу немного предложений: 

1. Добавить индикацию: макс. профит/профит закрытия;

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

Попробую объяснить недостаток процентного подхода: имеем 20 поз малым лотом - сумарный профит за сутки набегает 300$. Если поставить,например, 30% (по сути - любой) уровень, то вслучае отката фиксит 200$ - 100$ мимо. Еслиб стоял фикс.уровень, хоть 50 - уже на 50 больше.

Кто-то скажет: при фиксированном ур-не до 300 и не дошло бы; но то верно при малом кол-ве равнонаправленных инструментов. В случае с пакетной стратегией прибыль растет равномерно, без крупных просадок, а серьезное изменение характера набора говорит о развороте. Вот с него бы нам и спрыгнуть, не дожидаясь, когда обратный ход (а он обычно быстр) съест % от пройденного.

Сорри за многабукав, с надеждой на "осилил" ; )