Estou aprendendo a escrever um conselheiro... - página 6

 
ALex2008 >> :

Leve seu tempo para ler o fio!

Estou escrevendo lá sobre a opção

mesmo que o BROKER dê um requote ...


código de erro 138 e uma conta real.

 

Se você se refere a esta opção e ela se refere à OrderModify

YuraZ писал(а) >>

допустим

получен сигнал -

на тике бъем на вход раз 5

не пробили! вышли

на втором тике после сигнала входим и долбим далше!

...então eu ainda não cresci para carrapatos)))) Como contabilizá-los 1o. tique, 2o. tique?

Sleep(2000); // é uma espera de 2 segundos após um erro

E esperar por um novo tique por quanto tempo?


 
Talex >> :
Experimente assim.

Agora tenho a tarefa de estabelecer uma parada via OrderModify imediatamente após o OpenSend e verificar se essa parada existe.

Se não funcionou, não o rastreie mais, se não, qual é o erro e tente colocar... colocar... e colocar...)

RefreshRates();   
           double SLS = Ask+ Stop*Point;   //стоп на продажу
           Modify = OrderModify(OrderTicket(),OrderOpenPrice(), SLS,OrderTakeProfit(),0,Red);
              if ( Modify == false)
                  {
                      Print("Ошибка при попытке установить стоп для SEL, код ошибки ="+GetLastError());
                      for (int j=0 ;; j++) //пытаемся пока ДЦ не умрет)
                             {
                                SLS = SLS+ j*Point;   //увеличиваем стоп на 1 пп 
                                RefreshRates();
                                Modify = OrderModify(OrderTicket(),OrderOpenPrice(), SLS,OrderTakeProfit(),0,Red);
                                   if ( Modify==true)
                                       break;
                                   else   
                                       Print("Ошибка при попытке установить стоп для SEL, код ошибки ="+GetLastError());        
                              }
                  }
 
Você pode me dizer como verificar o status da OrderModify, para que depois de uma modificação bem sucedida você não tente modificar de novo e obtenha erros desnecessários?
 
bool ModifyS = OrderModify(OrderTicket(),OrderOpenPrice(), SLS,OrderTakeProfit(),0,Red);
if ( ModifyS==true) continue;

substitua por este:

ModifyS = OrderModify(OrderTicket(),OrderOpenPrice(), SLS,OrderTakeProfit(),0,Red);
if ( ModifyS==true) break;

aqui:

1. Por que definir o tipo de variável desnecessariamente - este é um erro que deve aparecer durante a compilação?

2. em vez de continuar - para uma nova iteração (ou seja, para uma nova tentativa de modificação), use break - sair do loop (e infinito, o que não é bom)

 
Xupypr >> :

1. Por que definir o tipo de variável desnecessariamente - este é um erro que deve aparecer no momento da compilação?

fixo)

2. em vez de continuar - iteração saltando para uma nova iteração (ou seja, uma nova tentativa de modificação), use break - saída do loop

>> Obrigado!

...e é infinito, o que não é bom...

infinito porque é necessário pará-lo...

E se eu fizer um par de tentativas e for rejeitado por alguma razão e o preço for muito contra a posição durante este tempo... O que fazer então?

 

Erros no registro:

abrir #1 venda 0.01 EURUSD ok
modificar #1 venda 0.01 EURUSD ok
Erro tentando definir uma parada para SEL, código de erro =0
parar perda #1
abrir #2 venda 0.01 EURUSD ok
modificar #2 venda 0.01 EURUSD ok
Erro tentando definir uma parada para SEL, código de erro =0
parar perda #2
abrir #3 venda 0.01 EURUSD ok
modificar #3 venda 0.01 EURUSD ok
Erro tentando definir uma parada para SEL, código de erro =0

entrar VENDER

RefreshRates();
      if ((OrdersTotal()==0)&&(Bid == Enter))  //бъем до упора эту цену
         { 
            if (IsTradeContextBusy()==false)
               {
                  OrderSend(Symbol(), OP_SELL, Lot, Enter, Slippage, 0, ldTake, lsComm, MAGIC,0, clOpenSell);
                  if (OrdersTotal()>0)
                     {
                        ModifySL();                   //ставим стоп
                        SLBU = OrderOpenPrice()- BU;               //цена БУ
                     }   
                  else Print("Ошибка при попытке установить ордер на SELL, ",OrderOpenPrice()," код ошибки ="+GetLastError());             
               }
         }




modificar a venda





void ModifySL() 
   {
      if (OrderSelect(0, SELECT_BY_POS)==true) // Если есть открытый ордер
         {       
            if (OrderType()==OP_BUY)
               {
                  RefreshRates();
                  OrderModify(OrderTicket(),OrderOpenPrice(),Bid- StopL*Point,OrderTakeProfit(),0,Red);
                  if (OrderStopLoss()==0) Print("Ошибка при попытке установить стоп для BUY, ",OrderStopLoss()," код ошибки ="+GetLastError());

               }
                               
            else
                  RefreshRates();   
                  OrderModify(OrderTicket(),OrderOpenPrice(),Ask+ StopL*Point,OrderTakeProfit(),0,Red);
                  if (OrderStopLoss()== 0) Print("Ошибка при попытке установить стоп для SEL, ",OrderStopLoss()," код ошибки ="+GetLastError());
               }
         } 
   }




 
ALex2008 >> :

Se você se refere a esta opção e ela se refere à OrderModify

...então eu ainda não cresci até os carrapatos)))) Como contabilizá-los 1º tick, 2º tick?

Sleep(2000); // esta é uma espera de 2 segundos após um erro

E quanto tempo para esperar por um novo tick?


a cada tique

é chamada

INICIAR()

{

}

---

note que se você estiver na função START por um longo tempo

você pode perder um ou mais carrapatos

por exemplo, você entrou na função START e esteve lá por 10 minutos, é lógico que os carrapatos virão, mas você não vai pegá-los

embora você possa não receber uma carraça por muito tempo à noite

---

portanto, estar sentado na função START por muito tempo é ruim para a captura de carrapatos (se eles forem importantes para você)

escrever programas de economia com um mínimo de ciclos e atrasos

---

 
YuraZ >> :

...tenha em mente que se você estiver na função START por um longo tempo

você pode muito bem perder um ou mais carrapatos

por exemplo, você entrou na função START e esteve lá por 10 minutos, é lógico que os carrapatos virão, mas você não vai pegá-los

embora você possa não receber uma carraça por muito tempo à noite

---

portanto, estar sentado na função START por muito tempo é ruim para a captura de carrapatos (se eles forem importantes para você)

Escrever programas de economia com um mínimo de ciclos e atrasos.

---

Se você usar a função RefreshRates() antes de modificar ou definir um pedido, ela apenas atualiza o estado fora de Start(), ou seja, ticks?

Eu entendo corretamente?

 

Aqui está a versão final da abertura e modificação da pose para a crítica.

O "+" e o "-" desta opção?

venda de abertura

RefreshRates();
      if ((OrdersTotal()==0)&&(Bid == Enter))  //бъем до упора эту цену
         { 
            if (IsTradeContextBusy()==false)
               {
                  OrderSend(Symbol(), OP_SELL, Lot, Enter, Slippage, 0, ldTake, lsComm, MAGIC,0, clOpenSell);
                  if (OrdersTotal()>0)
                     {
                        ModifySL();                   //ставим стоп
                        SLBU = OrderOpenPrice()- BU;               //цена БУ
                     }   
                  else Print("Ошибка при попытке установить ордер на SELL, ",OrderOpenPrice()," код ошибки ="+GetLastError());             
               }
         }




parar a modificação





void ModifySL()
   {
      if (OrderSelect(0, SELECT_BY_POS)==true) // Если есть открытый ордер
         {       
            if (OrderType()==OP_BUY)
               {
                  RefreshRates();
                  bool Modify = OrderModify(OrderTicket(),OrderOpenPrice(),Bid- StopL*Point,OrderTakeProfit(),0,Red);
                  if ( Modify == false) Print("Ошибка при попытке установить стоп для BUY, ",OrderStopLoss()," код ошибки ="+GetLastError());

               }
            else
               {
                  RefreshRates();   
                  Modify = OrderModify(OrderTicket(),OrderOpenPrice(),Ask+ StopL*Point,OrderTakeProfit(),0,Red);
                  if ( Modify == false) Print("Ошибка при попытке установить стоп для SEL, ",OrderStopLoss()," код ошибки ="+GetLastError());
               }
         }     
   }