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

 

Olá. Como posso elevá-lo a um grau em MQL4?

 
Diver-si >> :
Olá. Este é um grande fórum e eu sou um nerd total na programação. É possível escrever um EA ou apontar-me na direção de um. Comprar entrada no stocha 30, em dado TF, se em um stocha TF mais alto se eleva e > 30, mas < 70. Na venda - cruzando 70, se na TF mais alta os estocásticos estão caindo e > 30, mas < 70. Sair na tomada ou parar com a opção de alterar valores.

Está feito. Fiz tudo o que me foi pedido para fazer.

Arquivos anexados:
ctoh_1.rar  6 kb
 
Skydiver >> :

Feito. Acho que fiz tudo o que você pediu.

>> Muito obrigado!!!!

 
Diver-si >> :

Muito obrigado!!!!

Você já trabalhou com esta estratégia antes? Você tem tido sucesso?

 
Skydiver >> :

Você já trabalhou com esta estratégia antes? >> Você tem tido sucesso?

Não é uma estratégia, apenas é preciso testar uma suposição. A propósito, por que a EA não está fazendo negócios? Eu não entendo por que.

 
В ветке "Корректное открытие нескольких позиций" приведён следующий код:


 if(iSAR(NULL,0,step0,0.1,0)<Close[0] )
         
         
        {
          RefreshRates();
      ticket = (OrderSend( Symbol(), OP_BUY,GetSizeLot(), Ask, slippage,
       Bid-StopLoss*Point,Ask+TakeProfit*Point,NameExpert,
               0, Green ) );
if(ticket<1) {Print("Ошибка открытия 1-го ордера BUY #",GetLastError());return (0); }  
if (ticket>0) //Sleep(10000);
          { //если 1-я позиция открылась, открываем вторую
          RefreshRates();       
         ticket_1 = (OrderSend( Symbol(), OP_BUY,GetSizeLot(), Ask, slippage,
       Bid-StopLoss*Point,Ask+TakeProfit*Point,NameExpert,
              0, Green ) ); 
if(ticket_1<1) {Print("Ошибка открытия 2 ордера BUY #",GetLastError());return (0); }    
if (ticket_1>0) // Sleep(10000);
         { // если вторая позиция открылась, открываем третью 
          RefreshRates();
      ticket_2 = (OrderSend( Symbol(), OP_BUY,GetSizeLot(), Ask, slippage,
       Bid-StopLoss*Point,Ask+TakeProfit*Point,NameExpert,
              0, Green ) );
           if(ticket_2<1)
          {Print("Ошибка открытия 3 ордера BUY #",GetLastError());return (0); }   
         } 
       }    
     }

            
      if(iSAR(NULL,0,step0,0.1,0)>Close[0])
    {
        
        //---- открываем СЕЛЛ позицию
      RefreshRates();
      ticket = (OrderSend( Symbol(), OP_SELL,GetSizeLot(), Bid, slippage,
        Ask+StopLoss*Point,Bid-TakeProfit*Point, NameExpert,
              0, Red ));
              
           if(ticket<1) {Print("Ошибка открытия 1-го ордера SELL #",GetLastError());return (0); }  
if (ticket>0) //Sleep(10000);
          { //если 1-я позиция открылась, открываем вторую
       RefreshRates();      
      ticket_1 = (OrderSend( Symbol(), OP_SELL,GetSizeLot(), Bid, slippage,
        Ask+StopLoss*Point,Bid-TakeProfit*Point, NameExpert,
             0, Red ));
             
          if(ticket_1<1) {Print("Ошибка открытия 2 ордера SELL #",GetLastError());return (0); }    
if (ticket_1>0) // Sleep(10000);
         { // если вторая позиция открылась, открываем третью        
      RefreshRates(); 
      ticket_2 = (OrderSend( Symbol(), OP_SELL,GetSizeLot(), Bid, slippage,
        Ask+StopLoss*Point,Bid-TakeProfit*Point, NameExpert,
              0, Red ));               
                if(ticket_2<1)
          {Print("Ошибка открытия 3 ордера SELL #",GetLastError());return (0); }   
         } 
       }    
     }
   
    return(0);
    
}



Você pode me dizer como inserir uma condição nesta construção se(iSAR(NULL,0,passo0,0.1,0)<Fechar[0]), o que significa que se, por exemplo, as posições de compra são abertas, então as posições de venda não são abertas até que todas as posições de compra sejam fechadas. Em outras palavras, um ciclo de negociação, compramos 3 posições, esperamos até que todas as três sejam fechadas. As posições são fechadas somente por Stop Loss ou Take Profit. Todas as posições são fechadas, aguardam o sinal, recebem um sinal, compram ou vendem (dependendo do sinal) 3 posições, etc. As "Funções úteis da KimIV" foram estudadas. Você pode usar as funções CountOrders(), ExistOrders(), ExistPositions(). Mas como eu praticamente os inseri? A construção if((iSAR(NULL,0,passo0,0.1,0)>Close[0])&& ExistPosições(NULL,OP_SELL)==falso) não funciona. Eu entendo que preciso inserir uma variável lógica, mas como faço isso na prática? Eu não entendo nada.

 
anat >> :



Você poderia me dizer como inserir uma condição neste código se(iSAR(NULL,0,passo0,0.1,0)<Fechar[0]), no qual, por exemplo, se abrimos posições de Compra, não abrimos posições de Venda até que todas as posições de Compra sejam fechadas. Em outras palavras, um ciclo de negociação, compramos 3 posições, esperamos até que todas as três sejam fechadas. As posições são fechadas somente por Stop Loss ou Take Profit. Todas as posições são fechadas, aguardam o sinal, recebem um sinal, compram ou vendem (dependendo do sinal) 3 posições, etc. As "Funções úteis da KimIV" foram estudadas. Você pode usar as funções CountOrders(), ExistOrders(), ExistPositions(). Mas como eu praticamente os inseri? A construção if((iSAR(NULL,0,passo0,0.1,0)>Close[0])&& ExistPositions(NULL,OP_SELL)==falso) não funciona. Eu entendo que preciso inserir uma variável lógica, mas como faço isso na prática? Eu não entendo nada.


Você pode abri-los, mas depois sobrepô-los automaticamente no lado oposto. E é muito mais fácil fazê-lo com uma EA separada do que adicionar algum código adicional em uma EA pronta para uso. Corretor.mq4



 
(NULL,PERÍODO_M1, 14, 0, 1, PREÇO_CLOSE, 1, 1 ) < Perguntar) { // se o preço estiver acima da linha, então vender <
está correto?



(NULL,PERÍODO_M1, 14, 0, 1, PREÇO_CLOSE, 2, 1 ) > Licitação) { // se o preço estiver abaixo da linha então compre <----- é a lógica correta ou estou confundindo algo?



Ajude a plz...

 
1Rakso писал(а) >>
(NULL,PERIOD_M1, 14, 0, 1, PRICE_CLOSE, 1, 1 )

Afinal, o que é este projeto?