Advertisement
Maurizio-Ciullo

Indicatore Funzione QTA Money Management

Jul 24th, 2023
708
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //                         ***** CODICE PINESCRIPT A FINE PAGINA *****                                 //
  2.  
  3. // --------------------------------------------------- INIZIO ORIGINALE QTA INDICATORE FUNZIONE MONEY MANAGEMENT EASY LANGUAGE --------------------------------------------------- //
  4.  
  5.  
  6.  
  7. {***************************************
  8. * Funzione: CalcPosSize
  9. *
  10. * Questa funzione calcola la dimensione della posizione da utilizzare per gli ordini di trading.
  11. * Il calcolo e' basato sul metodo di money management specificato dall'input MM_Method:
  12. *
  13. * 0 - Fixed Contracts: Usa un numero fisso di contratti specificato dall'input FixedContracts.
  14. * 1 - Fixed Fractional Method: Usa una frazione del profitto netto per determinare la dimensione della posizione.
  15. *     La frazione e' specificata dall'input RiskFraction e lo stop loss dall'input sl.
  16. * 2 - PercentFVolatility: Usa una percentuale della volatilita' del mercato (calcolata come l'Average True Range) per determinare la dimensione della posizione.
  17. *     Il rischio monetario specificato dall'input Monetary_Risk viene diviso per l'ATR moltiplicato per il valore del punto grande.
  18. *
  19. * Gli input Min_Contract e Max_Contract vengono utilizzati per limitare la dimensione della posizione calcolata nel caso PercentVolatility.
  20. *
  21. * L'input Period_ATR e' il periodo utilizzato per calcolare l'ATR nel caso PercentVolatility.
  22. *
  23. * Per utilizzare questa funzione, chiamala all'interno della tua strategia, passando i parametri appropriati. Ad esempio:
  24. *
  25. * vars: myPosSize(0);
  26. * myPosSize = CalcPosSize(MM_Method, FixedContracts, RiskFraction, Period_ATR, Min_Contract, Max_Contract, Monetary_Risk);
  27. *
  28. * Puoi quindi utilizzare la variabile myPosSize per i tuoi ordini. Ad esempio:
  29. *
  30. * buy myPosSize contracts next bar at market;
  31. ****************************************}
  32.  
  33. // Se si crea uno script funzione su easylanguage allora usare (numericSimple)
  34.  
  35. {inputs: MM_Method(numericSimple),
  36.         FixedContracts(numericSimple),
  37.         RiskFraction(numericSimple),
  38.         Period_ATR(numericSimple),
  39.         Min_Contract(numericSimple),
  40.         Max_Contract(numericSimple),
  41.         Monetary_Risk(numericSimple);}
  42.        
  43. // Se si crea uno signal su easylanguage allora usare (numero input)        
  44.        
  45. inputs: MM_Method(1),
  46.         FixedContracts(1),
  47.         RiskFraction(25),
  48.         Period_ATR(14),
  49.         Min_Contract(1),
  50.         Max_Contract(100),
  51.         Monetary_Risk(200);
  52.        
  53. vars: posSize(0), ATRValue(0);
  54.  
  55. if MM_Method = 0 then begin // Fixed Contracts
  56.     posSize = FixedContracts;
  57. end
  58. else if MM_Method = 1 then begin // Fixed Fractional Method
  59.     posSize = ((RiskFraction/100) * NetProfit) / Monetary_Risk;
  60.     if posSize < 1 then posSize = 1;
  61. end
  62. else if MM_Method = 2 then begin // Percent Volatility
  63.     ATRValue = AvgTrueRange(Period_ATR);
  64.    
  65.     if (ATRValue * bigpointvalue) > 0 then
  66.         posSize = Monetary_Risk / (ATRValue * BigPointValue);
  67.    
  68. end;
  69.  
  70. posSize = Round(posSize, 0);
  71.  
  72. if posSize > Max_Contract then
  73.    posSize = Max_Contract
  74. else if posSize < Min_Contract then
  75.    posSize = Min_Contract;
  76.  
  77. // CalcolaPositionSize = posSize; // !!! ATTENZIONE DECOMMENTARE SE SI CREAI UNO SCRIPT EASYLANGUAGE DI TIPO FUNZIONE !!! .
  78.  
  79.  
  80. // --------------------------------------------------- FINE ORIGINALE QTA INDICATORE FUNZIONE MONEY MANAGEMENT EASY LANGUAGE --------------------------------------------------- //
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87. // --------------------------------------------------- INIZIO MODIFICATO PER VARIE PROVE --------------------------------------------------- //
  88.  
  89. {***************************************
  90. * Funzione: CalcPosSize
  91. *
  92. * Questa funzione calcola la dimensione della posizione da utilizzare per gli ordini di trading.
  93. * Il calcolo e' basato sul metodo di money management specificato dall'input MM_Method:
  94. *
  95. * 0 - Fixed Contracts: Usa un numero fisso di contratti specificato dall'input FixedContracts.
  96. * 1 - Fixed Fractional Method: Usa una frazione del profitto netto per determinare la dimensione della posizione.
  97. *     La frazione e' specificata dall'input RiskFraction e lo stop loss dall'input sl.
  98. * 2 - PercentFVolatility: Usa una percentuale della volatilita' del mercato (calcolata come l'Average True Range) per determinare la dimensione della posizione.
  99. *     Il rischio monetario specificato dall'input Monetary_Risk viene diviso per l'ATR moltiplicato per il valore del punto grande.
  100. *
  101. * Gli input Min_Contract e Max_Contract vengono utilizzati per limitare la dimensione della posizione calcolata nel caso PercentVolatility.
  102. *
  103. * L'input Period_ATR e' il periodo utilizzato per calcolare l'ATR nel caso PercentVolatility.
  104. *
  105. * Per utilizzare questa funzione, chiamala all'interno della tua strategia, passando i parametri appropriati. Ad esempio:
  106. *
  107. * vars: myPosSize(0);
  108. * myPosSize = CalcPosSize(MM_Method, FixedContracts, RiskFraction, Period_ATR, Min_Contract, Max_Contract, Monetary_Risk);
  109. *
  110. * Puoi quindi utilizzare la variabile myPosSize per i tuoi ordini. Ad esempio:
  111. *
  112. * buy myPosSize contracts next bar at market;
  113. ****************************************}
  114.  
  115.        
  116. {inputs: MM_Method(1),
  117.         FixedContracts(1),
  118.         RiskFraction(25),
  119.         Period_ATR(14),
  120.         Min_Contract(1),
  121.         Max_Contract(100),
  122.         Monetary_Risk(200),
  123.         Initial_Capital(100000);    
  124.  
  125.  
  126.        
  127. vars: posSize(0), ATRValue(0), CalcolaPositionSize(0);
  128.  
  129. if MM_Method = 0 then begin // Fixed Contracts
  130.     posSize = FixedContracts;
  131. end
  132. else if MM_Method = 1 then begin // Fixed Fractional Method
  133.     posSize = ((RiskFraction/100) * (Initial_Capital + NetProfit)) / Close;// / Monetary_Risk;  // Se lo voglio includere Monetary_Risk lo includo altrimewnti niente
  134.     if posSize < 1 then posSize = 1;
  135. end
  136. else if MM_Method = 2 then begin // Percent Volatility
  137.     ATRValue = AvgTrueRange(Period_ATR);
  138.    
  139.     if (ATRValue * bigpointvalue) > 0 then
  140.         posSize = Monetary_Risk / (ATRValue * BigPointValue);
  141.      
  142. end;
  143.  
  144. posSize = Round(posSize, 0);
  145.  
  146. if posSize > Max_Contract then
  147.    posSize = Max_Contract
  148. else if posSize < Min_Contract then
  149.    posSize = Min_Contract;
  150.  
  151. CalcolaPositionSize = posSize;
  152.  
  153. print(posSize);
  154.  
  155.  
  156. // Entry / Exit condition Long
  157. if (close > open and close[1] > open[1]) then
  158.  
  159. begin;
  160.       Buy("Entry_long") posSize contracts next bar at market;
  161. end;
  162.  
  163. if (close < open and close[1] < open[1]) then
  164. begin;
  165.       Sell("Exit_long") from entry("Entry_long") next bar at market;
  166. end;}
  167.  
  168. // --------------------------------------------------- FINE MODIFICATO PER VARIE PROVE --------------------------------------------------- //
  169.  
  170.  
  171.  
  172.  
  173. // --------------------------------------------------- INIZIO ORIGINALE QTA INDICATORE FUNZIONE MONEY MANAGEMENT PINESCRIPT --------------------------------------------------- //
  174.  
  175.  
  176. {MM_Method = input(0, "MM_Method")
  177. FixedContracts = input(1, "FixedContracts")
  178. RiskFraction = input(1, "RiskFraction")
  179. Period_ATR = input(14, "Period_ATR")
  180. Min_Contract = input(1, "Min_Contract")
  181. Max_Contract = input(100, "Max_Contract")
  182. Monetary_Risk = input(1, "Monetary_Risk")
  183.  
  184. posSize = 0.0
  185. ATRValue = ta.atr(Period_ATR)
  186.  
  187. if (MM_Method == 0)
  188.     posSize := FixedContracts
  189. else if (MM_Method == 1)
  190.     posSize := ((RiskFraction / 100) * na) / Monetary_Risk
  191. else if (MM_Method == 2)
  192.     if (ATRValue * close) > 0
  193.         posSize := Monetary_Risk / (ATRValue * close)
  194.    
  195. posSize := math.round(posSize)
  196.  
  197. if posSize > Max_Contract
  198.     posSize := Max_Contract
  199. else if posSize < Min_Contract
  200.     posSize := Min_Contract}
  201.  
  202.  
  203. // --------------------------------------------------- FINE ORIGINALE QTA INDICATORE FUNZIONE MONEY MANAGEMENT PINESCRIPT --------------------------------------------------- //
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement