Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ============================================================
- // *** INDICATORE MONEY MANAGEMENT FIXED FRACTIONAL STOP LOSS PERCENT *** //
- // ============================================================
- // 2 MODALITA':
- // 1) // Frazione Di Capitale Fisso $ Per Stop Loss E Distanza Stop E Tk In % In Porporzione a Capitale Iniziale Ma Inserito In $ //
- // 2) // Frazione Di Capitale Variabile % Per Stop Ma Sempre In Porporzione a Equity E Distanza Stop E Tk In % //
- // *** ATTENZIONE QUESTO PRENDE CLOSE BARRA PRECEDENTE E NON OPEN NEXT BAR, STOP E TK SI RIFERISCONO A CLOSE BARRA PRIMA DI INGRESSO !!! ***
- // *** ATTENZIONE SE LO STOP LOSS CADE NELLA STESSA BARRA DI INGRESSO USCIRO' A CHIUSURA BARRA NON RISPETTANDO LO STOP LOSS PERCHE' MARKET POSITION NON E' ANCORA STATO CALCOLATO !!! ***
- // *** Attenzione !!! Se Il Rischio Monetario E' Troppo Basso Ed Il Sottostante Sale Non Entra Piu': Prezzo / Stop % / 100 ES: 1000 / 10% / 100 = 100 Se Rischio Monetario < 100 Non Entra Piu' *** "PRINT NEL DEBUG TRADE SKIPPED //
- // *** Attenzione !!! Il Codice Analisi Montecarlo Python Qui Non Si Puo' Applicare Dopo Il Money Managent Perchè Qui La % Di Perdita Del Report Non Corrisponde A Quella Monetaria !!! //
- //==============================================================================================================================================================================================//
- // 1) Questa Tipologia Di Money Management, siccome ha sempre lo stop lo monetario uguale, se il calpitale aumenta il DD diminuisce. Di contro potremmo avere un DD iniziale più alto //
- // 2) Questa Tipologia Di Money Management abbiamo uno stop loss monetario variabile ma sempre relazionato in % all'equity attuale ES: (Cap Iniziale + NetProfit * 3.5) / 100 in modo da dedicare sempre la stessa proporzione di perdita % al capitale attuale dell'equity nel tempo //
- // ================== INIZIO PROVA Stop Loss Sempre Uguale con sempre stessi contratti ======================================
- {input:
- capitaleIniziale(100000),
- stopLoss(1000),
- tk(2000);
- vars:
- risk(0),
- capitalePosizione(0);
- risk = capitaleIniziale *25 /100;
- capitalePosizione = risk / stopLoss;
- if close > open and close [1] > open[1] and close [2] > open [2] and close [3] > open [3] then
- Buy("Long") capitalePosizione shares next bar at Market;
- SetStopPosition;
- Setstoploss(stopLoss);
- Setprofittarget(tk);}
- // ================== FINE PROVA Stop Loss Sempre Uguale con sempre stessi contratti ======================================
- input:
- lunghezza_sma_long(31),
- lunghezza_sma_short(48),
- deviazione_long(1.7),
- deviazione_short(1.3),
- lunghezza_adx_long(6),
- lunghezza_adx_short(10),
- differenziale_adx_long(60),
- differenziale_adx_short(22),
- lung_ema_long(52),
- lung_ema_short(42),
- //skipday(thursday),
- skipmonth1(4),
- skipmonth2(8),
- solo_long(false),
- solo_short(false);
- Vars:
- media_long(0),
- media_short(0),
- middle_Band_long(0),
- deviazione_st_long(0),
- UpperBand_long(0),
- LowerBand_long(0),
- valore_adx_long(0),
- middle_Band_short(0),
- deviazione_st_short(0),
- UpperBand_short(0),
- LowerBand_short(0),
- valore_adx_short(0);
- // Calcololo degli indicatori long
- middle_Band_long = average(close, lunghezza_sma_long);
- deviazione_st_long = deviazione_long * StandardDev(close,lunghezza_sma_long, 1);
- UpperBand_long = middle_Band_long + deviazione_st_long;
- LowerBand_long = middle_Band_long - deviazione_st_long;
- valore_adx_long = adx(lunghezza_adx_long);
- // Calcololo degli indicatori short
- middle_Band_short = average(close, lunghezza_sma_short);
- deviazione_st_short = deviazione_short * StandardDev(close,lunghezza_sma_short, 1);
- UpperBand_short = middle_Band_short + deviazione_st_short;
- LowerBand_short = middle_Band_short - deviazione_st_short;
- valore_adx_short = adx(lunghezza_adx_short);
- media_long = XAverage(Close, lung_ema_long);
- media_short = XAverage(Close, lung_ema_short);
- // ================== MONEY MANAGEMENT FIXED FRACTIONAL SULLO STOP LOSS =================
- Inputs:
- inizio_input_money_management ("----------------inizio_input_money_management-------------------"),
- initial_capital(100000), // attivo solo se: percentRiskEquity true
- percent_risk(3.5), // frazione rischio % dello stop loss monetario // attivo solo se: percentRiskEquity true
- percentRiskEquity(false), // scelta se frazione rischio % capitale iniziale o equity
- rischioMonetarioLongInp(3500), // perdita fissa in $ // attivo solo se: percentRiskEquity false
- rischioMonetarioShortInp(3500), // perdita fissa in $ // attivo solo se: percentRiskEquity false
- stop_loss_percent_long(10), // stop loss per distanza grafica %
- stop_loss_percent_short(7.1), // stop loss per distanza grafica %
- target_percent_long(12), // take profit distanza grafica %
- target_percent_short(6.7); // take profit distanza grafica %
- Vars:
- numeroAzioniLong(0),
- numeroAzioniShort(0),
- rischioMonetarioLong(0),
- rischioMonetarioShort(0);
- If percentRiskEquity = true Then
- Begin
- // Rischio Monetario basato su: Cap Tot + Net Profit In % Dello Stesso ES: Il 3.5% Dell'equity Totale E Non sempre 3.500$ //
- rischioMonetarioLong = (initial_capital + NetProfit) * percent_risk / 100;
- rischioMonetarioShort = (initial_capital + NetProfit) * percent_risk / 100;
- End
- Else
- Begin
- rischioMonetarioLong = rischioMonetarioLongInp;
- rischioMonetarioShort = rischioMonetarioShortInp;
- End;
- // ================= INGRESSO LONG =================
- if {MarketPosition = 0 and} not solo_short and
- Close cross over LowerBand_long and Close < media_long and valore_adx_long < differenziale_adx_long then
- begin
- // Calcolo numero di azioni in base alla perdita massima // ATTENZIONE QUESTO PRENDE CLOSE BARRA PRECEDENTE E NON OPEN NEXT BAR, STOP E TK SI RIFERISCONO A CLOSE BARRA PRIMA DI INGRESSO !!!
- numeroAzioniLong = IntPortion(rischioMonetarioLong / (Close * stop_loss_percent_long/100));
- // Stampa se contratti = 0
- if numeroAzioniLong = 0 then
- Print("TRADE LONG SKIPPED: ", " Date=", ELDateToString(Date), " |", " Time=", Time:4:0, " |", " EntryPrice=", Close:0:2, " |", " Stop=", stop_loss_percent_long:0:2, "% |", " NumeroAzioni=", numeroAzioniLong);
- if numeroAzioniLong > 0 then
- Buy("Long") numeroAzioniLong shares next bar at Market;
- end;
- // ================= STOP E TAKE PROFIT LONG =================
- if MarketPosition = 1 then
- begin
- // SL e TP calcolati sul prezzo effettivo di entrata
- SetStopPosition;
- SetStopLoss(numeroAzioniLong * (EntryPrice * stop_loss_percent_long/100));
- SetProfitTarget(numeroAzioniLong * (EntryPrice * target_percent_long/100));
- end;
- // ================= USCITA LONG A MERCATO =================
- if MarketPosition = 1 and Close cross over UpperBand_long then
- Sell("Chiusura Long") from entry("Long") Next Bar at Market;
- // ================= INGRESSO SHORT =================
- if close cross under UpperBand_short and close > media_short and valore_adx_short < differenziale_adx_short and not solo_long {and month(date) <> skipmonth2 and month(date) <> skipmonth1} {and Dayofweek(date) <> skipday} then
- begin
- // Calcolo numero di azioni in base alla perdita massima // ATTENZIONE QUESTO PRENDE CLOSE BARRA PRECEDENTE E NON OPEN NEXT BAR, STOP E TK SI RIFERISCONO A CLOSE BARRA PRIMA DI INGRESSO !!!
- numeroAzioniShort = IntPortion(rischioMonetarioShort / (Close * stop_loss_percent_short/100));
- // Stampa se contratti = 0
- if numeroAzioniShort = 0 then
- Print("TRADE SHORT SKIPPED", " Date=", ELDateToString(Date), " |", " Time=", Time:4:0, " |", " EntryPrice=", Close:0:2, " |", " Stop=", stop_loss_percent_short:0:2, "% |", " NumeroAzioni=", numeroAzioniShort);
- if numeroAzioniShort > 0 then
- Sellshort("Short") numeroAzioniShort shares next bar at Market;
- end;
- // ================= STOP E TAKE PROFIT SHORT =================
- if MarketPosition = -1 then
- begin
- // SL e TP calcolati sul prezzo effettivo di entrata
- SetStopPosition;
- SetStopLoss(numeroAzioniShort * (EntryPrice * stop_loss_percent_short/100));
- SetProfitTarget(numeroAzioniShort * (EntryPrice * target_percent_short/100));
- end;
- // ================= USCITA SHORT A MERCATO =================
- if close cross under LowerBand_short then
- Buytocover("Chiusura Short") from entry("Short") Next Bar at market;
Advertisement