[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 407

 
costy_:

FLETCHING DE BASE... :-)

e também uma TERRENDA BÁSICA ))

se eur cai e dol cai, achatado


:-)
 
costy_:
as trocas foram levadas em conta no pensamento?
Sim, é isso mesmo. É por causa da propagação. Sem swaps, as posições são curtas. Portanto, o Expert Advisor deve ser ainda mais resiliente para que os lucros prevaleçam sobre as perdas. Obrigado, eu vou tentar.
 
costy_:
Sobre o fato de que depois do for...

Sim.... Resposta "Exaustiva". Cada evento tem que ter uma razão. Os profissionais, encontrando algumas falhas de funcionamento, sabem o que devem prestar atenção. Procurei no algoritmo várias vezes, mas não consigo encontrar a causa. É por isso que recorro aos profissionais para obter conselhos - qual poderia ser a razão?
 

Estou tentando abrir uma ordem pendente como esta:

//+---------Функция расчета лота---------------------------------------+
duplo GetLot(int Risk)
{
duplo Free=AccountFreeMargin();
double One_Lot=MarketInfo(Symbol(),MODE_MARGINREQUIRED);
double Min_Lot=MarketInfo(Symbol(),MODE_MINLOT);
double Max_Lot=MarketInfo(Symbol(),MODE_MAXLOT);
double Step=MarketInfo(Symbol(),MODE_LOTSTEP);
double Lot=MathFloor(Free*Risk/100/One_Lot/Step)*Step;
if(Lot<Min_Lot)Lot=Min_Lot;
if(Lote>Lote_Máximo)Lote=Lote_Máximo;
if(Lote*Um_Lote>Livre)return(0.0);
retorno(Lote);
}

//+----------Функция открытия ордера-----------------------------------+
int NewOrder(int Cmd,double Lot)
{
duplo TP=0;//takeprofit
duplo SL=0;// stop loss
duplo PR=0;// preço
while(!IsTradeAllowed())Sleep(100);
if(TakeProfit<MarketInfo(Symbol(),MODE_STOPLEVEL))
TakeProfit=MarketInfo(Symbol(),MODE_STOPLEVEL);
if(StopLoss<MarketInfo(Symbol(),MODE_STOPLEVEL))
StopLoss=MarketInfo(Symbol(),MODE_STOPLEVEL);
if(Cmd==OP_BUYSTOP)
{
PR=NormalizeDuplo(Pergunte,Dígitos);
if(TakeProfit>0)TP=NormalizeDouble(Ask+TakeProfit*Point,Digits);
if(StopLoss>0)SL=NormalizeDouble(Bid-StopLoss*Point,Digits);
}
if(Cmd==OP_SELLSTOP)
{
PR=NormalizeDouble(Bid,Digits);
if(TakeProfit>0)TP=NormalizeDouble(Bid-TakeProfit*Point,Dígitos);
if(StopLoss>0)SL=NormalizeDouble(Ask+StopLoss*Point,Digits);
}
tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP,"",0,0,CLR_NONE);
if(tic<0)Print("Error opening order:",GetLastError()); Print("Cmd-",Cmd, "Lot=",Lot, "PR=",PR, "SL=",SL, "TP=",TP);
retorno(tique);
}

Quando o verifico, recebo uma mensagem:

2011.12.06 23:36:50 2010.01.06 16:19 Big Dog 1.01 EURUSD,M15: quantidade de lotes inválidos para a função OrderSend

2011.12.06 23:36:50 2010.01.06 16:19 Big Dog 1.01 EURUSD,M15: OrderSend error 4051

2011.12.06 23:36:51 2010.01.07 17:20 Big Dog 1.01 EURUSD,M15: Pedido com defeito aberto:405

2011.12.06 23:36:51 2010.01.07 17:20 Big Dog 1.01 EURUSD,M15: Cmd-5Lot=0PR=1.4316SL=1.4419TP=1.4216

Obviamente, é algo com o cálculo de lotes, mas eu não entendo o que)))) Favor informar

 
LOA:

Yep.... Resposta "Exaustiva". Cada evento tem que ter uma razão. Os profissionais, quando se deparam com alguma avaria, sabem o que procurar. Procurei no algoritmo várias vezes, mas não encontrei a razão. É por isso que estou pedindo conselhos aos profissionais - qual pode ser a razão?

Bem, onde está o indicador?! (acho que por borra de café tel. https://www.mql5.comhttps://www.mql5.com/ru/)

Bem, se você listar tudo, as cartas se esgotarão.

continuar a pausa retorno ver se e quando há uma interrupção para e quando ela acontece. funciona com a abertura do bar....

"encontrando alguns problemas sabem ao que prestar atenção" eles não prestam atenção mas começam a depurar, começam a depurar seu indicador também, por exemplo, através de impressão (além disso com o de outra pessoa e assim com 15 páginas, mais de 50 chamadas funções...)

Print("дошли до инициализации, сделаем ресайз запишем все 0.0 size="+ArrayRange(buf,0)+" resize= "+ArrayResize(buf,Bars)+"  "+ArrayInitialize(buf,0.0)) ;

 

Olá.

Eu criei uma matriz:

double fibo[]={-10.09,-5.854,-4.98,-4.108,-3.236,-2.618,-2.11,-1.618,-1.11,-0.618,-0.382,0,0.118,0.236,0.382,0.5,0.618,0.764,0.882,1,1.382,1.618,2.11,2.618,3.11,3.618,4.236,5.108,5.98,6.854,11.09};

Entretanto, por alguma razão, seu primeiro valor vai para zero (-10,09 passa a ser 0). Encontrei uma saída para a situação ao fazer isto:

double fibo[]={,-10.09,-5.854,-4.98,-4.108,-3.236,-2.618,-2.11,-1.618,-1.11,-0.618,-0.382,0,0.118,0.236,0.382,0.5,0.618,0.764,0.882,1,1.382,1.618,2.11,2.618,3.11,3.618,4.236,5.108,5.98,6.854,11.09};

Você pode me dizer do que se trata? Quero muito entender.

Agradecemos antecipadamente.

 
nemo811:

Olá.

Eu criei uma matriz:

Entretanto, por alguma razão, seu primeiro valor vai para zero (-10,09 passa a ser 0). Encontrei uma saída para a situação ao fazer isto:

Você pode me dizer do que se trata? Quero muito entender.

Agradecemos antecipadamente.

Eu não zerei com índice = 0

double fibo[]={-10.09,-5.854,-4.98,-4.108,-3.236,-2.618,-2.11,-1.618,-1.11,-0.618,-0.382,0,0.118,0.236,0.382,0.5,0.618,0.764,0.882,1,1.382,1.618,2.11,2.618,3.11,3.618,4.236,5.108,5.98,6.854,11.09};
Alert(fibo[0]);

2011.12.06 20:00:47 MA_TF AUDUSD,M30: Alerta: -10.09


 

Aqui está a parte problemática do código:

  if (FIBO)
   {
    double fibo[]={-10.09,-5.854,-4.98,-4.108,-3.236,-2.618,-2.11,-1.618,-1.11,-0.618,-0.382,0,0.118,0.236,0.382,0.5,0.618,0.764,0.882,1,1.382,1.618,2.11,2.618,3.11,3.618,4.236,5.108,5.98,6.854,11.09};
    double fiboPoint = 0;
    for(i=1;i<ArraySize(fibo)+1;i++)
     {
      fiboPoint = NormalizeDouble(MinAsia+Asia*fibo[i],Digits);
      double v = 0;
      if (fibo[i]<0) v=(MathAbs(fibo[i])+1)*100;
      else v=fibo[i]*100;
      string kk;
      kk=StringConcatenate (DoubleToStr(fiboPoint,Digits)," / ",DoubleToStr(v,1),"%");
      string k=DoubleToStr (i,0);
      ObjectCreate (nameF+k, OBJ_TREND, 0,0,0,0,0,0,0);
      ObjectSet (nameF+k, OBJPROP_RAY, false);
      ObjectSet (nameF+k, OBJPROP_TIME1, TimeBegAsia);
      ObjectSet (nameF+k, OBJPROP_PRICE1, fiboPoint);
      ObjectSet (nameF+k, OBJPROP_TIME2, FlowTime);
      ObjectSet (nameF+k, OBJPROP_PRICE2, fiboPoint);
      ObjectCreate (nameFT+k, OBJ_TEXT, 0,0,0,0,0,0,0);
      ObjectSet (nameFT+k, OBJPROP_TIME1, TimeBegAsia);
      ObjectSet (nameFT+k, OBJPROP_PRICE1, fiboPoint);
      ObjectSetText (nameFT+k,kk,8,"Arial");
     }
   }

Aqui está o problema descrito acima: a linha derivada do valor -10,09 não é traçada (toma o valor de MinAsia).

 
nemo811:

Aqui está a parte problemática do código:

tuz

for(i=0;i<ArraySize(fibo)/**/-/**/1;i++)
 
mamba5:

Estou tentando abrir uma ordem pendente como esta:

//+---------Функция расчета лота---------------------------------------+

Quando o verifico, recebo uma mensagem:

2011.12.06 23:36:50 2010.01.06 16:19 Big Dog 1.01 EURUSD,M15: quantidade de lotes inválidos para a função OrderSend

2011.12.06 23:36:50 2010.01.06 16:19 Big Dog 1.01 EURUSD,M15: OrderSend error 4051

2011.12.06 23:36:51 2010.01.07 17:20 Big Dog 1.01 EURUSD,M15: Pedido com defeito aberto:405

2011.12.06 23:36:51 2010.01.07 17:20 Big Dog 1.01 EURUSD,M15: Cmd-5Lot=0PR=1.4316SL=1.4419TP=1.4216

Obviamente, é algo com o cálculo de lotes, mas eu não entendo o que)))) Favor informar


Use as funções há muito comprovadas para abrir pedidos tanto para o testador quanto para o verdadeiro tout
Razão: