Funzione Trailing funds (equity) - qualcuno ne ha trovata una già pronta? - pagina 5

 

Vitalya_1983 grazie, ha punzecchiato un cieco. =) Farò un tentativo.

Anche se l'opzione con la percentuale non è ideale: più profitto si otterrà, meno sarà fissato sul rollback.

E vuole la soluzione di cui parlava il topicstarter:

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

Cioè un cricchetto sul profitto, quindi l'offerta di xrust sta in piedi.
 
ToKa_TuXa >> :

xrust - Ho un suggerimento/richiesta da farti - puoi portare il codice della tua versione dell'equity trawl come un EA standalone.

Sarebbe uno strumento molto utile per i commercianti manuali.

Ho cercato uno strumento simile per molto tempo, ma non ho trovato nulla di adatto.

Sarebbe fantastico...

 

Io...

 

Сделаю...

Grazie in anticipo =)

 
xrust >> :

>> Io...

In attesa ...

 

xrust - per favore dammi un suggerimento sulla linea temporale.

Forse qualcuno ha una soluzione ed è disposto, per bontà di cuore, a condividerla?

 
ToKa_TuXa писал(а) >>

xrust - per favore dammi un suggerimento sulla linea temporale.

Forse qualcuno ha una soluzione ed è così gentile da condividerla?

//+------------------------------------------------------------------+
//|                                           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);
} 
}
 
Grazie, Rust, ci darò un'occhiata.
 
guidala bene - controlla
 

Grazie, faremo dei test...

Solo alcuni suggerimenti:

1. Aggiungere l'indicazione: profitto massimo/perdita di profitto;

2. Se volete aggiungere un'opzione di traino con un livello specificato in $, potete impostare non la %, ma la distanza dal profitto massimo allo stop in denaro.

Lasciatemi provare a spiegare gli svantaggi dell'approccio percentuale: avete 20 posizioni con lotto piccolo - il profitto totale per 24 ore porta 300 dollari. Se fissiamo, per esempio, un livello del 30% (in realtà - qualsiasi), allora in caso di pullback otterremo $200 - $100 di passaggio. Se avessimo un livello fisso, anche 50, avremmo 50$ in più.

Qualcuno potrebbe dire: non arriveremmo a 300 con un livello fisso, ma è vero con un piccolo numero di strumenti ugualmente diretti. Nel caso della strategia il profitto cresce uniformemente, senza grandi drawdown, e un serio cambiamento del carattere del set indica un'inversione. Quindi, dovremmo saltarne fuori, senza aspettare che l'inversione (che di solito è veloce) mangi una % del passato.

Perdonate i molti gibberish, con la speranza di "got it" ; )