Come faccio a far filtrare l'indicatore al posto dell'avviso? - pagina 9

 
Maji:
Un suggerimento a tutti i membri, non usate routine di "count up" per chiudere le operazioni. Per esempio, non usate qualcosa come questo:

per (i = 0; i<t; i++)

{

if(OrderSelect(tik,SELECT_BY_TICKET)){

doppio prc = Bid;

if (op == OP_SELL) prc = Ask;

CloseOrder(tik, OrderLots(), prc);

}

Se stai usando ordini multipli, non chiuderà l'ultimo ordine. Usa una routine di "conto alla rovescia". Ecco la mia discussione con gli sviluppatori di Metaquotes quando mi sono imbattuto in questo irritante "bug".

http://www.metaquotes.net/forum/2018/

Ok, quindi come DOVREBBE essere? e questa linea farà ciò che voglio che faccia?

if (prc == Bid && currentlong minorts):

 
Maji:
Un suggerimento a tutti i membri, non usate routine di "count up" per chiudere le operazioni. Per esempio, non usate qualcosa come questo:

per (i = 0; i<t; i++)

{

if(OrderSelect(tik,SELECT_BY_TICKET)){

doppio prc = Bid;

if (op == OP_SELL) prc = Ask;

CloseOrder(tik, OrderLots(), prc);

}

Se stai usando ordini multipli, non chiuderà l'ultimo ordine. Usa una routine di "conto alla rovescia". Ecco la mia discussione con gli sviluppatori di Metaquotes quando mi sono imbattuto in questo irritante "bug".

http://www.metaquotes.net/forum/2018/

Ok, quindi come DOVREBBE essere? e questa linea farà ciò che voglio che faccia?

if (prc == Bid && currentlong minorts);

for (i = 0; i<t; i++)

{

if(OrderSelect(tik,SELECT_BY_TICKET)){

double prc = Bid;

if (op == OP_SELL) prc = Ask;

if (prc == Bid && currentlong minorts);

CloseOrder(tik, OrderLots(), prc);
 

Si prega di fare riferimento al link pubblicato nel mio precedente messaggio. C'è un codice di esempio in quel link.

 
Maji:
Si prega di fare riferimento al link postato nel mio precedente messaggio. C'è un codice di esempio in quel link.

Vedo questa linea dal campione...

for(trade=OrdersTotal()-1;trade>=0;trade--){

mentre capisco l'idea di contare all'indietro invece di contare in avanti

questo è il conteggio in due posti corretto?

void CloseOrders(int op)

{

int tik[30], t = 0;

for(int i =0;i<OrdersTotal();i++){//------counting forward error here

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){

if(OrderSymbol()==Symbol() && MagicNum==OrderMagicNumber() && OrderType() == op){

tik[t] = OrderTicket(); t++;

}

}

}

for (i = 0; i<t; i++)//------counting forward error here

{

if(OrderSelect(tik,SELECT_BY_TICKET)){

double prc = Bid;

if (op == OP_SELL) prc = Ask;

CloseOrder(tik, OrderLots(), prc);

}

}

}

Sono solo confuso su come cambiarli...sarebbe...

for(int i =0;i>OrdersTotal();i--){

e

for (i = 0; i>t; i--)

Sto ancora cercando di capire la questione del crossback.

 

Quello che segue è un esempio di una semplice routine di chiusura senza campane e fischietti. Penso che il codice sia abbastanza semplice per bagnarsi i piedi.

void CloseAll()

{

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol())

continue;

if(OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNum)

{

if(OrderType()==OP_BUY)

OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Blue);

if(OrderType()==OP_SELL)

OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);

}

}

}

 
Maji:
Quello che segue è un esempio di una semplice routine di chiusura senza campane e fischietti. Penso che il codice sia abbastanza semplice per bagnarsi i piedi.

void CloseAll()

{

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol())

continue;

if(OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNum)

{

if(OrderType()==OP_BUY && currentlong > minorts)//---I want to close long positions when the ema's crossback down

OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Blue);

if(OrderType()==OP_SELL) && currentlong < minorts)//---I want to close short positions when the ema's crossback up

OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);

}

}

}

}

Ok, semplice vaniglia, così va meglio...

[/PHP]

I get these errors when I paste this in...

Compiling 'whatever.mq4'...

'(' - function definition unexpected C:\Program Files\Interbank FX Trader 4-live mini\experts\whatever.mq4 (85, 14)

'trade' - variable not defined C:\Program Files\Interbank FX Trader 4-live mini\experts\whatever.mq4 (88, 6)

'trade' - variable not defined C:\Program Files\Interbank FX Trader 4-live mini\experts\whatever.mq4 (88, 28)

'trade' - variable not defined C:\Program Files\Interbank FX Trader 4-live mini\experts\whatever.mq4 (88, 37)

'trade' - variable not defined C:\Program Files\Interbank FX Trader 4-live mini\experts\whatever.mq4 (90, 15)

'MagicNum' - variable not defined C:\Program Files\Interbank FX Trader 4-live mini\experts\whatever.mq4 (94, 54)

'Slippage' - variable not defined C:\Program Files\Interbank FX Trader 4-live mini\experts\whatever.mq4 (97, 46)

')' - unbalanced right parenthesis C:\Program Files\Interbank FX Trader 4-live mini\experts\whatever.mq4 (99, 53)

'Slippage' - variable not defined C:\Program Files\Interbank FX Trader 4-live mini\experts\whatever.mq4 (100, 46)

')' - unbalanced right parenthesis C:\Program Files\Interbank FX Trader 4-live mini\experts\whatever.mq4 (100, 58)

'}' - unbalanced parentheses C:\Program Files\Interbank FX Trader 4-live mini\experts\whatever.mq4 (104, 1)

11 error(s), 0 warning(s)

[/PHP]

I don't know why it says 'trade' is an error it looks like trade is defined as an 'int'

ok whatever...so...let's see...

#property copyright "Copyright 2006, Aaragorn"

//+--------- settings may vary use at your own risk-----------------+

#include

//+--------------user inputs--------------------+

extern double Trendsetter = 250;

extern double Minortrendsetter = 150;

extern double LongEMA = 20;

extern double ShortEMA = 5;

extern double TrailingStop = 15;

extern double TrailingStopTrigger = 1;

extern double StopLoss = 186;

extern double TakeProfit = 250;

extern double Lots = 0.1;

extern double EquityStop = 9;

extern int Slippage = 3;

#define trade 0

#define MagicNum 0

//---- Custom "Channel-1" Indicator and Filter Parameters

extern int Hours=36;

extern color col=SkyBlue;

extern double TF = 60; //--which bar period for the custom indicator to use

extern double upperproximity = 30; //---disallows long orders within this proximity to resistance line

extern double lowerproximity = 30; //---disallows short orders within this proximity to the support line

//+-----------close based on not triggering trailing stop in allotted time----------------+

extern int MonitorInMinutes = 60; // minutes after open to check state of trade

extern int ThresholdMove = 11; // if after that time we don't have +'x' pips we will exit

extern int MinsMultiplier = 600; // multiplies the MonitorInMinutes to make minutes (if 'x'=60) into hours

//+----------------------end of allotted time user inputs-----------------------------+

//+-----------------------------end of user inputs----------------------------------+

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

//| expert start function

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

int start(){

CloseOrder();

int cnt, ticket;

if(Bars<100){

Print("bars less than 100");

return(0);

}

//+----------------------Get Moving Average(s) Data----------------------------------------+

double currentlong=iMA(NULL,0,LongEMA,0,MODE_EMA,PRICE_CLOSE,0);//--current period longEMA

double currentshort=iMA(NULL,0,ShortEMA,0,MODE_EMA,PRICE_CLOSE,0);//--current period shortEMA

double trendsetter=iMA(NULL,0,Trendsetter,0,MODE_EMA,PRICE_CLOSE,0);//--current period TrendsetterEMA

double minorts=iMA(NULL,0,Minortrendsetter,0,MODE_EMA,PRICE_CLOSE,0);//--current period MinortrendsetterEMA

double prevlong=iMA(NULL,0,LongEMA,0,MODE_EMA,PRICE_CLOSE,1);//--previous period longEMA

double prevshort=iMA(NULL,0,ShortEMA,0,MODE_EMA,PRICE_CLOSE,1);//--previous period shortEMA

double prevtrendsetter=iMA(NULL,0,Trendsetter,0,MODE_EMA,PRICE_CLOSE,1);//--previous period TrendsetterEMA

double prevminorts=iMA(NULL,0,Minortrendsetter,0,MODE_EMA,PRICE_CLOSE,1);//--previous period MinortrendsetterEMA

//+----------------------------end of Get Moving Average(s) Data-----------------------------+

//+--------------------channel filter---------------------------+

double resistance = iCustom(NULL,TF,"Channel-1",Hours,col,0,0);

double support = iCustom(NULL,TF,"Channel-1",Hours,col,2,0);

//+------------------- end channel filter------------------------+

//+---------Obnoxious money management code needs revision-----------------+

int total=OrdersTotal();

if(total<1){

if(AccountFreeMargin()<(1000*Lots)){

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

//+---------end of Obnoxious money management code-----------------+

//+---------------------------------------Order Entry--------------------------------------------+

//+---------enter long positions----------+

if (prevshortcurrentlong && currentshort>currentlong>Trendsetter && Ask > resistance - upperproximity*Point){ //---conditions to open long positions change as desired

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point, NULL,16384,0,Green);

if(ticket>0){

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Error opening BUY order : ",GetLastError());

return(0);

}

//+---------enter short positions----------+

if (prevshort>prevlong && currentshort<currentlong && currentshort<currentlong<Trendsetter && Ask < support + lowerproximity*Point){ //---conditions to open short positions change as desired

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point, NULL,16384,0,Red);

if(ticket>0) {

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Error opening SELL order : ",GetLastError());

return(0);

}

}

//+---------end of order entry-------------------------+

//+------close on moving average cross-----------------+

void CloseAll()

{

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol())

continue;

if(OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNum)

{

if(OrderType()==OP_BUY && currentlong > minorts)//---I want to close long positions when the ema's crossback down

OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Blue);

if(OrderType()==OP_SELL && currentlong < minorts)//---I want to close short positions when the ema's crossback up

OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);

}

}

}

}

//+--------end of close on moving average cross--------+

now by adding this

extern int Slippage = 3;

#define trade 0

#define MagicNum 0

I'm down to...

[PHP]Compiling 'whatever.mq4'...

'(' - function definition unexpected C:\Program Files\Interbank FX Trader 4-live mini\experts\whatever.mq4 (87, 14)

'}' - unbalanced parentheses C:\Program Files\Interbank FX Trader 4-live mini\experts\whatever.mq4 (106, 1)

2 error(s), 0 warning(s)

I don't know what to do about these two.

[PHP]//+------close on moving average cross-----------------+

void CloseAll()//function definition unexpected error occurs here

{

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol())

continue;

if(OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNum)

{

if(OrderType()==OP_BUY && currentlong > minorts)//---I want to close long positions when the ema's crossback down

OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Blue);

if(OrderType()==OP_SELL && currentlong < minorts)//---I want to close short positions when the ema's crossback up

OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);

}

}

}

}//--------unblanced parentheses error occurs here

 

Dove hai definito la funzione"CloseOrder(); "? Il nome della funzione di chiusura che ho postato è diverso... CloseAll()

Vedi se questo risolve i problemi.

 

Ok, questo ha senso... quindi immagino che ci siano strategie di chiusura concorrenti qui... il CloseOrder() era relativo alla funzione close on time in trade che non sono mai riuscito a risolvere per fare quello che volevo. Quindi immagino che per il momento e per il presente scopo lo elimino e basta, eh?...qualcuno mi ha mostrato un bel trucco per disattivare il codice, basta aggiungere il "//" davanti alla linea...

ecco il tutto....as è..

#property copyright "Copyright 2006, Aaragorn"

//+--------- settings may vary use at your own risk-----------------+

#include

//+--------------user inputs--------------------+

extern double Trendsetter = 250;

extern double Minortrendsetter = 150;

extern double LongEMA = 20;

extern double ShortEMA = 5;

extern double TrailingStop = 15;

extern double TrailingStopTrigger = 1;

extern double StopLoss = 186;

extern double TakeProfit = 250;

extern double Lots = 0.1;

extern double EquityStop = 9;

extern int Slippage = 3;

#define trade 0

#define MagicNum 0

//---- Custom "Channel-1" Indicator and Filter Parameters

extern int Hours=36;

extern color col=SkyBlue;

extern double TF = 60; //--which bar period for the custom indicator to use

extern double upperproximity = 30; //---disallows long orders within this proximity to resistance line

extern double lowerproximity = 30; //---disallows short orders within this proximity to the support line

//+-----------close based on not triggering trailing stop in allotted time----------------+

extern int MonitorInMinutes = 60; // minutes after open to check state of trade

extern int ThresholdMove = 11; // if after that time we don't have +'x' pips we will exit

extern int MinsMultiplier = 600; // multiplies the MonitorInMinutes to make minutes (if 'x'=60) into hours

//+----------------------end of allotted time user inputs-----------------------------+

//+-----------------------------end of user inputs----------------------------------+

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

//| expert start function

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

int start(){

//+--turned off--+CloseOrder();

int cnt, ticket;

if(Bars<100){

Print("bars less than 100");

return(0);

}

//+----------------------Get Moving Average(s) Data----------------------------------------+

double currentlong=iMA(NULL,0,LongEMA,0,MODE_EMA,PRICE_CLOSE,0);//--current period longEMA

double currentshort=iMA(NULL,0,ShortEMA,0,MODE_EMA,PRICE_CLOSE,0);//--current period shortEMA

double trendsetter=iMA(NULL,0,Trendsetter,0,MODE_EMA,PRICE_CLOSE,0);//--current period TrendsetterEMA

double minorts=iMA(NULL,0,Minortrendsetter,0,MODE_EMA,PRICE_CLOSE,0);//--current period MinortrendsetterEMA

double prevlong=iMA(NULL,0,LongEMA,0,MODE_EMA,PRICE_CLOSE,1);//--previous period longEMA

double prevshort=iMA(NULL,0,ShortEMA,0,MODE_EMA,PRICE_CLOSE,1);//--previous period shortEMA

double prevtrendsetter=iMA(NULL,0,Trendsetter,0,MODE_EMA,PRICE_CLOSE,1);//--previous period TrendsetterEMA

double prevminorts=iMA(NULL,0,Minortrendsetter,0,MODE_EMA,PRICE_CLOSE,1);//--previous period MinortrendsetterEMA

//+----------------------------end of Get Moving Average(s) Data-----------------------------+

//+--------------------channel filter---------------------------+

double resistance = iCustom(NULL,TF,"Channel-1",Hours,col,0,0);

double support = iCustom(NULL,TF,"Channel-1",Hours,col,2,0);

//+------------------- end channel filter------------------------+

//+---------Obnoxious money management code needs revision-----------------+

int total=OrdersTotal();

if(total<1){

if(AccountFreeMargin()<(1000*Lots)){

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

//+---------end of Obnoxious money management code-----------------+

//+---------------------------------------Order Entry--------------------------------------------+

//+---------enter long positions----------+

if (prevshortcurrentlong && currentshort>currentlong>Trendsetter && Ask > resistance - upperproximity*Point){ //---conditions to open long positions change as desired

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point, NULL,16384,0,Green);

if(ticket>0){

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Error opening BUY order : ",GetLastError());

return(0);

}

//+---------enter short positions----------+

if (prevshort>prevlong && currentshort<currentlong && currentshort<currentlong<Trendsetter && Ask < support + lowerproximity*Point){ //---conditions to open short positions change as desired

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point, NULL,16384,0,Red);

if(ticket>0) {

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES )) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Error opening SELL order : ",GetLastError());

return(0);

}

}

//+---------end of order entry-------------------------+

//+------close on moving average cross-----------------+

void CloseAll()//function definition unexpected error occurs here

{

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol())

continue;

if(OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNum)

{

if(OrderType()==OP_BUY && currentlong > minorts)//---I want to close long positions when the ema's crossback down

OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Blue);

if(OrderType()==OP_SELL && currentlong < minorts)//---I want to close short positions when the ema's crossback up

OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);

}

}

}

}//--------unblanced parentheses error occurs here

//+--------end of close on moving average cross--------+

//+-------------------------Trailing Stop Code------------------------------------+

for(cnt=0;cnt<total;cnt++) {

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && OrderSymbol()==Symbol()) {

if(OrderType()==OP_BUY){

if(TrailingStop>0) {

if(Bid-OrderOpenPrice()>Point*TrailingStopTrigger) {

if(OrderStopLoss()<Bid-Point*TrailingStop) {

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

}

}

}else{

if(TrailingStop>0) {

if((OrderOpenPrice()-Ask)>(Point*TrailingStopTrigger)) {

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) {

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

return(0);

}

}

}

}

//+-------------------------End of Trailing Stop Code----------------------------+

//+---------------------Equity Stop Code---------------------------+

if((AccountEquity()+ EquityStop)<AccountBalance()) {

{

int ttotal = OrdersTotal();

for(int i=ttotal-1;i>=0;i--)

{

OrderSelect(i, SELECT_BY_POS);

int type = OrderType();

bool result = false;

switch(type)

{

//Close opened long positions

case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );

break;

//Close opened short positions

case OP_SELL : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );

}

if(result == false)

{

Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );

Sleep(3000);

}

}

return(0);

}

}

}

}

}

//+---------------------End of Equity Stop Code---------------------------+

//|

//+---------------------Close Based on Time-------------------------------+

//+--------------needs revision, not working as desired---------------------+

//+------------I want it to close IF and ONLY IF trailing stop is NOT triggered-------------+

//+--turned off--+void CloseOrder()

//+--turned off--+{

//+--turned off--+ double Profit=ThresholdMove*Point;

//+--turned off--+ int total = OrdersTotal();

//+--turned off--+ for (int cnt = 0 ; cnt < total ; cnt++)

//+--turned off--+ {

//+--turned off--+ OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

//+--turned off--+ if ((CurTime()-OrderOpenTime())>MonitorInMinutes*60*MinsMultiplier)

//+--turned off--+ {

//+--turned off--+ if(OrderSymbol()==Symbol() && OrderType()==OP_BUY && Bid-Profit<OrderOpenPrice() )

//+--turned off--+ {

//+--turned off--+ OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

//+--turned off--+ }

//+--turned off--+ if(OrderSymbol()==Symbol() && OrderType()==OP_SELL && Bid+Profit>OrderOpenPrice())

//+--turned off--+ {

//+--turned off--+ OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);

//+--turned off--+ }

//+--turned off--+ }

//+--turned off--+ }

//+--turned off--+}

//+---------------------------end of close on time code---------------+

gli stessi due errori accadono ancora durante la compilazione.

 

Ok, sto ancora aspettando che arrivi un'email. Quindi... qualche altro minuto da ammazzare.

Dovete tagliare la funzione closeall e incollarla fuori dal ciclo iniziale. È una funzione separata. Poi devi chiamare la funzione closeall dal ciclo iniziale dove vuoi che chiuda gli scambi. Penso che tu debba studiare questo concetto di chiamata di funzioni prima di andare avanti.

 
Maji:
Ok, sto ancora aspettando che arrivi un'email. Quindi... qualche altro minuto da ammazzare. Devi tagliare la funzione closeall e incollarla fuori dal ciclo iniziale. È una funzione separata. Poi devi chiamare la funzione closeall dal ciclo iniziale dove vuoi che chiuda gli scambi. Penso che tu debba studiare questo concetto di chiamata di funzioni prima di andare avanti.

finora da quello che posso vedere nell'editor sulle funzioni sta cercando dei parametri e non ne vedo specificati nel ()?

...dici che devo 'tagliare' e 'incollare al di fuori del ciclo iniziale'.

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

//| expert start function

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

CloseAll();

int start(){

//+--turned off--+CloseOrder(); [/PHP]

this gives the same two errors plus this error

'CloseAll' - expression on global scope not allowed C:\Program Files\Interbank FX Trader 4-live mini\experts\whatever.mq4 (33, 1)

when I put it next to where the other one was like this...

[PHP]int start(){

//+--turned off--+CloseOrder();

CloseAll();

che lascia ancora i due errori in fondo alla pagina come se non facesse alcuna differenza. Hai ragione non capisco affatto questa cosa della chiamata di funzione.

Sai come farlo funzionare?

Sto guardando qui http://www.metatrader.info/node/53 su due piedi non vedo cosa c'è di sbagliato.