[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 420
Il problema è il seguente: il valore della variabile TP per qualche motivo si trova solo per il primo valore di j , mentre il valore della variabile Price si trova per tutti i valori di j .
Come posso ottenere tutti i valori di TP per tutti i valori di j? Qual è il mio errore?
Per favore, ditemi perché l'Expert Advisor non può aprire i trade nel trading reale, anche se nello Strategy Tester apre tutto normalmente? E non ci sono errori nel registro. Il server demo di Alpari.
Per favore, ditemi perché l'Expert Advisor non può aprire i trade nel trading reale, anche se nello Strategy Tester apre tutto normalmente? E non ci sono errori nel registro. Il server demo di Alpari.
è difficile da dire - ci sono molte varianti.... qualche altro dettaglio che puoi darmi?
è difficile da dire - ci sono molte opzioni.... Vorrei sapere più dettagli.
Non so, tutto sembra ok, tutto funziona come un orologio nel tester, ma sul conto demo il tempo è già arrivato, ma nessun trade è stato aperto e anche per la prossima ora. Forse dovresti guardare il codice.
Non nel log o altrove non c'è nessun errore. Se non ci sono errori nel codice (beh, forse ci sono alcuni bug nel terminale), allora è più probabile che io abbia fatto un casino con i tempi.
Se non avete problemi, non riesco a trovare un buon programmatore, ho scritto un EA con TS semplice, ma non funziona correttamente!
Quindi, guarda l'immagine, l'ordine di apertura all'intersezione di 2 MA, veloce attraversa una MA lenta dal basso verso l'alto - comprare e viceversa, il consulente non ha idea di come aprire gli ordini, un esempio eloquente nella foto:
1 - comprare il 03.11.2011, nessun crossover nelle vicinanze;
3 - vendere il 04.11.2011, stessa cosa;
5 - comprare il 07.11.2011; non è chiaro perché questo ordine è aperto.
Ho anche visto il codice stesso:
externint period_EMA = 85,
period_WMA = 5,
period_RSI = 14,
stoploss = 0,
takeprofit = 500,
risk = 10,
Magic = 777;
externbool CloseCounter = false;
externdouble Lot = 0.1;
externint TrailingStop = 70; //если= 0, то трейлинг по фракталам или свечамexternint Tip.Fr.or.Candl = 1; //если= 0, то трейлинг по фракталам //если= 1, то трейлинг по свечам//--------------------------------------------------------------------double SL,TP,LOT;
int TimeBar;
//--------------------------------------------------------------------int start()
{
if (TimeBar==Time[0]) return(0);
double EMA0 = iMA(NULL,0,period_EMA,0,MODE_EMA, PRICE_OPEN,0);
double WMA0 = iMA(NULL,0,period_WMA,0,MODE_LWMA,PRICE_OPEN,0);
double EMA1 = iMA(NULL,0,period_EMA,0,MODE_EMA, PRICE_OPEN,1);
double WMA1 = iMA(NULL,0,period_WMA,0,MODE_LWMA,PRICE_OPEN,1);
double RSI = iRSI(NULL,0,period_RSI,PRICE_OPEN,0);
if (EMA0 < WMA0 && EMA1 > WMA1 && RSI > 50)
{
TimeBar=Time[0];
if (takeprofit!=0) TP = Ask + takeprofit*Point;
if (stoploss!=0) SL = Ask - stoploss* Point;
LOT = LOT(risk,1);
if (CloseCounter) CLOSEORDER("Sell");
OPENORDER ("Buy");
}
if (EMA0 > WMA0 && EMA1 < WMA1 && RSI < 50)
{
TimeBar=Time[0];
if (takeprofit!=0) TP = Bid - takeprofit*Point;
if (stoploss!=0) SL = Bid + stoploss* Point;
LOT = LOT(risk,1);
if (CloseCounter) CLOSEORDER("Buy");
OPENORDER ("Sell");
}
TrailingStop();
return(0);
}
//--------------------------------------------------------------------void CLOSEORDER(string ord)
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol()!=Symbol()||Magic!=OrderMagicNumber()) continue;
if (OrderType()==OP_BUY && ord=="Buy")
OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE);
if (OrderType()==OP_SELL && ord=="Sell")
OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);
}
}
}
//--------------------------------------------------------------------void OPENORDER(string ord)
{
int error;
if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, LOT,Ask,2,SL,TP,"EMA WMA RSI",Magic,3);
if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,LOT,Bid,2,SL,TP,"EMA WMA RSI",Magic,3);
if (error==-1) ShowERROR(error,0,0);
return;
}
//--------------------------------------------------------------------void ShowERROR(int Ticket,double SL,double TP)
{
int err=GetLastError();
switch ( err )
{
case1: return;
case2: Alert("Нет связи с торговым сервером " ,Ticket," ",Symbol());return;
case130: Alert("Error близкие стопы Ticket ", Ticket," ",Symbol());return;
case134: Alert("Недостаточно денег ", Ticket," ",Symbol());return;
case146: Alert("Error Подсистема торговли занята ", Ticket," ",Symbol());return;
case129: Alert("Error Неправильная цена ", Ticket," ",Symbol());return;
case131: Alert("Error Неправильный объем ", Ticket," ",Symbol());return;
default: Alert("Error ",err," Ticket ", Ticket," ",Symbol());return;
}
}
//--------------------------------------------------------------------double LOT(int risk,int ord)
{
if (Lot!=0) return(Lot);
double MINLOT = MarketInfo(Symbol(),MODE_MINLOT);
LOT = AccountFreeMargin()*risk/100/MarketInfo(Symbol(),MODE_MARGINREQUIRED)/ord;
if (LOT>MarketInfo(Symbol(),MODE_MAXLOT)) LOT = MarketInfo(Symbol(),MODE_MAXLOT);
if (LOT<MINLOT) LOT = MINLOT;
if (MINLOT<0.1) LOT = NormalizeDouble(LOT,2); else LOT = NormalizeDouble(LOT,1);
return(LOT);
}
//--------------------------------------------------------------------void TrailingStop()
{
int tip,Ticket;
bool error;
double StLo,OSL,OOP;
for (int i=0; i<OrdersTotal(); i++)
{ if (OrderSelect(i, SELECT_BY_POS)==true)
{ tip = OrderType();
if (tip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
OSL = OrderStopLoss();
OOP = OrderOpenPrice();
Ticket = OrderTicket();
if (tip==OP_BUY)
{
StLo = SlLastBar(1,Bid,Tip.Fr.or.Candl,TrailingStop);
if (StLo <= OOP) continue;
if (StLo > OSL)
{ error=OrderModify(Ticket,OOP,NormalizeDouble(StLo,Digits),
OrderTakeProfit(),0,White);
Comment("TrailingStop ",Ticket," ",TimeToStr(TimeCurrent(),TIME_MINUTES));
Sleep(500);
if (!error) Comment("Error order ",Ticket," TrailingStop ",
GetLastError()," ",Symbol()," SL ",StLo);
}
}
if (tip==OP_SELL)
{
StLo = SlLastBar(-1,Ask,Tip.Fr.or.Candl,TrailingStop);
if (StLo==0) continue;
if (StLo >= OOP) continue;
if (StLo < OSL || OSL==0 )
{ error=OrderModify(Ticket,OOP,NormalizeDouble(StLo,Digits),
OrderTakeProfit(),0,White);
Comment("TrailingStop "+Ticket," ",TimeToStr(TimeCurrent(),TIME_MINUTES));
Sleep(500);
if (!error) Comment("Error order ",Ticket," TrailingStop ",
GetLastError()," ",Symbol()," SL ",StLo);
}
}
}
}
}
}
//--------------------------------------------------------------------double SlLastBar(int tip,double price, int tipFr, int tral)
{
double fr;
int jj,ii,delta=5;
if (tral!=0)
{
if (tip==1) fr = Bid - tral*Point;
else fr = Ask + tral*Point;
}
else
{
if (tipFr==0)
{
if (tip== 1)
for (ii=1; ii<100; ii++)
{
fr = iFractals(NULL,0,MODE_LOWER,ii);
if (fr!=0) if (price-delta*Point > fr) break;
else fr=0;
}
if (tip==-1)
for (jj=1; jj<100; jj++)
{
fr = iFractals(NULL,0,MODE_UPPER,jj);
if (fr!=0) if (price+delta*Point < fr) break;
else fr=0;
}
}
else
{
if (tip== 1)
for (ii=1; ii<100; ii++)
{
fr = iLow(NULL,0,ii);
if (fr!=0) if (price-delta*Point > fr) break;
else fr=0;
}
if (tip==-1)
for (jj=1; jj<100; jj++)
{
fr = iHigh(NULL,0,jj);
if (price+delta*Point < fr) break;
else fr=0;
}
}
}
/* if (tip== 1)
{
ObjectDelete("SL Buy");
ObjectDelete("SL-");
ObjectCreate("SL Buy",OBJ_ARROW,0,TIME,fr,0,0,0,0);
ObjectSet ("SL Buy",OBJPROP_ARROWCODE,6);
ObjectSet ("SL Buy",OBJPROP_COLOR, Blue);
ObjectCreate("SL-",OBJ_ARROW,0,TIME,price-delta*POINT,0,0,0,0);
ObjectSet ("SL-",OBJPROP_ARROWCODE,4);
ObjectSet ("SL-",OBJPROP_COLOR, Blue);
}
if (tip==-1)
{
ObjectDelete("SL Sell");
ObjectDelete("SL+");
ObjectCreate("SL Sell",OBJ_ARROW,0,TIME,fr,0,0,0,0);
ObjectSet ("SL Sell",OBJPROP_ARROWCODE,6);
ObjectSet ("SL Sell", OBJPROP_COLOR, Green);
ObjectCreate("SL+",OBJ_ARROW,0,TIME,price+delta*POINT,0,0,0,0);
ObjectSet ("SL+",OBJPROP_ARROWCODE,4);
ObjectSet ("SL+",OBJPROP_COLOR, Green);
}*/return(fr);
}
//--------------------------------------------------------------------
Buon pomeriggio, per favore consigliate cosa significa l'errore "2011.12.10 12:46:26 TestGenerator: unmatched data error (volume limit 2225 at 2011.11.29 11:00 is exceeded)" e come può essere corretto....
Salve.
Ho creato il seguente ciclo:
Il problema è il seguente: il valore della variabile TP per qualche motivo si trova solo per il primo valore di j , mentre il valore della variabile Price si trova per tutti i valori di j .
Come posso ottenere tutti i valori di TP per tutti i valori di j? Qual è il mio errore?
Grazie in anticipo.
Come posso trovare tutti i valori di TP per tutti i valori di j? Qual è il mio errore?
Non devo rispondere alla domanda, l'ho capito da solo.
Ciao, potresti per favore dirmi come trovare il minimo e il massimo dell'ultima candela per esempio
L'ultimo è quello che non si è ancora formato completamente?
Per favore, ditemi perché l'Expert Advisor non può aprire i trade nel trading reale, anche se nello Strategy Tester apre tutto normalmente? E non ci sono errori nel registro. Il server demo di Alpari.
Per favore, ditemi perché l'Expert Advisor non può aprire i trade nel trading reale, anche se nello Strategy Tester apre tutto normalmente? E non ci sono errori nel registro. Il server demo di Alpari.
è difficile da dire - ci sono molte varianti.... qualche altro dettaglio che puoi darmi?
è difficile da dire - ci sono molte opzioni.... Vorrei sapere più dettagli.
Non nel log o altrove non c'è nessun errore. Se non ci sono errori nel codice (beh, forse ci sono alcuni bug nel terminale), allora è più probabile che io abbia fatto un casino con i tempi.Non so, tutto sembra ok, tutto funziona come un orologio nel tester, ma sul conto demo il tempo è già arrivato, ma nessun trade è stato aperto e anche per la prossima ora. Forse dovresti guardare il codice.
L'ultimo è quello che non si è ancora formato completamente?
Se non avete problemi, non riesco a trovare un buon programmatore, ho scritto un EA con TS semplice, ma non funziona correttamente!
Quindi, guarda l'immagine, l'ordine di apertura all'intersezione di 2 MA, veloce attraversa una MA lenta dal basso verso l'alto - comprare e viceversa, il consulente non ha idea di come aprire gli ordini, un esempio eloquente nella foto:
1 - comprare il 03.11.2011, nessun crossover nelle vicinanze;
3 - vendere il 04.11.2011, stessa cosa;
5 - comprare il 07.11.2011; non è chiaro perché questo ordine è aperto.
Ho anche visto il codice stesso:
Grazie mille in anticipo!
Buon pomeriggio, per favore consigliate cosa significa l'errore "2011.12.10 12:46:26 TestGenerator: unmatched data error (volume limit 2225 at 2011.11.29 11:00 is exceeded)" e come può essere corretto....