//+------------------------------------------------------------------+ //| osc-pc-p7-001.mqh | //| Copyright 2010,oficina de software.| //| http://www.metaquotes.net/marcoc.| //+------------------------------------------------------------------+ #include #include #include #include #include //+------------------------------------------------------------------+ //| defines | //+------------------------------------------------------------------+ //--- indents and gaps #define INDENT_LEFT (11) // indent from left (with allowance for border width) #define INDENT_TOP (11) // indent from top (with allowance for border width) #define INDENT_RIGHT (11) // indent from right (with allowance for border width) #define INDENT_BOTTOM (11) // indent from bottom (with allowance for border width) #define CONTROLS_GAP_X (5) // gap by X coordinate #define CONTROLS_GAP_Y (5) // gap by Y coordinate //--- for buttons #define BUTTON_WIDTH (53) // size by X coordinate #define BUTTON_HEIGHT (20) // size by Y coordinate //--- for the indication area #define EDIT_WIDTH (30) // size by X coordinate #define EDIT_HEIGHT (20) // size by Y coordinate //--- for group controls #define GROUP_WIDTH (230) // size by X coordinate #define GROUP_HEIGHT (57) // size by Y coordinate //--- gerais #define ALTURA_LINHA ( 20) // size by Y coordinate #define LARGURA_COLUNA_01 (100) // size by X coordinate // era 115 #define LARGURA_COLUNA_02 ( 90) // size by X coordinate #define LARGURA_COLUNA_03 ( 60) // size by X coordinate #define LARGURA_COLUNA_04 ( 50) // size by X coordinate #define INI_COLUNA_01 (0 ) // size by X coordinate #define INI_COLUNA_02 (INI_COLUNA_01+LARGURA_COLUNA_01 ) // size by X coordinate #define INI_COLUNA_03 (INI_COLUNA_02+LARGURA_COLUNA_02+CONTROLS_GAP_X*3) // size by X coordinate #define INI_COLUNA_04 (INI_COLUNA_03+LARGURA_COLUNA_03 ) // size by X coordinate #define LARGURA_CONTROL_PANEL (450) // size by X coordinate #define ALTURA_CONTROL_PANEL (460) // size by X coordinate #define COL01_WIDTH (100) // size by X coordinate #define COL02_WIDTH (100) // size by X coordinate //+------------------------------------------------------------------+ //| Class osc_control_panel_p7_001 | //| Usage: Painel de Controle para o Expert P7-001 | //+------------------------------------------------------------------+ class osc_control_panel_p7_001 : public CAppDialog { private: CCheckGroup m_check_group; // the CheckGroup object CLabel m_labelPosicao; // the label object CEdit m_editPosicao; // the display field object string m_posicao; // informa se estah comprado ou vendido CLabel m_labelT4g; // the label object CEdit m_editT4g; // the display field object int m_t4g; // ticks for gain (primeiro passo) CLabel m_labelPasso; // the label object CEdit m_editPasso; // the display field object int m_passo ; // passo em ticks; CLabel m_labelProfitPosicao; // the label object CEdit m_editProfitPosicao; // the display field object double m_profitPosicao; // profit da posicao atual CLabel m_labelSaidaPosicao; // the label object CEdit m_editSaidaPosicao; // the display field object double m_saidaPosicao; // profit da posicao atual CLabel m_labelStopLoss; // the label object CEdit m_editStopLoss; // the display field object double m_stopLoss; // profit da posicao atual CLabel m_labelVolPosicao; // the label object CEdit m_editVolPosicao; // the display field object string m_volPosicao; // volumetot/volume pendente para fechar a posicao CLabel m_labelPftBruto; // the label object CEdit m_editPftBruto; // the display field object double m_pftBruto; // Profit bruto do dia mini indice CLabel m_labelTarifa; // the label object CEdit m_editTarifa; // the display field object double m_tarifa; // tarifa do dia mini indice CLabel m_labelPftContrat; // the label object CEdit m_editPftContrat; // the display field object double m_pftContrat; // Profit por contrato do dia mini indice CLabel m_labelPftLiquido; // the label object CEdit m_editPftLiquido; // the display field object double m_pftLiquido; // Profit liquido do dia mini indice CLabel m_labelVol; // the label object CEdit m_editVol; // the display field object double m_vol; // Profit liquido do dia mini indice CLabel m_labelPUP3; // the label object CEdit m_editPUP3; // the display field object double m_PUP3; // propabilidade do preco subir CLabel m_labelPUP2; // the label object CEdit m_editPUP2; // the display field object double m_PUP2; // propabilidade do preco subir CLabel m_labelPUP1; // the label object CEdit m_editPUP1; // the display field object double m_PUP1; // propabilidade do preco subir CLabel m_labelPUP0; // the label object CEdit m_editPUP0; // the display field object double m_PUP0; // propabilidade do preco subir CLabel m_labelPDW0; // the label object CEdit m_editPDW0; // the display field object double m_PDW0; // propabilidade do preco descer CLabel m_labelPDW1; // the label object CEdit m_editPDW1; // the display field object double m_PDW1; // propabilidade do preco descer CLabel m_labelPDW2; // the label object CEdit m_editPDW2; // the display field object double m_PDW2; // propabilidade do preco descer CLabel m_labelPDW3; // the label object CEdit m_editPDW3; // the display field object double m_PDW3; // propabilidade do preco descer CButton m_button_ok; // the button "OK" object public: osc_control_panel_p7_001(void); ~osc_control_panel_p7_001(void); //--- create virtual bool Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2); virtual bool Create(); //--- chart event handler virtual bool OnEvent(const int id,const long &lparam,const double &dparam,const string &sparam); //--- initialization virtual bool Initialization(const bool Mail,const bool Push,const bool Alert_, const double Lots,const int TakeProfit, const int TrailingStop,const int MACDOpenLevel, const int MACDCloseLevel,const int MATrendPeriod); //--- get values virtual void GetValues(bool &Mail,bool &Push,bool &Alert_, double &Lots,int &TakeProfit, int &TrailingStop,int &MACDOpenLevel, int &MACDCloseLevel,int &MATrendPeriod); //--- send notifications virtual void Notifications(const string text); //--- virtual bool Modification(void) const { return(mModification); } virtual void Modification(bool value) { mModification=value; } void setPosicaoNula (string p ){ if(p== m_posicao )return; m_posicao = p; m_editPosicao .Text( p ); m_editPosicao.Color(clrGray); } void setPosicaoBuy (string p ){ if(p== m_posicao )return; m_posicao = p; m_editPosicao .Text( p ); m_editPosicao.Color(clrBlue); } void setPosicaoSell (string p ){ if(p== m_posicao )return; m_posicao = p; m_editPosicao .Text( p ); m_editPosicao.Color(clrRed ); } void setT4g (int p ){ if(p== m_t4g )return; m_t4g = p; m_editT4g .Text( IntegerToString(p ) ); } void setPasso (int p ){ if(p== m_passo )return; m_passo = p; m_editPasso .Text( IntegerToString(p ) ); } void setProfitPosicao(double p ){ if(p== m_profitPosicao)return; m_profitPosicao= p; m_editProfitPosicao.Text( DoubleToString (p,2) ); if( p<0)m_editProfitPosicao.Color(clrRed); if(p>0)m_editProfitPosicao.Color(clrBlue); if(p==0)m_editProfitPosicao.Color(clrGray); } void setSaidaPosicao (double p ){ if(p== m_saidaPosicao )return; m_saidaPosicao = p; m_editSaidaPosicao .Text( DoubleToString (p,2) ); if( p<0)m_editSaidaPosicao .Color(clrRed); if(p>0)m_editSaidaPosicao .Color(clrBlue); if(p==0)m_editSaidaPosicao .Color(clrGray); } void setStopLoss (double p ){ if(p== m_stopLoss )return; m_stopLoss = p; m_editStopLoss .Text( DoubleToString (p,2) ); } void setVolPosicao (string p ){ if(p== m_volPosicao )return; m_volPosicao = p; m_editVolPosicao .Text( p ); } void setPftBruto (double p ){ if(p== m_pftBruto )return; m_pftBruto = p; m_editPftBruto .Text( DoubleToString (p,2) ); if( p<0)m_editPftBruto .Color(clrRed); if(p>0)m_editPftBruto .Color(clrBlue); if(p==0)m_editPftBruto .Color(clrGray); } void setTarifa (double p ){ if(p==-m_tarifa )return; m_tarifa =-p; m_editTarifa .Text( DoubleToString (p,2) ); if(-p<0)m_editTarifa .Color(clrRed); if(p==0)m_editTarifa .Color(clrGray); } void setPftContrat (double p ){ if(p== m_pftContrat )return; m_pftContrat = p; m_editPftContrat .Text( DoubleToString (p,2) ); if( p<0)m_editPftContrat .Color(clrRed); if(p>0)m_editPftContrat .Color(clrBlue); if(p==0)m_editPftContrat .Color(clrGray); } void setPftLiquido (double p ){ if(p== m_pftLiquido )return; m_pftLiquido = p; m_editPftLiquido .Text( DoubleToString (p,2) ); if( p<0)m_editPftLiquido .Color(clrRed); if(p>0)m_editPftLiquido .Color(clrBlue); if(p==0)m_editPftLiquido .Color(clrGray); } void setVol (double p ){ if(p== m_vol )return; m_vol = p; m_editVol .Text( DoubleToString (p,2) ); } void setVolTradePorSegDeltaPorc(double p){ if(p==m_PUP3 )return; m_PUP3 = p; m_editPUP3 .Text( DoubleToString (p,2) ); if( p<0)m_editPUP3 .Color(clrRed); if(p>0)m_editPUP3 .Color(clrBlue); if(p==0)m_editPftBruto .Color(clrGray); } void setPUP3(double p, double lim ){ if(p==m_PUP3)return; m_PUP3=p; m_editPUP3.Text( DoubleToString (p,0) ); if( p>=lim)m_editPUP3.Color(clrBlue); if(p=lim)m_editPUP2.Color(clrBlue); if(p=lim)m_editPUP1.Color(clrBlue); if(p=lim)m_editPUP0.Color(clrBlue); if(p=lim)m_editPDW0.Color(clrBlue); if(p=lim)m_editPDW1.Color(clrBlue); if(p=lim)m_editPDW2.Color(clrBlue); if(p=lim)m_editPDW3.Color(clrBlue); if(p