//+------------------------------------------------------------------+ //| VisualTestingTools.mq4 | //| Copyright © 2006, komposter | 2008.02.02 //| mailto:komposterius@mail.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, komposter" #property link "mailto:komposterius@mail.ru" extern string VisualTestingTools = "< - - - VisualTestingTools - - - >"; extern int TerminalRows = 50; extern int HistoryRows = 50; extern bool BigText = false; extern int SignalPoints = 10; extern bool ShowCancelled = true; extern bool ShowExpired = true; extern color MainColor = White; extern color BuyColor = Green; extern color BuyOPColor = Lime; extern color BuySLColor = Lime; extern color BuyTPColor = Lime; extern color SellColor = Brown; extern color SellOPColor = Red; extern color SellSLColor = Red; extern color SellTPColor = Red; extern int vTerminal_SubWindow = 1; extern int vHistory_SubWindow = 2; string MarketOrders[1][11], PendingOrders[1][11]; int vTerminal_win = -1, curMarketOrder = 0, curPendingOrder = 0; int vHistory_win = -1, preHistoryTotal = -1; int LotDigits = -1; int fontsize = 8, vshift = 13, shift1 = 3, shift2 = 60, shift3 = 160, shift4 = 220, shift5 = 260, shift6 = 325, shift7 = 385, shift8 = 445, shift9 = 500, shift10 = 555, shift11 = 610; void vTerminalInit() { if ( LotDigits < 0 ) { LotDigits = 0; double tmp = MarketInfo( Symbol(), MODE_LOTSTEP ); while ( NormalizeDouble( 1.0 - tmp, 4 ) > 0.0 ) { tmp *= 10; LotDigits ++; } } if ( TerminalRows <= 0 ) { return(0); } vTerminal_win = WindowFind( "vTerminal" ); if ( IsTesting() ) { vTerminal_win = vTerminal_SubWindow; } if ( vTerminal_win < 0 ) { return(-1); } ArrayResize( MarketOrders, TerminalRows ); ArrayResize( PendingOrders, TerminalRows ); if ( BigText ) { fontsize = 9; vshift = 15; shift1 = 3; shift2 = 70; shift3 = 185; shift4 = 255; shift5 = 305; shift6 = 380; shift7 = 450; shift8 = 520; shift9 = 605; shift10 = 660; shift11 = 725; } if ( vLabel( vTerminal_win, "Ticket_Head" , shift1 , vshift ) < 0 ) { vTerminal_win = -1; return; } SetText( "Ticket_Head" , "Ticket" , MainColor ); vLabel( vTerminal_win, "OpenTime_Head" , shift2 , vshift ); SetText( "OpenTime_Head" , "OpenTime" , MainColor ); vLabel( vTerminal_win, "Type_Head" , shift3 , vshift ); SetText( "Type_Head" , "Type" , MainColor ); vLabel( vTerminal_win, "Lots_Head" , shift4 , vshift ); SetText( "Lots_Head" , "Lots" , MainColor ); vLabel( vTerminal_win, "OpenPrice_Head" , shift5 , vshift ); SetText( "OpenPrice_Head" , "OpenPrice" , MainColor ); vLabel( vTerminal_win, "StopLoss_Head" , shift6 , vshift ); SetText( "StopLoss_Head" , "StopLoss" , MainColor ); vLabel( vTerminal_win, "TakeProfit_Head" , shift7 , vshift ); SetText( "TakeProfit_Head" , "TakeProfit" , MainColor ); vLabel( vTerminal_win, "CurPrice_Head" , shift8 , vshift ); SetText( "CurPrice_Head" , "CurPrice" , MainColor ); vLabel( vTerminal_win, "Swap_Head" , shift9 , vshift ); SetText( "Swap_Head" , "Swap" , MainColor ); vLabel( vTerminal_win, "Profit_Head" , shift10, vshift ); SetText( "Profit_Head" , "Profit" , MainColor ); vLabel( vTerminal_win, "Comment_Head" , shift11, vshift ); SetText( "Comment_Head" , "Comment" , MainColor ); for ( int i = 0; i < TerminalRows; i ++ ) { vLabel( vTerminal_win, "Ticket_" + i, shift1 , vshift*(i+2) ); vLabel( vTerminal_win, "OpenTime_" + i, shift2 , vshift*(i+2) ); vLabel( vTerminal_win, "Type_" + i, shift3 , vshift*(i+2) ); vLabel( vTerminal_win, "Lots_" + i, shift4 , vshift*(i+2) ); vLabel( vTerminal_win, "OpenPrice_" + i, shift5 , vshift*(i+2) ); vLabel( vTerminal_win, "StopLoss_" + i, shift6 , vshift*(i+2) ); vLabel( vTerminal_win, "TakeProfit_" + i, shift7 , vshift*(i+2) ); vLabel( vTerminal_win, "CurPrice_" + i, shift8 , vshift*(i+2) ); vLabel( vTerminal_win, "Swap_" + i, shift9 , vshift*(i+2) ); vLabel( vTerminal_win, "Profit_" + i, shift10, vshift*(i+2) ); vLabel( vTerminal_win, "Comment_" + i, shift11, vshift*(i+2) ); } } void vTerminalRefresh() { if ( TerminalRows <= 0 ) { return(0); } if ( vTerminal_win < 0 ) { return(-1); } int _GetLastError, _OrdersTotal = OrdersTotal(), digits; curMarketOrder = 0; curPendingOrder = 0; double SummProfit = 0.0; for ( int z = _OrdersTotal - 1; z >= 0; z -- ) { if ( !OrderSelect( z, SELECT_BY_POS, MODE_TRADES ) ) { _GetLastError = GetLastError(); Print( "OrderSelect( ", z, ", SELECT_BY_POS, MODE_TRADES ) - Error #", _GetLastError ); continue; } digits = MarketInfo( OrderSymbol(), MODE_DIGITS ); if ( OrderType() < 2 ) { MarketOrders[curMarketOrder][0] = OrderTicket(); MarketOrders[curMarketOrder][1] = TimeToStr( OrderOpenTime() ); MarketOrders[curMarketOrder][2] = vOrderType( OrderType() ); MarketOrders[curMarketOrder][3] = DoubleToStr( OrderLots(), LotDigits ); MarketOrders[curMarketOrder][4] = DoubleToStr( OrderOpenPrice(), digits ); MarketOrders[curMarketOrder][5] = DoubleToStr( OrderStopLoss(), digits ); MarketOrders[curMarketOrder][6] = DoubleToStr( OrderTakeProfit(), digits ); if ( OrderType() == OP_BUY ) { MarketOrders[curMarketOrder][7] = DoubleToStr( MarketInfo( OrderSymbol(), MODE_BID ), digits ); } else { MarketOrders[curMarketOrder][7] = DoubleToStr( MarketInfo( OrderSymbol(), MODE_ASK ), digits ); } MarketOrders[curMarketOrder][8] = DoubleToStr( OrderSwap(), 2 ); MarketOrders[curMarketOrder][9] = DoubleToStr( OrderProfit(), 2 ); MarketOrders[curMarketOrder][10] = OrderComment(); SummProfit += OrderProfit(); curMarketOrder ++; if ( curMarketOrder >= TerminalRows ) { break; } } else { PendingOrders[curPendingOrder][0] = OrderTicket(); PendingOrders[curPendingOrder][1] = TimeToStr( OrderOpenTime() ); PendingOrders[curPendingOrder][2] = vOrderType( OrderType() ); PendingOrders[curPendingOrder][3] = DoubleToStr( OrderLots(), LotDigits ); PendingOrders[curPendingOrder][4] = DoubleToStr( OrderOpenPrice(), digits ); PendingOrders[curPendingOrder][5] = DoubleToStr( OrderStopLoss(), digits ); PendingOrders[curPendingOrder][6] = DoubleToStr( OrderTakeProfit(), digits ); if ( OrderType() == OP_SELLSTOP || OrderType() == OP_SELLLIMIT ) { PendingOrders[curPendingOrder][7] = DoubleToStr( MarketInfo( OrderSymbol(), MODE_BID ), digits ); } else { PendingOrders[curPendingOrder][7] = DoubleToStr( MarketInfo( OrderSymbol(), MODE_ASK ), digits ); } PendingOrders[curPendingOrder][8] = DoubleToStr( OrderSwap(), 2 ); PendingOrders[curPendingOrder][9] = DoubleToStr( OrderProfit(), 2 ); PendingOrders[curPendingOrder][10] = OrderComment(); curPendingOrder ++; if ( curMarketOrder + curPendingOrder >= TerminalRows ) { break; } } } //+------------------------------------------------------------------+ //| Ñîðòèðîâêà ìàññèâîâ îðäåðîâ //+------------------------------------------------------------------+ string tmp[11]; for ( int i = curMarketOrder - 1; i >= 0; i-- ) { for ( int j = curMarketOrder - 1; j >= 0; j-- ) { if ( StrToInteger( MarketOrders[i][0] ) > StrToInteger( MarketOrders[j][0] ) ) { for ( int n = 0; n < 11; n ++ ) { tmp[n] = MarketOrders[i][n]; } for ( n = 0; n < 11; n ++ ) { MarketOrders[i][n] = MarketOrders[j][n]; } for ( n = 0; n < 11; n ++ ) { MarketOrders[j][n] = tmp[n]; } } } } for ( i = curPendingOrder - 1; i >= 0; i-- ) { for ( j = curPendingOrder - 1; j >= 0; j-- ) { if ( StrToInteger( PendingOrders[i][0] ) > StrToInteger( PendingOrders[j][0] ) ) { for ( n = 0; n < 11; n ++ ) { tmp[n] = PendingOrders[i][n]; } for ( n = 0; n < 11; n ++ ) { PendingOrders[i][n] = PendingOrders[j][n]; } for ( n = 0; n < 11; n ++ ) { PendingOrders[j][n] = tmp[n]; } } } } bool SummLineOK = false; color tmp_MainColor, tmp_SLColor, tmp_TPColor, tmp_OPColor; for ( i = 0; i < TerminalRows; i ++ ) { if ( i < curMarketOrder ) { if ( MarketOrders[i][2] == "Buy" ) { tmp_MainColor = BuyColor; if ( StrToDouble( MarketOrders[i][5] ) > 0 && NormalizeDouble( SignalPoints*Point - ( StrToDouble( MarketOrders[i][7] ) - StrToDouble( MarketOrders[i][5] ) ), Digits ) >= 0.0 ) { tmp_SLColor = BuySLColor; } else { tmp_SLColor = BuyColor; } if ( StrToDouble( MarketOrders[i][6] ) > 0 && NormalizeDouble( SignalPoints*Point - ( StrToDouble( MarketOrders[i][6] ) - StrToDouble( MarketOrders[i][7] ) ), Digits ) >= 0.0 ) { tmp_TPColor = BuyTPColor; } else { tmp_TPColor = BuyColor; } } else { tmp_MainColor = SellColor; if ( StrToDouble( MarketOrders[i][5] ) > 0 && NormalizeDouble( SignalPoints*Point - ( StrToDouble( MarketOrders[i][5] ) - StrToDouble( MarketOrders[i][7] ) ), Digits ) >= 0.0 ) { tmp_SLColor = SellSLColor; } else { tmp_SLColor = SellColor; } if ( StrToDouble( MarketOrders[i][6] ) > 0 && NormalizeDouble( SignalPoints*Point - ( StrToDouble( MarketOrders[i][7] ) - StrToDouble( MarketOrders[i][6] ) ), Digits ) >= 0.0 ) { tmp_TPColor = SellTPColor; } else { tmp_TPColor = SellColor; } } SetText( "Ticket_" + i, MarketOrders[i][0] , tmp_MainColor ); SetText( "OpenTime_" + i, MarketOrders[i][1] , tmp_MainColor ); SetText( "Type_" + i, MarketOrders[i][2] , tmp_MainColor ); SetText( "Lots_" + i, MarketOrders[i][3] , tmp_MainColor ); SetText( "OpenPrice_" + i, MarketOrders[i][4] , tmp_MainColor ); SetText( "StopLoss_" + i, MarketOrders[i][5] , tmp_SLColor ); SetText( "TakeProfit_" + i, MarketOrders[i][6] , tmp_TPColor ); SetText( "CurPrice_" + i, MarketOrders[i][7] , tmp_MainColor ); SetText( "Swap_" + i, MarketOrders[i][8] , tmp_MainColor ); SetText( "Profit_" + i, MarketOrders[i][9] , tmp_MainColor ); SetText( "Comment_" + i, MarketOrders[i][10] , tmp_MainColor ); } else { if ( !SummLineOK ) { string tmp_margin = StringConcatenate( "Margin: ", DoubleToStr( AccountMargin(), 2 ) ); string tmp_marginLevel = ""; if ( AccountMargin() > 0 ) { tmp_marginLevel = StringConcatenate( " MarginLevel: ", DoubleToStr( AccountEquity()/AccountMargin()*100, 2 ), "%" ); } SetText( "Ticket_" + i, StringConcatenate( "Balance: ", DoubleToStr( AccountBalance(), 2 ), " Equity: ", DoubleToStr( AccountEquity(), 2 ) ), MainColor ); SetText( "OpenTime_" + i ); SetText( "Type_" + i ); SetText( "Lots_" + i, StringConcatenate( tmp_margin, " FreeMargin: ", DoubleToStr( AccountFreeMargin(), 2 ), tmp_marginLevel ), MainColor ); SetText( "OpenPrice_" + i ); SetText( "StopLoss_" + i ); SetText( "TakeProfit_" + i ); SetText( "CurPrice_" + i ); SetText( "Swap_" + i ); SetText( "Profit_" + i, DoubleToStr( SummProfit, 2 ), MainColor ); SetText( "Comment_" + i ); i ++; SummLineOK = true; } if ( i <= curMarketOrder + curPendingOrder ) { if ( PendingOrders[i-curMarketOrder-1][2] == "BuyLimit" || PendingOrders[i-curMarketOrder-1][2] == "BuyStop" ) { tmp_MainColor = BuyColor; if ( NormalizeDouble( SignalPoints*Point - MathAbs( StrToDouble( PendingOrders[i-curMarketOrder-1][4] ) - StrToDouble( PendingOrders[i-curMarketOrder-1][7] ) ), Digits ) >= 0.0 ) { tmp_OPColor = BuyOPColor; } else { tmp_OPColor = BuyColor; } } else { tmp_MainColor = SellColor; if ( NormalizeDouble( SignalPoints*Point - MathAbs( StrToDouble( PendingOrders[i-curMarketOrder-1][4] ) - StrToDouble( PendingOrders[i-curMarketOrder-1][7] ) ), Digits ) >= 0.0 ) { tmp_OPColor = SellOPColor; } else { tmp_OPColor = SellColor; } } SetText( "Ticket_" + i, PendingOrders[i-curMarketOrder-1][0], tmp_MainColor ); SetText( "OpenTime_" + i, PendingOrders[i-curMarketOrder-1][1], tmp_MainColor ); SetText( "Type_" + i, PendingOrders[i-curMarketOrder-1][2], tmp_MainColor ); SetText( "Lots_" + i, PendingOrders[i-curMarketOrder-1][3], tmp_MainColor ); SetText( "OpenPrice_" + i, PendingOrders[i-curMarketOrder-1][4], tmp_OPColor ); SetText( "StopLoss_" + i, PendingOrders[i-curMarketOrder-1][5], tmp_MainColor ); SetText( "TakeProfit_" + i, PendingOrders[i-curMarketOrder-1][6], tmp_MainColor ); SetText( "CurPrice_" + i, PendingOrders[i-curMarketOrder-1][7], tmp_MainColor ); SetText( "Swap_" + i, PendingOrders[i-curMarketOrder-1][8], tmp_MainColor ); SetText( "Profit_" + i, PendingOrders[i-curMarketOrder-1][9], tmp_MainColor ); SetText( "Comment_" + i, PendingOrders[i-curMarketOrder-1][10],tmp_MainColor ); } else { SetText( "Ticket_" + i ); SetText( "OpenTime_" + i ); SetText( "Type_" + i ); SetText( "Lots_" + i ); SetText( "OpenPrice_" + i ); SetText( "StopLoss_" + i ); SetText( "TakeProfit_" + i ); SetText( "CurPrice_" + i ); SetText( "Swap_" + i ); SetText( "Profit_" + i ); SetText( "Comment_" + i ); } } } ObjectsRedraw(); return(0); } void vHistoryInit() { if ( LotDigits < 0 ) { LotDigits = 0; double tmp = MarketInfo( Symbol(), MODE_LOTSTEP ); while ( NormalizeDouble( 1.0 - tmp, 4 ) > 0.0 ) { tmp *= 10; LotDigits ++; } } if ( HistoryRows <= 0 ) { return(0); } vHistory_win = WindowFind( "vHistory" ); if ( IsTesting() ) { vHistory_win = vHistory_SubWindow; } if ( vHistory_win < 0 ) { return(-1); } int vshift = 13, shift1 = 3, shift2 = 60, shift3 = 160, shift4 = 220, shift5 = 260, shift6 = 325, shift7 = 385, shift8 = 445, shift9 = 545, shift10 = 610, shift11 = 665, shift12 = 720; if ( BigText ) { fontsize = 9; vshift = 15; shift1 = 3; shift2 = 70; shift3 = 185; shift4 = 255; shift5 = 305; shift6 = 380; shift7 = 450; shift8 = 520; shift9 = 635; shift10 = 710; shift11 = 775; shift12 = 840; } if ( vLabel( vHistory_win, "vhTicket_Head", shift1 , vshift ) < 0 ) { vHistory_win = -1; return; } SetText( "vhTicket_Head" , "Ticket" , MainColor ); vLabel( vHistory_win, "vhOpenTime_Head" , shift2 , vshift ); SetText( "vhOpenTime_Head" , "OpenTime" , MainColor ); vLabel( vHistory_win, "vhType_Head" , shift3 , vshift ); SetText( "vhType_Head" , "Type" , MainColor ); vLabel( vHistory_win, "vhLots_Head" , shift4 , vshift ); SetText( "vhLots_Head" , "Lots" , MainColor ); vLabel( vHistory_win, "vhOpenPrice_Head" , shift5 , vshift ); SetText( "vhOpenPrice_Head" , "OpenPrice" , MainColor ); vLabel( vHistory_win, "vhStopLoss_Head" , shift6 , vshift ); SetText( "vhStopLoss_Head" , "StopLoss" , MainColor ); vLabel( vHistory_win, "vhTakeProfit_Head" , shift7 , vshift ); SetText( "vhTakeProfit_Head" , "TakeProfit" , MainColor ); vLabel( vHistory_win, "vhCloseTime_Head" , shift8 , vshift ); SetText( "vhCloseTime_Head" , "CloseTime" , MainColor ); vLabel( vHistory_win, "vhClosePrice_Head" , shift9 , vshift ); SetText( "vhClosePrice_Head" , "ClosePrice" , MainColor ); vLabel( vHistory_win, "vhSwap_Head" , shift10, vshift ); SetText( "vhSwap_Head" , "Swap" , MainColor ); vLabel( vHistory_win, "vhProfit_Head" , shift11, vshift ); SetText( "vhProfit_Head" , "Profit" , MainColor ); vLabel( vHistory_win, "vhComment_Head" , shift12, vshift ); SetText( "vhComment_Head" , "Comment" , MainColor ); for ( int i = 0; i < HistoryRows; i ++ ) { vLabel( vHistory_win, "vhTicket_" + i, shift1 , vshift*(i+2) ); vLabel( vHistory_win, "vhOpenTime_" + i, shift2 , vshift*(i+2) ); vLabel( vHistory_win, "vhType_" + i, shift3 , vshift*(i+2) ); vLabel( vHistory_win, "vhLots_" + i, shift4 , vshift*(i+2) ); vLabel( vHistory_win, "vhOpenPrice_" + i, shift5 , vshift*(i+2) ); vLabel( vHistory_win, "vhStopLoss_" + i, shift6 , vshift*(i+2) ); vLabel( vHistory_win, "vhTakeProfit_" + i, shift7 , vshift*(i+2) ); vLabel( vHistory_win, "vhCloseTime_" + i, shift8 , vshift*(i+2) ); vLabel( vHistory_win, "vhClosePrice_" + i, shift9 , vshift*(i+2) ); vLabel( vHistory_win, "vhSwap_" + i, shift10, vshift*(i+2) ); vLabel( vHistory_win, "vhProfit_" + i, shift11, vshift*(i+2) ); vLabel( vHistory_win, "vhComment_" + i, shift12, vshift*(i+2) ); } } void vHistoryRefresh() { if ( HistoryRows <= 0 ) { return(0); } if ( vHistory_win < 0 ) { return(-1); } int _GetLastError, nowHistoryTotal = HistoryTotal(), curRowHistory = 0, digits; color tmp_Color, slColor, tpColor; if ( preHistoryTotal == nowHistoryTotal ) { return(0); } preHistoryTotal = nowHistoryTotal; for ( int z = nowHistoryTotal - 1; z >= 0; z -- ) { if ( !OrderSelect( z, SELECT_BY_POS, MODE_HISTORY ) ) { _GetLastError = GetLastError(); Print( "OrderSelect( ", z, ", SELECT_BY_POS, MODE_HISTORY ) - Error #", _GetLastError ); continue; } if ( !ShowCancelled ) { if ( StringFind( OrderComment(), "cancelled" ) >= 0 ) { continue; } } if ( !ShowExpired ) { if ( StringFind( OrderComment(), "expiration" ) >= 0 ) { continue; } } if ( OrderType() == OP_BUY || OrderType() == OP_BUYLIMIT || OrderType() == OP_BUYSTOP ) { tmp_Color = BuyColor; if ( OrderClosePrice() - OrderStopLoss() == 0.0 ) { slColor = BuySLColor; } else { slColor = BuyColor; } if ( OrderClosePrice() - OrderTakeProfit() == 0.0 ) { tpColor = BuyTPColor; } else { tpColor = BuyColor; } } else { tmp_Color = SellColor; if ( OrderClosePrice() - OrderStopLoss() == 0.0 ) { slColor = SellSLColor; } else { slColor = SellColor; } if ( OrderClosePrice() - OrderTakeProfit() == 0.0 ) { tpColor = SellTPColor; } else { tpColor = SellColor; } } digits = MarketInfo( OrderSymbol(), MODE_DIGITS ); SetText( "vhTicket_" + curRowHistory, OrderTicket() , tmp_Color ); SetText( "vhOpenTime_" + curRowHistory, TimeToStr( OrderOpenTime() ) , tmp_Color ); SetText( "vhType_" + curRowHistory, vOrderType( OrderType() ) , tmp_Color ); SetText( "vhLots_" + curRowHistory, DoubleToStr( OrderLots(), LotDigits ) , tmp_Color ); SetText( "vhOpenPrice_" + curRowHistory, DoubleToStr( OrderOpenPrice(), digits ) , tmp_Color ); SetText( "vhStopLoss_" + curRowHistory, DoubleToStr( OrderStopLoss(), digits ) , slColor ); SetText( "vhTakeProfit_" + curRowHistory, DoubleToStr( OrderTakeProfit(), digits ) , tpColor ); SetText( "vhCloseTime_" + curRowHistory, TimeToStr( OrderCloseTime() ) , tmp_Color ); SetText( "vhClosePrice_" + curRowHistory, DoubleToStr( OrderClosePrice(), digits ) , tmp_Color ); SetText( "vhSwap_" + curRowHistory, DoubleToStr( OrderSwap(), 2 ) , tmp_Color ); SetText( "vhProfit_" + curRowHistory, DoubleToStr( OrderProfit(), 2 ) , tmp_Color ); SetText( "vhComment_" + curRowHistory, OrderComment() , tmp_Color ); curRowHistory ++; if ( curRowHistory >= HistoryRows ) { break; } } } //+------------------------------------------------------------------+ // Ñîçäàíèå îáúåêòà "Òåêñòîâàÿ ìåòêà" ñ èìåíåì _LabelName â îêíå win. // Êîîðäèíàòû: õ = _LabelXDistance, ó = _LabelYDistance, óãîë - _LabelCorner. //+------------------------------------------------------------------+ int vLabel ( int win, string _LabelName, int _LabelXDistance, int _LabelYDistance, int _LabelCorner = 0 ) { int _GetLastError; ObjectDelete( _LabelName ); if ( !ObjectCreate( _LabelName, OBJ_LABEL, win, 0, 0 ) ) { _GetLastError = GetLastError(); if ( _GetLastError != 4200 ) { Print( "ObjectCreate( \"", _LabelName, "\", OBJ_LABEL,0,0,0 ) - Error #", _GetLastError ); return(-1); } } if ( !ObjectSet( _LabelName, OBJPROP_CORNER, _LabelCorner ) ) { _GetLastError = GetLastError(); Print( "ObjectSet( \"", _LabelName, "\", OBJPROP_CORNER, ", _LabelCorner, " ) - Error #", _GetLastError ); } if ( !ObjectSet( _LabelName, OBJPROP_XDISTANCE, _LabelXDistance ) ) { _GetLastError = GetLastError(); Print( "ObjectSet( \"", _LabelName, "\", OBJPROP_XDISTANCE, ", _LabelXDistance, " ) - Error #", _GetLastError ); } if ( !ObjectSet( _LabelName, OBJPROP_YDISTANCE, _LabelYDistance ) ) { _GetLastError = GetLastError(); Print( "ObjectSet( \"", _LabelName, "\", OBJPROP_YDISTANCE, ", _LabelYDistance, " ) - Error #", _GetLastError ); } if ( !ObjectSetText ( _LabelName, "", 8 ) ) { _GetLastError = GetLastError(); Print( "ObjectSetText( \"", _LabelName, "\", \"\", 8 ) - Error #", _GetLastError ); } } //+------------------------------------------------------------------+ // Ïðèñâîåíèå òåêñòà _LabelText îáúåêòó "Òåêñòîâàÿ ìåòêà" ñ èìåíåì _LabelName. //+------------------------------------------------------------------+ void SetText( string _LabelName, string _LabelText = "", color _LabelColor = Black ) { if ( !ObjectSetText( _LabelName, _LabelText, fontsize, "Arial", _LabelColor ) ) { int _GetLastError = GetLastError(); Print( "ObjectSetText( \"", _LabelName, "\", \"", _LabelText, "\", ", fontsize, "\"Arial\", ", _LabelColor, " ) - Error #", _GetLastError ); } } //+------------------------------------------------------------------+ // âîçâðàùàåò OrderType â âèäå òåêñòà //+------------------------------------------------------------------+ string vOrderType( int intOrderType ) { switch ( intOrderType ) { case OP_BUY: return("Buy" ); case OP_SELL: return("Sell" ); case OP_BUYLIMIT: return("BuyLimit" ); case OP_BUYSTOP: return("BuyStop" ); case OP_SELLLIMIT: return("SellLimit" ); case OP_SELLSTOP: return("SellStop" ); default: return("UnknownOrderType" ); } }
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Checks for the total of open orders
Other Features: