Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // --------------------------------------------------- INIZIO ORIGINALE QTA INDICATORE FUNZIONE MONEY MANAGEMENT EASY LANGUAGE --------------------------------------------------- //
- {***************************************
- * Funzione: CalcPosSize
- *
- * Questa funzione calcola la dimensione della posizione da utilizzare per gli ordini di trading.
- * Il calcolo e' basato sul metodo di money management specificato dall'input MM_Method:
- *
- * 0 - Fixed Contracts: Usa un numero fisso di contratti specificato dall'input FixedContracts.
- * 1 - Fixed Fractional Method: Usa una frazione del profitto netto per determinare la dimensione della posizione.
- * La frazione e' specificata dall'input RiskFraction e lo stop loss dall'input sl.
- * 2 - PercentFVolatility: Usa una percentuale della volatilita' del mercato (calcolata come l'Average True Range) per determinare la dimensione della posizione.
- * Il rischio monetario specificato dall'input Monetary_Risk viene diviso per l'ATR moltiplicato per il valore del punto grande.
- *
- * Gli input Min_Contract e Max_Contract vengono utilizzati per limitare la dimensione della posizione calcolata nel caso PercentVolatility.
- *
- * L'input Period_ATR e' il periodo utilizzato per calcolare l'ATR nel caso PercentVolatility.
- *
- * Per utilizzare questa funzione, chiamala all'interno della tua strategia, passando i parametri appropriati. Ad esempio:
- *
- * vars: myPosSize(0);
- * myPosSize = CalcPosSize(MM_Method, FixedContracts, RiskFraction, Period_ATR, Min_Contract, Max_Contract, Monetary_Risk);
- *
- * Puoi quindi utilizzare la variabile myPosSize per i tuoi ordini. Ad esempio:
- *
- * buy myPosSize contracts next bar at market;
- ****************************************}
- // Se si crea uno script funzione su easylanguage allora usare (numericSimple)
- {inputs: MM_Method(numericSimple),
- FixedContracts(numericSimple),
- RiskFraction(numericSimple),
- Period_ATR(numericSimple),
- Min_Contract(numericSimple),
- Max_Contract(numericSimple),
- Monetary_Risk(numericSimple);}
- // Se si crea uno signal su easylanguage allora usare (numero input)
- inputs: MM_Method(1),
- FixedContracts(1),
- RiskFraction(25),
- Period_ATR(14),
- Min_Contract(1),
- Max_Contract(100),
- Monetary_Risk(200);
- vars: posSize(0), ATRValue(0);
- if MM_Method = 0 then begin // Fixed Contracts
- posSize = FixedContracts;
- end
- else if MM_Method = 1 then begin // Fixed Fractional Method
- posSize = ((RiskFraction/100) * NetProfit) / Monetary_Risk;
- if posSize < 1 then posSize = 1;
- end
- else if MM_Method = 2 then begin // Percent Volatility
- ATRValue = AvgTrueRange(Period_ATR);
- if (ATRValue * bigpointvalue) > 0 then
- posSize = Monetary_Risk / (ATRValue * BigPointValue);
- end;
- posSize = Round(posSize, 0);
- if posSize > Max_Contract then
- posSize = Max_Contract
- else if posSize < Min_Contract then
- posSize = Min_Contract;
- // CalcolaPositionSize = posSize; // !!! ATTENZIONE DECOMMENTARE SE SI CREAI UNO SCRIPT EASYLANGUAGE DI TIPO FUNZIONE !!! .
- // --------------------------------------------------- FINE ORIGINALE QTA INDICATORE FUNZIONE MONEY MANAGEMENT EASY LANGUAGE --------------------------------------------------- //
- // --------------------------------------------------- INIZIO MODIFICATO PER VARIE PROVE --------------------------------------------------- //
- {***************************************
- * Funzione: CalcPosSize
- *
- * Questa funzione calcola la dimensione della posizione da utilizzare per gli ordini di trading.
- * Il calcolo e' basato sul metodo di money management specificato dall'input MM_Method:
- *
- * 0 - Fixed Contracts: Usa un numero fisso di contratti specificato dall'input FixedContracts.
- * 1 - Fixed Fractional Method: Usa una frazione del profitto netto per determinare la dimensione della posizione.
- * La frazione e' specificata dall'input RiskFraction e lo stop loss dall'input sl.
- * 2 - PercentFVolatility: Usa una percentuale della volatilita' del mercato (calcolata come l'Average True Range) per determinare la dimensione della posizione.
- * Il rischio monetario specificato dall'input Monetary_Risk viene diviso per l'ATR moltiplicato per il valore del punto grande.
- *
- * Gli input Min_Contract e Max_Contract vengono utilizzati per limitare la dimensione della posizione calcolata nel caso PercentVolatility.
- *
- * L'input Period_ATR e' il periodo utilizzato per calcolare l'ATR nel caso PercentVolatility.
- *
- * Per utilizzare questa funzione, chiamala all'interno della tua strategia, passando i parametri appropriati. Ad esempio:
- *
- * vars: myPosSize(0);
- * myPosSize = CalcPosSize(MM_Method, FixedContracts, RiskFraction, Period_ATR, Min_Contract, Max_Contract, Monetary_Risk);
- *
- * Puoi quindi utilizzare la variabile myPosSize per i tuoi ordini. Ad esempio:
- *
- * buy myPosSize contracts next bar at market;
- ****************************************}
- {inputs: MM_Method(1),
- FixedContracts(1),
- RiskFraction(25),
- Period_ATR(14),
- Min_Contract(1),
- Max_Contract(100),
- Monetary_Risk(200),
- Initial_Capital(100000);
- vars: posSize(0), ATRValue(0), CalcolaPositionSize(0);
- if MM_Method = 0 then begin // Fixed Contracts
- posSize = FixedContracts;
- end
- else if MM_Method = 1 then begin // Fixed Fractional Method
- posSize = ((RiskFraction/100) * (Initial_Capital + NetProfit)) / Close;// / Monetary_Risk; // Se lo voglio includere Monetary_Risk lo includo altrimewnti niente
- if posSize < 1 then posSize = 1;
- end
- else if MM_Method = 2 then begin // Percent Volatility
- ATRValue = AvgTrueRange(Period_ATR);
- if (ATRValue * bigpointvalue) > 0 then
- posSize = Monetary_Risk / (ATRValue * BigPointValue);
- end;
- posSize = Round(posSize, 0);
- if posSize > Max_Contract then
- posSize = Max_Contract
- else if posSize < Min_Contract then
- posSize = Min_Contract;
- CalcolaPositionSize = posSize;
- print(posSize);
- // Entry / Exit condition Long
- if (close > open and close[1] > open[1]) then
- begin;
- Buy("Entry_long") posSize contracts next bar at market;
- end;
- if (close < open and close[1] < open[1]) then
- begin;
- Sell("Exit_long") from entry("Entry_long") next bar at market;
- end;}
- // --------------------------------------------------- FINE MODIFICATO PER VARIE PROVE --------------------------------------------------- //
- // --------------------------------------------------- INIZIO ORIGINALE QTA INDICATORE FUNZIONE MONEY MANAGEMENT PINESCRIPT --------------------------------------------------- //
- {MM_Method = input(0, "MM_Method")
- FixedContracts = input(1, "FixedContracts")
- RiskFraction = input(1, "RiskFraction")
- Period_ATR = input(14, "Period_ATR")
- Min_Contract = input(1, "Min_Contract")
- Max_Contract = input(100, "Max_Contract")
- Monetary_Risk = input(1, "Monetary_Risk")
- posSize = 0.0
- ATRValue = ta.atr(Period_ATR)
- if (MM_Method == 0)
- posSize := FixedContracts
- else if (MM_Method == 1)
- posSize := ((RiskFraction / 100) * na) / Monetary_Risk
- else if (MM_Method == 2)
- if (ATRValue * close) > 0
- posSize := Monetary_Risk / (ATRValue * close)
- posSize := math.round(posSize)
- if posSize > Max_Contract
- posSize := Max_Contract
- else if posSize < Min_Contract
- posSize := Min_Contract}
- // --------------------------------------------------- FINE ORIGINALE QTA INDICATORE FUNZIONE MONEY MANAGEMENT PINESCRIPT --------------------------------------------------- //
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement