[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 420
O problema é o seguinte: o valor da variável TP por algum motivo é encontrado apenas para o primeiro valor de j , enquanto o valor da variável Preço é encontrado para todos os valores de j .
Como posso obter todos os valores de TP para todos os valores de j ? Qual é o meu erro?
Por favor, diga-me por que o Consultor Especialista pode não abrir negócios no comércio real, embora no Testador de Estratégia ele abra tudo normalmente? E não há erros no registro. O servidor de demonstração da Alpari.
Por favor, diga-me por que o Consultor Especialista pode não abrir negócios no comércio real, embora no Testador de Estratégia ele abra tudo normalmente? E não há erros no registro. O servidor de demonstração da Alpari.
é difícil dizer - há muitas variantes.... qualquer outro detalhe que você possa me dar?
é difícil dizer - há muitas opções.... gostaria de saber mais detalhes.
Não sei, tudo parece bem, tudo funciona como um relógio no testador, mas na conta demo a hora já chegou, mas nenhuma negociação foi aberta e para a hora seguinte também. Talvez você devesse olhar para o código.
Não no registro ou em qualquer outro lugar, não há erro. Se não houver erros no código (bem, talvez haja alguns bugs no terminal), então é mais provável que eu tenha errado com o tempo.
Se você não tiver nenhum problema, não consigo encontrar um bom programador, escrevi um EA com TS simples, mas ele não funciona corretamente!
Então, veja a foto, a abertura do pedido no cruzamento de 2 MAs, rapidamente cruza um MA lento de baixo para cima - compre e vice versa, o consultor não tem idéia de como abrir pedidos, um exemplo revelador na foto:
1 - comprar em 03.11.2011, sem cruzamento nas proximidades;
3 - vender em 04.11.2011, a mesma coisa;
5 - comprar em 07.11.2011; não está claro por que esta ordem é aberta.
Eu também vi o próprio código:
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);
}
//--------------------------------------------------------------------
Boa tarde, favor informar o que significa o erro "2011.12.10 12:46:26 TestGenerator: erro de dados incomparável (limite de volume 2225 em 2011.11.29 11:00 é excedido)" e como ele pode ser corrigido....
Olá.
Eu criei o seguinte laço:
O problema é o seguinte: o valor da variável TP por algum motivo é encontrado apenas para o primeiro valor de j , enquanto o valor da variável Preço é encontrado para todos os valores de j .
Como posso obter todos os valores de TP para todos os valores de j ? Qual é o meu erro?
Agradecemos antecipadamente.
Como posso encontrar todos os valores de TP para todos os valores de j ? Qual é o meu erro?
Eu não tenho que responder à pergunta, eu descobri por conta própria.
Olá, você poderia me dizer como encontrar o baixo e o alto da última vela, por exemplo?
É o último que ainda não se formou completamente?
Por favor, diga-me por que o Consultor Especialista pode não abrir negócios no comércio real, embora no Testador de Estratégia ele abra tudo normalmente? E não há erros no registro. O servidor de demonstração da Alpari.
Por favor, diga-me por que o Consultor Especialista pode não abrir negócios no comércio real, embora no Testador de Estratégia ele abra tudo normalmente? E não há erros no registro. O servidor de demonstração da Alpari.
é difícil dizer - há muitas variantes.... qualquer outro detalhe que você possa me dar?
é difícil dizer - há muitas opções.... gostaria de saber mais detalhes.
Não no registro ou em qualquer outro lugar, não há erro. Se não houver erros no código (bem, talvez haja alguns bugs no terminal), então é mais provável que eu tenha errado com o tempo.Não sei, tudo parece bem, tudo funciona como um relógio no testador, mas na conta demo a hora já chegou, mas nenhuma negociação foi aberta e para a hora seguinte também. Talvez você devesse olhar para o código.
A última é a que ainda não se formou completamente?
Se você não tiver nenhum problema, não consigo encontrar um bom programador, escrevi um EA com TS simples, mas ele não funciona corretamente!
Então, veja a foto, a abertura do pedido no cruzamento de 2 MAs, rapidamente cruza um MA lento de baixo para cima - compre e vice versa, o consultor não tem idéia de como abrir pedidos, um exemplo revelador na foto:
1 - comprar em 03.11.2011, sem cruzamento nas proximidades;
3 - vender em 04.11.2011, a mesma coisa;
5 - comprar em 07.11.2011; não está claro por que esta ordem é aberta.
Eu também vi o próprio código:
Muito obrigado de antemão!
Boa tarde, favor informar o que significa o erro "2011.12.10 12:46:26 TestGenerator: erro de dados incomparável (limite de volume 2225 em 2011.11.29 11:00 é excedido)" e como ele pode ser corrigido....