CCCPaste

Indicatore Study Simulatore Giorno Della Sett...

																			// Indicatore Study Simulatore Giorno Della Settimana //
																			  // * ATTENZIONE USARE SOLO SU TIMFRAME DAILY !!! * //
																			// Se Manca Barra Input Il Trade Non Verrà Considerato //

// ======================================================================
// Simulatore Giorno della Settimana - Capitale fisso per trade
// Scopo: valutare performance dei singoli giorni della settimana
// su base storica, investendo sempre % Capitale Iniziale Da Input per trade (virtuale)
// Shares frazionarie ES: 0.001 BTC
// Trade: Open E Close Stessa Barra
// Statistiche finali con: "Equity ($)" / "Giorno Selez" / "Num Trades" / "% Positivi" / "Dev.Std"
// ======================================================================

// ======================================================================
// Indicatore da confrontare con INDICATORE DAY OF WEEK BIAS ANALYZER allineandolo con ingresso stesso giorno.
// ======================================================================

// ======================================================================
// "(STD)" Un valore alto di std_dev significa che i trade hanno risultati molto variabili: alcuni molto vincenti, altri molto perdenti.
// "(STD)" Un valore basso significa che i trade hanno risultati più consistenti, vicini alla media.
// "% Positivi" Calcolo: 1G+1G+1G+1L = 3/4? (3 Gain, 1 Lost) Da verificare all'ultima Barra del Grafico la % di Positivita
// ======================================================================
 
  
Inputs:
    My_TDOM_Long(1),          // Giorno della settimana da testare (1=Lunedì ... 5=Venerdì)
    Fixed_Trade_Amount(25000); // Capitale fisso per ogni trade

Vars:
    virtual_equity(0),
    virtual_entry_price(0),
    virtual_qty(0),
    in_trade(false),
    trade_profit(0),
    trade_count(0),
    trade_count_pos(0),
    sum_profit(0),
    sum_sq_profit(0),
    mean_profit(0), 
    std_dev(0),
    perc_positive(0),
    sum_profit_input_day(0),
    trade_count_input_day(0),
    mean_profit_input_day(0);

// -------------------------------------------------------------
// Inizializza variabili alla prima barra
// -------------------------------------------------------------
if CurrentBar = 1 then begin
    virtual_equity = 0;
    trade_count = 0;
    trade_count_pos = 0;
    sum_profit = 0;
    sum_sq_profit = 0;
    sum_profit_input_day = 0;
    trade_count_input_day = 0;
    mean_profit_input_day = 0;
end;

// -------------------------------------------------------------
// Segnale di ingresso e uscita nello stesso giorno
// -------------------------------------------------------------
if DayOfWeek(Date) = My_TDOM_Long then begin

    // Calcolo quantità e profitto al close dello stesso giorno
    virtual_entry_price = Open;
    virtual_qty = Fixed_Trade_Amount / Open;
    trade_profit = (Close - virtual_entry_price) * virtual_qty;
    virtual_equity = virtual_equity + trade_profit;

    // Aggiornamento contatori
    trade_count = trade_count + 1;
    if trade_profit > 0 then
        trade_count_pos = trade_count_pos + 1;

    // Aggiornamento somme per media e deviazione standard
    sum_profit = sum_profit + trade_profit;
    sum_sq_profit = sum_sq_profit + trade_profit * trade_profit;
    mean_profit = sum_profit / trade_count;

    if trade_count > 1 then
        std_dev = SquareRoot((sum_sq_profit - (sum_profit * sum_profit) / trade_count) / (trade_count - 1))
    else
        std_dev = 0;

    // Percentuale di positività
    perc_positive = (trade_count_pos / trade_count) * 100;

    // Aggiornamento cumulativo per media input day
    sum_profit_input_day = sum_profit_input_day + trade_profit;
    trade_count_input_day = trade_count_input_day + 1;

    // -------------------------------------------------------------
    // Print singola riga
    // -------------------------------------------------------------
    Print("Trade ", trade_count,
          " | Entry Price: ", virtual_entry_price:0:2,
          " | Entry Date: ", Date,
          " | Entry Time: ", Time,
          " | Exit Price: ", Close:0:2,
          " | Exit Date: ", Date,
          " | Exit Time: ", Time,
          " | Qty: ", virtual_qty:0:4,
          " | Profit: ", trade_profit:0:2,
          " | Equity: ", virtual_equity:0:2,
          " | Day of Week: ", DayOfWeek(Date));
end;

// -------------------------------------------------------------
// Plot giorno selezionato + statistiche
// -------------------------------------------------------------
Plot1(virtual_equity, "Equity ($)");
Plot2(My_TDOM_Long, "Giorno Selez");
Plot3(DayOfWeek(Date), "Giorno Corrente");
Plot4(trade_count, "Num Trades");
Plot5(perc_positive, "% Positivi");    
Plot6(std_dev, "Dev.Std", Green);

// -------------------------------------------------------------
// Stampa media finale del giorno selezionato una sola volta
// -------------------------------------------------------------
if LastBarOnChart then begin
    if trade_count_input_day > 0 then
        mean_profit_input_day = sum_profit_input_day / trade_count_input_day
    else
        mean_profit_input_day = 0;
	Print("----------------------------------------------------------------------");
    Print("Media Profit/Loss $ per Day Input ", My_TDOM_Long:0:0, ": ", mean_profit_input_day:0:2);
    print("% Positivi: ", perc_positive:0:2);
    Print("----------------------------------------------------------------------"); 
end;