Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // DAY OF WEEK BIAS ANALYZER 1D [INDICATORE] QTA Mastermind
- // Vedi Video 1 Cartella Mastermind QTA
- // Impostare il timeframe daily a 1440 minuti !!!
- // Questo indicatore calcola la somma positiva o negativa di tutti i giorni della settimana dal passato fini ad oggi, ma potremmo anche avere anni molto forti come variazione e anni molto deboli
- // quindi dopo averlo lanciato per tutto lo storico bisogna spulciare il dataframe di anno in anno salvandosi i risultati per capire se il mercato è ancora coerente con il bias in atto !!!.
- array: countPerDay[6](0),
- deltaSumPerDay[6](0),
- avgPerDay[6](0),
- cumPerDay[6](0);
- vars: dowIdx(0), ix(0);
- // Ogni volta che cambia la data aggiorno conteggi e delta
- if Date <> Date[1] then begin
- // DayOfWeek: 1=Sun ? 7=Sat; voglio Mon=0 ? Sun=6
- dowIdx = DayOfWeek(Date) - 1;
- if dowIdx < 0 then dowIdx = 6; // domenica ? 0-1 = -1 ? 6
- countPerDay[dowIdx] = countPerDay[dowIdx] + 1;
- deltaSumPerDay[dowIdx] = deltaSumPerDay[dowIdx] + (Close - Close[1]);
- end;
- // Solo una volta, sull?ultima barra, costruisco il report HTML
- if LastBarOnChart then begin
- //vars: bestIx(0), worstIx(0), bestVal(-1e12), worstVal(1e12), valPts(0); !!! MULTICHARTS
- vars: bestIx(0), worstIx(0), bestVal(-1000000000000), worstVal(1000000000000), valPts(0);// !!! TRADESTATION
- vars: tableHTML(""), dowName("");
- // Calcolo medie e cumulato
- for ix = 0 to 6 begin
- if countPerDay[ix] > 0 then
- avgPerDay[ix] = deltaSumPerDay[ix] / countPerDay[ix]
- else
- avgPerDay[ix] = 0;
- if ix > 0 then
- cumPerDay[ix] = cumPerDay[ix-1] + avgPerDay[ix]
- else
- cumPerDay[ix] = avgPerDay[ix];
- end;
- // Trovo giorno migliore e peggiore in $
- for ix = 0 to 6 begin
- if countPerDay[ix] > 0 then begin
- valPts = avgPerDay[ix] * BigPointValue;
- if valPts > bestVal then begin bestVal = valPts; bestIx = ix; end;
- if valPts < worstVal then begin worstVal = valPts; worstIx = ix; end;
- end;
- end;
- // Inizio HTML
- tableHTML =
- "<style>table{font-size:11px;border-collapse:collapse;}"
- + "th{background:#eee;}td,th{border:1px solid #999;"
- + "padding:4px 6px;text-align:center;}"
- + ".green{background:#e1f5e1;font-weight:bold;}"
- + ".red{background:#fce4e4;font-weight:bold;}</style>"
- + "<table><tr><th>Giorno</th><th>Media Punti</th><th>Media $</th></tr>";
- // Riga per ogni giorno
- for ix = 0 to 6 begin
- if countPerDay[ix] > 0 then begin
- valPts = avgPerDay[ix] * BigPointValue;
- // colore della riga
- if ix = bestIx then
- tableHTML = tableHTML + "<tr class='green'>"
- else if ix = worstIx then
- tableHTML = tableHTML + "<tr class='red'>"
- else if avgPerDay[ix] > 0 then
- tableHTML = tableHTML + "<tr style='background:#f0fff0;'>"
- else if avgPerDay[ix] < 0 then
- tableHTML = tableHTML + "<tr style='background:#fff0f0;'>"
- else
- tableHTML = tableHTML + "<tr style='background:#f8f8f8;'>";
- // nome del giorno
- switch ix begin
- case 0: dowName = "Lunedi";
- case 1: dowName = "Martedi";
- case 2: dowName = "Mercoledi";
- case 3: dowName = "Giovedi";
- case 4: dowName = "Venerdi";
- case 5: dowName = "Sabato";
- case 6: dowName = "Domenica";
- end;
- // celle
- tableHTML = tableHTML
- + "<td>" + dowName + "</td>"
- + "<td>" + NumToStr(avgPerDay[ix], 3) + "</td>"
- + "<td>" + NumToStr(valPts, 2) + "</td></tr>";
- end;
- end;
- tableHTML = tableHTML + "</table>";
- CommentaryCL(tableHTML);
- end;
- //////////////////////////////////// //////////////////////////////////// //////////////////////////////////// ////////////////////////////////////
- // Aggiunto Personalmente il Print Debug !!!
- if LastBarOnChart then begin
- Print("Medie punti per giorno della settimana:");
- Print("Lun: ", NumToStr(avgPerDay[0], 3)); // Cambia i decimali del print ultimo numero prima della chiusura dell'ultima parentesi tonda !!!
- Print("Mar: ", NumToStr(avgPerDay[1], 3));
- Print("Mer: ", NumToStr(avgPerDay[2], 3));
- Print("Gio: ", NumToStr(avgPerDay[3], 3));
- Print("Ven: ", NumToStr(avgPerDay[4], 3));
- Print("Sab: ", NumToStr(avgPerDay[5], 3));
- Print("Dom: ", NumToStr(avgPerDay[6], 3));
- end;
- // Aggiunto Personalmente il Print Debug !!!
- if LastBarOnChart then begin
- Print("Medie in $ per giorno della settimana:");
- Print("Lun: ", NumToStr(avgPerDay[0] * BigPointValue, 2)); // Cambia i decimali del print ultimo numero prima della chiusura dell'ultima parentesi tonda !!!
- Print("Mar: ", NumToStr(avgPerDay[1] * BigPointValue, 2));
- Print("Mer: ", NumToStr(avgPerDay[2] * BigPointValue, 2));
- Print("Gio: ", NumToStr(avgPerDay[3] * BigPointValue, 2));
- Print("Ven: ", NumToStr(avgPerDay[4] * BigPointValue, 2));
- Print("Sab: ", NumToStr(avgPerDay[5] * BigPointValue, 2));
- Print("Dom: ", NumToStr(avgPerDay[6] * BigPointValue, 2));
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement