[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 593

 
chief2000:

Quando testiamo e ottimizziamo, il più delle volte usiamo una coppia di valute, otteniamo un profitto accettabile e un drawdown. Poi lo ripetiamo per altre valute. Ma alla fine un Expert Advisor dovrà negoziare tutte le valute che ci interessano da un solo conto di trading. Si dice che il drawdown "totale" previsto può essere migliore del drawdown ottenuto per ogni valuta individualmente (ho visto questa opinione diverse volte da qualche parte). Ma può essere molto peggio se diversi Expert Advisors entrano in una striscia perdente allo stesso tempo.

Sono anche interessato all'esperienza dei trader su questo argomento. Vorrei proporre un video clip molto interessante di Seaboss

http://taverno.livejournal.com/2010/04/10/ Total Equity Management in Seaboss è implementato per Omega, ci sono implementazioni simili per MT?

 
Buona sera, cari membri del forum! Ho contattato nel pomeriggio, nessuno mi ha risposto - ho bisogno di un indicatore che visualizzi linee orarie verticali nella finestra del terminale, sicuramente ce n'è uno già pronto, mi consigliate dove trovarlo?
 
root:
Buona sera, cari membri del forum! Li ho contattati durante il giorno ma nessuno ha reagito - ho bisogno di un indicatore che mostri linee orarie verticali nella finestra del terminale, sicuramente ce n'è uno già pronto, potresti dirmi dove trovarlo?

Probabilmente la ragione per cui non ho sentito nessuna risposta è che è una cosa semplice scrivere un tale indicatore e probabilmente nessuno ne avrà bisogno.
 

vik-777:

Aiutami a risolvere questo problema

facendo un campionamento di tutte le posizioni chiuse

per (int i=0; i<OrdersHistoryTotal(); i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true)

dopo filtrare per numero magico

se (OrderMagicNumber()==12)

il filtro corrisponde a 3 posizioni ma ho bisogno solo dell'ultima chiusa da un numero magico

Non riesco a capire come lasciare solo l'ultimo?

Grazie

Qualcuno può aiutarmi che nessuno ha affrontato
 
vik-777:
Qualcuno può aiutarmi? Non è mai successo a nessuno?

OrderCloseTime() per aiutare
 
Figar0:

OrderCloseTime() per aiutare
E allora? Posso usarlo per trovare l'ultimo ordine chiuso e ho bisogno dell'ultimo ordine chiuso con un mago. dimmi come posso confrontare più ordini usando OrderCloseTime()?
 
vik-777:
E allora? Posso trovare l'ultimo ordine chiuso e ho bisogno dell'ultimo ordine chiuso con un mago, ditemi come fare un confronto di più ordini per OrderCloseTime()?

int LastClose =0;
int LastTicket;
for (int i=0; i<OrdersHistoryTotal(); i++)
{
  if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true)
  {
    if (OrderMagicNumber()==12)
    {
      if (OrderCloseTime()>LastClose)
      {
        LastClose=OrderCloseTime();
        LastTicket=OrderTicket();
      }
    }
  }
}

if (LastClose>0)
{
  if(OrderSelect(LastTicket, SELECT_BY_TICKET, MODE_HISTORY)==true)
  {
  //// Тра-та-та
  }
}
È troppo rozzo e diretto. Può essere più bello e laconico...
 
Figar0:

Rooty-tooty e in fronte. Potrebbe essere più bello e più succinto...
Grazie mille, molto obbligato.
 
Craft:

Sono anche interessato all'esperienza dei trader su questo argomento. Vorrei suggerire un video clip molto interessante di Seaboss

http://taverno.livejournal.com/2010/04/10/ Seaboss ha implementato l'Equity Management per Omega, ci sono implementazioni simili per MT?

Ecco qualcosa che ho trovato (non l'ho ancora letto, ma sembra essere in tema)

https://www.mql5.com/ru/forum/125825

 

Vopshchem ho preso la teoria delle probabilità e statisticamente se il margine dell'ordine sarà in un raggio di 50 pip dal prezzo, allora all'ordine di apertura con un profitto di 10 pip è più facile da raggiungere - se c'è anche uno stop loss di 10 pip (anche lo spread non è un problema) il movimento di una tendenza è una grande cosa ...

Aggiungere uno stop loss, indipendentemente dallo StepStop

//+------------------------------------------------------------------+
//| Volfram.mq4 |
//| Vova-x@list.ru |
//| |
//+------------------------------------------------------------------+
#property copyright "Vova-x@list.ru"
#proprietà link ""
//-----------------------------------------
extern TakeProfit=10;
extern int StepStop=45;
extern double Lots=0.01;
extern bool MoneyManagement=true;
extern inttern MarginPercent=10;
//-------------------------------------------
int level_sell_stop;
int level_buy_stop;

//----------------------------------------------------------
void init()
{
// int minstop=MarketInfo(Symbol(),MODE_STOPLEVEL);
//Stampa("levelbuy_stop: "+minstop;)
}
//-----------------------------------------------------------
void start()
{
if (!IsTradeAllowed()) return;
level_buy_stop=0;
level_sell_stop=0;
StepingStop();
StepingPendings();
se (TotalBuy ()==0 && TotalBuyStop ()==0) SetBuyStop ();
se (TotalSell()==0 && TotalSellStop()==0) SetSellStop();
Comment("Level Buy Stop=",level_buy_stop*Point,
"\n", "Level Sell Stop=",level_sell_stop*Point);
}
//---------------------------------------------------------------------------------------------
void StepingStop()
{
se (StepStop<1) ritorno;
int ask, bid, open, stop, x;
doppia perdita;
per (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
se (OrderSymbol()!=Symbol())
se (OrderType()==OP_BUY)
{
bid=MathRound(Bid/Point);
open=MathRound(OrderOpenPrice()/Point);
stop=MathRound(OrderStopLoss()/Point);
x=(bid-open)/StepStop; x--; x*=StepStop;
level_sell_stop=open+x;
se (stop>=open+x)
perdita=(open+x)*Punto;
OrderModify(OrderTicket(),OrderOpenPrice(),loss,OrderTakeProfit(),0,CLR_NONE);
}
se (OrderType()==OP_SELL)
{
ask=MathRound(Ask/Point);
open=MathRound(OrderOpenPrice()/Point);
stop=MathRound(OrderStopLoss()/Point);
x=(open-ask)/StepStop; x--; x*=StepStop;
level_buy_stop=open-x;
se (stop>0 && stop<=open-x)
perdita=(open-x)*Punto;
OrderModify(OrderTicket(),OrderOpenPrice(),loss,OrderTakeProfit(),0,CLR_NONE);
}
}
}
//----------------------------------------------------------------------------
void PassaggioPendings()
{
int ask, bid, open;
doppio prezzo, perdita, profitto;
per (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
se (OrderSymbol()!=Symbol())
se (OrderType()==OP_BUYSTOP)
{
se (level_buy_stop==0)
open=MathRound(OrderOpenPrice()/Point);
se (open<=level_buy_stop)
price=level_buy_stop*Point;
perdita=prezzo-StepStop*Punto;
profitto=0; se (TakeProfit>0) profitto=prezzo+TakeProfit*Point;
OrderModify(OrderTicket(),price,loss,profit,0,CLR_NONE);
}
se (OrderType()==OP_SELLSTOP)
{
se (level_sell_stop==0)
open=MathRound(OrderOpenPrice()/Point);
se (open>=level_sell_stop)
price=level_sell_stop*Point;
perdita=prezzo+StepStop*Punto;
profitto=0; se (TakeProfit>0) profitto=prezzo-TakeProfit*Point;
OrderModify(OrderTicket(),price,loss,profit,0,CLR_NONE);
}
}
}
//-------------------------------------------------------------------
void SetBuyStop()
{
double lots=LotsCounting();
double price=Bid+StepStop*Point;
doppia perdita=prezzo-StepStop*Punto;
double profit=0; if (TakeProfit>0) profit=price+TakeProfit*Point;
int ticket=OrderSend(Symbol(),OP_BUYSTOP,lots,price,0,loss,profit,"",0,0,CLR_NONE);
if (ticket<1) Print("Set a pending order failed with error #",GetLastError()," ",(GetLastError());
}

void SetSellStop()
{
double lots=LotsCounting();
double price=Ask-StepStop*Point;
doppia perdita=prezzo+StepStop*Punto;
double profit=0; if (TakeProfit>0) profit=price-TakeProfit*Point;
int ticket=OrderSend(Symbol(),OP_SELLSTOP,lots,price,0,loss,profit,"",0,0,0,CLR_NONE);
if (ticket<1) Print("Set a pending order failed with error #",GetLastError()," ",(GetLastError());
}


int TotalBuy()
{
int count=0;
per (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
se (OrderSymbol()!=Symbol()) continua;
se (OrderType()==OP_BUY) count++;
}
ritorno (count);
}

int TotalBuyStop()
{
int count=0;
per (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
se (OrderSymbol()!=Symbol()) continua;
se (OrderType()==OP_BUYSTOP) count++;
}
ritorno (count);
}

int TotalSell()
{
int count=0;
per (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
se (OrderSymbol()!=Symbol()) continua;
se (OrderType()==OP_SELL) count++;
}
ritorno (count);
}

int TotalSellStop()
{
int count=0;
per (int i=0; i<OrdersTotal(); i++)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
se (OrderSymbol()!=Symbol()) continua;
se (OrderType()==OP_SELLSTOP) count++;
}
ritorno (count);
}

doppio Conteggio dei lotti()
{
doppi lotti=Lotti;
se (MoneyManagement)
{
double lotsize=MarketInfo(Symbol(),MODE_LOTSIZE);
double freemargin=AccountFreeMargin();
lots=0; if (lotsize>0) lots=NormalizeDouble((MarginPercent*freemargin/lotsize),1);
}
if (lots>10) lots=NormalizeDouble(lots,0);
se (lotti<0,01) lotti=0,01;
ritorno (lotti);
}


// Fine