[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 848

 

Eu acho que é por isso

while (att_to_modify_sell<= attempt_to_modify)
 
vasya_vasya:

Acho que é por isso.

Obrigado, notou e apagou o correio imediatamente, mas você conseguiu responder a ele :)

Eu ainda não gosto do meu padrão cíclico...

A tarefa é modificar a ordem após n-números de tentativas fracassadas de fechá-la pelo mercado!

Por favor, mostre-me como fazer isso bem em código.

Obrigado!

 
vasya_vasya:

Acho que é por causa disso.

att_to_modify=2;
att_to_modify_sell=0;
            
Print("att_to_modify_sell="+att_to_modify_sell);
Print("Модификация SL, попытка установить новый СЛ, ord_open_sell="+ord_open_sell+" stop_TP="+stop_TP+" Старый СЛ= "+ord_sl+" Bid="+Bid+" ord_take_profit="+ord_take_profit+" Ask="+Ask);
Print("Модификация в цикле1");   
ticket=OrderModify(ticket_sell,0,NormalizeDouble((ord_open_sell-stop_TP*Point),Digits),NormalizeDouble(ord_take_profit,Digits),0,0); //первый перенос СЛ
  if(ticket<0)
  {               
    Print("OrderModify(SELLSTOP install first SL) failed with error #",GetLastError());
    att_to_modify_sell+=1;
    Sleep(3000);
    if (att_to_modify_sell>=attempt_to_modify /*&& Ask<(ord_open_sell-stop_TP*Point-p_TS_DIST*Point)*/)                     
    {
      OrderClose(ticket_sell,ord_lots,MarketInfo(Symbol(),MODE_ASK),3,Green);
    }
    if(ticket>=0)
    {
      att_to_modify_sell=attempt_to_modify+1;
      Print("Модификация прошла успешно");
    }  
    Print("att_to_modify_sell!!!="+att_to_modify_sell);           
  }

Conclusão:

2010.09.14 16:46:04 2010 06.07 00:00 MM1.20 EURUSD,M5: OrderModify error 130
2010.09.14 16:46:04 2010.06.07 00:00 MM_1.20 EURUSD,M5: Modificar em Loop1
2010.09.14 16:46:04 2010.06.07 00:00 MM_1.20 EURUSD,M5: Modificação SL, tentando definir um novo SL, ord_open_sell=1.19799000 stop_TP=200 Old SL=1.20499000 Bid=1.19470000 ord_take_profit=1.19479000 Ask=1.19483000
2010.09.14 16:46:04 2010.06.07 00:00 MM_1.20 EURUSD,M5: att_to_modify_sell=0


Houve um erro, então por que eu não estou processando a condição

if(ticket<0) ?????


e, consequentemente, não são exibidas impressões digitais.

Print("OrderModify(SELLSTOP install first SL) failed with error #",GetLastError());
Print("att_to_modify_sell!!!="+att_to_modify_sell); 


Um pedaço de código fecha uma ordem no mercado após tentativas de modificação!

Obrigado!

 
É possível que a EA se desabilite a si mesma?
 
Elliotttrader:

Saída:

2010.09.14 16:46:04 2010.06.07 00:00 MM1.20 EURUSD,M5: OrderModify error 130
2010.09.14 16:46:04 2010.06.07 00:00 MM_1.20 EURUSD,M5: Modificação no loop1
2010.09.14 16:46:04 2010.06.07 00:00 MM_1.20 EURUSD,M5: modificação SL, tente definir novo SL, ord_open_sell=1.19799000 stop_TP=200 Old SL=1.20499000 Bid=1.19470000 ord_take_profit=1.19479000 Ask=1.19483000
2010.09.14 16:46:04 2010.06.07 00:00 MM_1.20 EURUSD,M5: att_to_modify_sell=0

Houve um erro, então por que eu não estou processando a condição

e, portanto, nenhuma impressão é impressa...

Um pedaço de código fecha uma ordem no mercado após tentativas de modificação!

Obrigado!


Erro 130 - paradas erradas.

Analisar o 3º parâmetro na função

ticket=OrderModify(ticket_sell,0,NormalizeDouble((ord_open_sell-stop_TP*Point),Digits),NormalizeDouble(ord_take_profit,Digits),0, 0); //first transfer SL

esta é uma ordem de venda, como eu entendi, e o preço de parada é reduzido

Talvez precisemos de "+" - ord_open_sell+stop_TP*Point

 
abolk:


Erro 130 - paradas erradas.

Analisar o 3º parâmetro na função

ticket=OrderModify(ticket_sell,0,NormalizeDouble((ord_open_sell-stop_TP*Point),Digits),NormalizeDouble(ord_take_profit,Digits),0, 0); //first carry SL

esta é uma ordem de venda, como eu entendi, e você estabelece a parada pelo preço

Talvez precisemos do "+" - ord_open_sell+stop_TP*Point

Eu não estou perguntando sobre este erro. Estou perguntando por que não está sendo processado.
if(ticket<0)
Obrigado!
 
Elliotttrader:
Eu não estou perguntando sobre este erro. Estou perguntando por que não está funcionando para mim.
Obrigado!

Primeiro, imprima o valor da impressão do bilhete após a modificação
 
abolk:

Para começar, imprima o valor do bilhete após a modificação


Estou escrevendo uma pergunta, mas ela não mudou nada, o problema não está resolvido, então vou repeti-la na esperança de conseguir uma solução para o problema:

Eu mesmo estou escrevendo um indicador, eu preciso de cerca de 2000 barras da história, um laço assim:

para (int i=1; i<1900; i++)

recuperará apenas 1000 barras.

Tento definir a variável Bars, mas ela diz, que seu valor é igual a 1000, apesar do fato de ter traçado o gráfico e os dados históricos até 2000.

Por que isso está acontecendo, o que está errado????

Por favor, informe!!!!

 
abolk:

Para começar, imprimir o valor do bilhete após a modificação

Encurtado para

               Print("Модификация SL, попытка установить новый СЛ, ord_open_sell="+ord_open_sell+" stop_TP="+stop_TP+" Старый СЛ= "+ord_sl+" Bid="+Bid+" ord_take_profit="+ord_take_profit+" Ask="+Ask);
               Print("Модификация в цикле1");             
               ticket=OrderModify(ticket_sell,0,NormalizeDouble((ord_open_sell-stop_TP*Point),Digits),NormalizeDouble(ord_take_profit,Digits),0,0); //первый перенос СЛ
               Print("ticket="+ticket);

               if(ticket<0){Print("OrderModify(SELLSTOP install first SL) failed with error #",GetLastError());}

               Print("Модификация закончена");


2010.09.14 20:35:26 2010 06.07 00:00 MM_1.20 EURUSD,M5: Modificação concluída
2010.09.14 20:35:26 2010.06.07 00:00 MM_1.20 EURUSD,M5: bilhete=0
2010.09.14 20:35:26 2010.06.07 00:00 MM_1.20 EURUSD,M5: OrderModify error 130
2010.09.14 20:35:26 2010.06.07 00:00 MM_1.20 EURUSD,M5: Modificação em Loop1
2010.09.14 20:35:26 2010.06.07 00:00 MM_1.20 EURUSD,M5: Modificação SL, tentando definir um novo SL, order_open_sell=1.19799000 stop_TP=200 Old SL=1.20499000 Bid=1.19470000 order_take_profit=1.19479000 Ask=1.19483000

2010.09.14 20:35:26 2010.06.07 00:00 MM_1.20 EURUSD,M5: att_to_modify_sell=0


Rapazes, estou tendo uma falha. Como em erro pode

ticket
ser ingênuo 0-lu?
 
Elliotttrader:

Encurtado para

2010.09.14 20:35:26 2010.06.07 00:00 MM_1.20 EURUSD,M5: Modificar terminado
2010.09.14 20:35:26 2010.06.07 00:00 MM_1.20 EURUSD,M5: bilhete=0
2010.09.14 20:35:26 2010.06.07 00:00 MM_1.20 EURUSD,M5: OrderModify error 130
2010.09.14 20:35:26 2010.06.07 00:00 MM_1.20 EURUSD,M5: Modificação em Loop1
2010.09.14 20:35:26 2010.06.07 00:00 MM_1.20 EURUSD,M5: Modificação SL, tentando definir um novo SL, order_open_sell=1.19799000 stop_TP=200 Old SL=1.20499000 Bid=1.19470000 order_take_profit=1.19479000 Ask=1.19483000

2010.09.14 20:35:26 2010.06.07 00:00 MM_1.20 EURUSD,M5: att_to_modify_sell=0

Rapazes, estou tendo uma falha. Como em erro pode

ser naven 0-lu?

print -- ticket_sell and show ticket variable type
Razão: