It is necessary to take into account the position time and store it in a variable. Implementation example: Last position type:
Vladimir Karputov:
It is necessary to take into account the position time and store it in a variable. Implementation example: Last position type:
It is necessary to take into account the position time and store it in a variable. Implementation example: Last position type:
double POSITTYPE() { datetime lastTime = 0; long position_time = PositionGetInteger(POSITION_TIME); double POSX=0; string symbol; symbol=PositionGetSymbol(POSITION_SYMBOL); for(int i=PositionsTotal()-1;i>=0;i--) { if(PositionSelectByTicket(PositionGetTicket(i)) && PositionGetString(POSITION_SYMBOL)==_Symbol && PositionGetInteger(POSITION_MAGIC)==MagicNumber&& position_time > lastTime) { if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) POSX=1; if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL) POSX=2; } } return( POSX); }
The code has been amended as above but sill does not work
Peter Kaiza:
1. POSITION_TIME returns a datetime type.The code has been amended as above but sill does not work
2. You are assigning that value before selecting your position
3. You never assign last_time a value so you're always comparing against 0
Peter Kaiza:
The code has been amended as above but sill does not work
Forum on trading, automated trading systems and testing trading strategies
Vladimir Karputov, 2020.10.29 15:03
It is necessary to take into account the position time and store it in a variable. Implementation example: Last position type://+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- ENUM_POSITION_TYPE last_pos_type = WRONG_VALUE; ulong last_pos_time = 0; // "0" -> D'1970.01.01 00:00'; string text = ""; //--- for(int i=PositionsTotal()-1; i>=0; i--) // returns the number of current positions if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==InpMagic) { ulong pos_time=m_position.TimeMsc(); if(pos_time>last_pos_time) { last_pos_type=m_position.PositionType(); last_pos_time=pos_time; //--- text=EnumToString(last_pos_type)+" | "+m_position.Symbol()+" | "+ IntegerToString(m_position.Ticket())+" | "+TimeToString(m_position.Time(),TIME_DATE|TIME_SECONDS)+" | "+ DoubleToString(m_position.Volume(),2); } } Comment(text); }
Vladimir Karputov:
How do implement this?
ulong pos_time=m_position.TimeMsc(); if(pos_time>last_pos_time) { last_pos_type=m_position.PositionType(); last_pos_time=pos_time;
Peter Kaiza :
How do implement this?
I already gave a link to a complete example:
Forum on trading, automated trading systems and testing trading strategies
Vladimir Karputov, 2020.10.29 15:03
It is necessary to take into account the position time and store it in a variable. Implementation example: Last position type:You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
The code below correctly identifies the position type when there is only one trade opened, however if there are more than one position opened, the code does not return the latest position
type. How does i modify it to identify the position type of the LATEST opened trade if there are more than one trade?