//+----------------------------------------------------------------------+ //| osc-pc-p7-002-004-vel-vol.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_002_004 | //| Usage: Painel de Controle para o Expert P7-002-004-VEL-VOL | //+------------------------------------------------------------------+ class osc_control_panel_p7_002_004 : 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 double m_t4g; // ticks for gain (primeiro passo) CLabel m_labelPasso; // the label object CEdit m_editPasso; // the display field object double 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_labelVTLiq; // the label object CEdit m_editVTLiq; // the display field object double m_VTLiq; // banda superior da bolinguer CLabel m_labelVTBuy; // the label object CEdit m_editVTBuy; // the display field object double m_VTBuy; // media da bolinguer CLabel m_labelVTSel; // the label object CEdit m_editVTSel; // the display field object double m_VTSel; // banda inferior da bolinguer CLabel m_labelVTDir; // the label object CEdit m_editVTDir; // the display field object double m_VTDir; // DIRECAO DA VELOCIDADE DO VOLUME CLabel m_labelVTLen; // the label object CEdit m_editVTLen; // the display field object double m_VTLen; // propabilidade do preco descer CLabel m_labelVTDir2; // the label object CEdit m_editVTDir2; // the display field object double m_VTDir2; // media de velocidade da direcao do trade. CLabel m_labelLEN1; // the label object CEdit m_editLEN1; // the display field object double m_LEN1; // propabilidade do preco descer CLabel m_labelLEN0; // the label object CEdit m_editLEN0; // the display field object double m_LEN0; // propabilidade do preco descer CButton m_button_ok; // the button "OK" object void setEditValue(double p, CEdit &edit, double lim, color cup, color cdw, color clim ){ //edit=p; edit.Text( DoubleToString (p,2) ); if(p>lim){ edit.Color(cup); }else{ if(p0)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) ); m_editStopLoss .Color(clrLightSalmon); } 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 setVolVTLiq (double p ){ if(p==m_VTLiq )return; m_VTLiq = p; m_editVTLiq .Text( DoubleToString (p,0) ); if( p<0)m_editVTLiq .Color(clrRed); if(p>0)m_editVTLiq .Color(clrBlue); if(p==0)m_editVTLiq .Color(clrGray); } //void setVTLiq (int p){ if(p==m_VTLiq )return; m_VTLiq =p; m_editVTLiq .Text( IntegerToString (p) ); if( p>0){m_editVTLiq .Color(clrBlue); return;}else{ if(p<0){m_editVTLiq .Color(clrRed);return;} m_editVTLiq .Color(clrGray); } } //void setVTBuy(int p){ if(p==m_VTBuy)return; m_VTBuy=p; m_editVTBuy.Text( IntegerToString (p) ); if( p>0){m_editVTBuy.Color(clrBlue); return;}else{ if(p<0){m_editVTBuy.Color(clrRed);return;} m_editVTBuy.Color(clrGray); } } void setVTLiq (double p, double limiar=0 ){ if(p==m_VTLiq )return; m_VTLiq =p; setEditValue(p,m_editVTLiq ,limiar,clrBlue,clrRed ,clrGray); } void setVTBuy (double p, double limiar=0 ){ if(p==m_VTBuy )return; m_VTBuy =p; setEditValue(p,m_editVTBuy ,limiar,clrBlue,clrRed ,clrGray); } void setVTSel (double p, double limiar=0 ){ if(p==m_VTSel )return; m_VTSel =p; setEditValue(p,m_editVTSel ,limiar,clrBlue,clrRed ,clrGray); } void setVTDir (double p, double limiar=0 ){ if(p==m_VTDir )return; m_VTDir =p; setEditValue(p,m_editVTDir ,limiar,clrBlue,clrRed ,clrGray); } void setVTLen (double p, double limiar=0 ){ if(p==m_VTLen )return; m_VTLen =p; setEditValue(p,m_editVTLen ,limiar,clrBlue,clrRed ,clrGray); } void setVTDir2(double p, double limiar=0 ){ if(p==m_VTDir2)return; m_VTDir2=p; setEditValue(p,m_editVTDir2,limiar,clrBlue,clrRed ,clrGray); } void setLEN0 (double p, double limiar=0 ){ if(p==m_LEN0 )return; m_LEN0 =p; setEditValue(p,m_editLEN0 ,limiar,clrBlue,clrRed ,clrGray); } void setLEN1 (double p, double limiar=0 ){ if(p==m_LEN1 )return; m_LEN1 =p; setEditValue(p,m_editLEN1 ,limiar,clrBlue,clrRed ,clrGray); } //void setVTLen (double p, double lim ){ if(p==m_VTLen )return; m_VTLen=p; m_editVTLen.Text( DoubleToString (p,0) ); if( p>=lim)m_editVTLen.Color(clrBlue); if(p=lim)m_editVTDir2.Color(clrBlue); if(p=lim)m_editLEN1.Color(clrBlue); if(p=lim)m_editLEN0.Color(clrBlue); if(p