[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 73

 

Bonjour. Comment l'élever à un degré dans MQL4 ?

 
Diver-si >> :
Bonjour. Il s'agit d'un grand forum et je suis un nerd total en matière de programmation. Est-il possible d'écrire un EA ou de m'indiquer la direction d'un EA ? Entrée d'achat au franchissement de la stocha 30, sur un TF donné, si sur un TF supérieur la stocha monte et > 30, mais < 70. A la vente - franchissement de 70, si sur le TF supérieur le stochastique est en baisse et > 30, mais < 70. Sortie à la prise ou à l'arrêt avec une option pour changer les valeurs.

C'est fait. J'ai fait tout ce qu'on m'a demandé de faire.

Dossiers :
ctoh_1.rar  6 kb
 
Skydiver >> :

C'est fait. Je pense que j'ai fait tout ce que vous avez demandé.

>>Merci beaucoup !!!!

 
Diver-si >> :

Merci beaucoup !!!!

Avez-vous déjà travaillé avec cette stratégie ? Avez-vous réussi ?

 
Skydiver >> :

Avez-vous déjà travaillé avec cette stratégie ? >> Avez-vous réussi ?

Ce n'est pas une stratégie, il faut juste tester une hypothèse. Au fait, pourquoi l'EA ne fait-il pas de transactions ? Je ne comprends pas pourquoi.

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


 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);
    
}



Pouvez-vous me dire comment insérer une condition dans cette construction if(iSAR(NULL,0,step0,0.1,0)<Close[0]), ce qui signifie que si, par exemple, des positions d'achat sont ouvertes, alors les positions de vente ne sont pas ouvertes tant que toutes les positions d'achat ne sont pas fermées. En d'autres termes, un cycle de trading, on achète 3 positions, on attend que les trois soient fermées. Les positions sont fermées uniquement par Stop Loss ou Take Profit. Toutes les positions sont fermées, on attend le signal, on obtient un signal, on achète ou on vend (en fonction du signal) 3 positions, etc. Les "fonctions utiles de KimIV" ont été étudiées. Vous pouvez utiliser les fonctions CountOrders(), ExistOrders(), ExistPositions(). Mais comment les insérer concrètement ? La construction if((iSAR(NULL,0,step0,0.1,0)>Close[0])&& ExistPositions(NULL,OP_SELL)==false) ne fonctionne pas. Je comprends que je dois insérer une variable logique, mais comment le faire en pratique ? Je ne comprends pas quelque chose.

 
anat >> :



Pourriez-vous me dire comment insérer une condition dans ce code if(iSAR(NULL,0,step0,0.1,0)<Close[0]), dans laquelle, par exemple, si nous avons ouvert des positions d'achat, nous n'ouvrons pas de positions de vente avant d'avoir fermé toutes les positions d'achat. En d'autres termes, un cycle de trading, on achète 3 positions, on attend que les trois soient fermées. Les positions sont fermées uniquement par le Stop Loss ou le Take Profit. Toutes les positions sont fermées, on attend le signal, on obtient un signal, on achète ou on vend (en fonction du signal) 3 positions, etc. Les "fonctions utiles de KimIV" ont été étudiées. Vous pouvez utiliser les fonctions CountOrders(), ExistOrders(), ExistPositions(). Mais comment les insérer concrètement ? La construction if((iSAR(NULL,0,step0,0.1,0)>Close[0])&& ExistPositions(NULL,OP_SELL)==false) ne fonctionne pas. Je comprends que je dois insérer une variable logique, mais comment le faire en pratique ? Je ne comprends pas quelque chose.


Vous pouvez les ouvrir, mais ensuite les faire se chevaucher automatiquement sur le côté opposé. Et il est beaucoup plus facile de le faire avec un EA séparé que d'ajouter du code supplémentaire dans un EA prêt à l'emploi. Correcteur.mq4



 
(NULL,PERIOD_M1, 14, 0, 1, PRICE_CLOSE, 1, 1 ) < Ask) { // si le prix est au-dessus de la ligne, alors vendez <--------- est-ce correct ?



(NULL,PERIOD_M1, 14, 0, 1, PRICE_CLOSE, 2, 1 ) > Bid) { // si le prix est en dessous de la ligne alors acheter <----- la logique est correcte ou je confonds quelque chose ?



Aidez-nous...

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

Qu'est-ce que ce dessin, d'ailleurs ?