BreakProfit

Author: Vincenzo Augello, maggio 2023
0 Views
0 Downloads
0 Favorites
BreakProfit
ÿþ//+------------------------------------------------------------------+

//|                                                  BreakProfit.mq5 |

//|                                                 Vincenzo Augello |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Vincenzo Augello, maggio 2023 "

#property link      "https://www.mql5.com"

#property version   "1.00"

#property description "Calcola la deviazione percentuale/pips,la prima definita BE-DEV, di posizioni rispetto al breakeven di due asset valutari"

#property indicator_chart_window

#property indicator_buffers 0

#property indicator_plots   0



// Strutture MqlRates adibite a salvare i valori dello storico prezzi

   MqlRates arrayPriceData  [];

   MqlRates arrayPriceDataU [];

  

//--- input parameters



input color font_color=clrDodgerBlue;

input int font_size=7;

input string font_face="Courier";

input ENUM_ANCHOR_POINT corner=ANCHOR_LEFT_UPPER;

input int spread_distance_x = 4;

input int spread_distance_y = 250;

input double breakeven;

input double breakevenU;



input string               InpSymbolX        =  "EURUSD";      // First symbol name

input ENUM_APPLIED_PRICE   InpAppliedPriceX  =  PRICE_CLOSE;   // First symbol applied price

input string               InpSymbolY        =  "USDCZK";      // Second symbol name

input ENUM_APPLIED_PRICE   InpAppliedPriceY  =  PRICE_CLOSE;   // Second symbol applied price



double  LineBuffer [];



//+------------------------------------------------------------------+

//| Custom indicator initialization function                         |

//+------------------------------------------------------------------+



int OnInit()

  {

//---Questa istruzione serve ad impostare l'array arrayPriceData come una serie storica dei prezzi 

//---dove l'indice zero corrisponde all'elemento più recente.

    ArraySetAsSeries(arrayPriceData,true);

    ArraySetAsSeries(arrayPriceDataU,true);



//---indicator buffers mapping

   

   SetIndexBuffer(0,LineBuffer,INDICATOR_DATA);

   

   ObjectCreate(0,"recupero",OBJ_LABEL,0,0,0);

   ObjectSetInteger(0,"recupero",OBJPROP_ANCHOR,corner);

   ObjectSetInteger(0,"recupero",OBJPROP_XDISTANCE,spread_distance_x);

   ObjectSetInteger(0,"recupero",OBJPROP_YDISTANCE,spread_distance_y);

      

   ObjectCreate(0,"scarto",OBJ_LABEL,0,0,0);

   ObjectSetInteger(0,"scarto",OBJPROP_ANCHOR,corner);

   //ObjectSetInteger(0,"scarto",OBJPROP_XDISTANCE,spread_distance_x);

   //ObjectSetInteger(0,"scarto",OBJPROP_YDISTANCE,spread_distance_y);

   

   return(INIT_SUCCEEDED);

    

 }



//+-------------------------------------------------------------------------------+

// Funzione di uscita registro e cls display                                      |        

//+-------------------------------------------------------------------------------+

void OnDeinit(const int reason)

{

 

 Print("EXIT");

 Comment("  ");

 ObjectDelete(0,"recupero");

 ObjectDelete(0,"recuperoU");

 ObjectDelete(0,"somma");

 ObjectDelete(0,"scarto");

 ObjectDelete(0,"scartoU");

 ObjectDelete(0,"breakeven");

 ObjectDelete(0,"breakevenU");



}



//+------------------------------------------------------------------+

//| Custom indicator iteration function                              |

//+------------------------------------------------------------------+



double chiusura   = 0;

double recupero   = 0;

double recuperoU  = 0;

double somma      = 0;

double scarto     = 0; 

double scartoU    = 0; 



int OnCalculate(const int rates_total,

                const int prev_calculated,

                const datetime &time[],

                const double &open[],

                const double &high[],

                const double &low[],

                const double &close[],

                const long &tick_volume[],

                const long &volume[],

                const int &spread[])

  {

 

   int nrBarreMemorizzate = CopyRates(InpSymbolX,_Period,0,10, arrayPriceData);

   recupero      = (arrayPriceData[0].close - breakeven) / breakeven * 100;

   CopyRates(InpSymbolY,_Period,0,10, arrayPriceDataU);

   recuperoU     = (arrayPriceDataU[0].close - breakevenU) / breakevenU * 100;

   somma         = recupero + recuperoU;  

   scarto        = (arrayPriceData[0].close - breakeven);

   scartoU       = (arrayPriceDataU[0].close - breakevenU);

      

   ObjectSetString(0,"recupero",OBJPROP_TEXT, " BE-DEV %, " + InpSymbolX + ": " + DoubleToString(recupero,4) + " " + InpSymbolY

   + ": " + DoubleToString(recuperoU,4) + " REC %: " + DoubleToString(somma,4));  

    

   ObjectSetString(0,"scarto",OBJPROP_TEXT, " BE-DEV," + InpSymbolX + ": " + DoubleToString(scarto,4) + " " + InpSymbolY + ": " + DoubleToString(scartoU,4)

   + " BE: " + breakeven + " / " + breakevenU); 

   

   ObjectSetString(0,"recupero",OBJPROP_FONT,font_face);

   ObjectSetInteger(0,"recupero",OBJPROP_FONTSIZE,font_size);

   ObjectSetInteger(0,"recupero",OBJPROP_COLOR,font_color);

   

   ObjectSetString(0,"recuperoU",OBJPROP_FONT,font_face);

   ObjectSetInteger(0,"recuperoU",OBJPROP_FONTSIZE,font_size);

   ObjectSetInteger(0,"recuperoU",OBJPROP_COLOR,font_color);



   ObjectSetString(0,"somma",OBJPROP_FONT,font_face);

   ObjectSetInteger(0,"somma",OBJPROP_FONTSIZE,font_size);

   ObjectSetInteger(0,"somma",OBJPROP_COLOR,font_color);



   ObjectSetString(0,"scarto",OBJPROP_FONT,font_face);

   ObjectSetInteger(0,"scarto",OBJPROP_FONTSIZE,font_size);

   ObjectSetInteger(0,"scarto",OBJPROP_COLOR,font_color); 

      

   //--- return value of prev_calculated for next call

        

   return(0);

  }

//+------------------------------------------------------------------+

Comments