[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 73

 

Salve. Come posso aumentare il grado in MQL4?

 
Diver-si >> :
Salve. Questo è un grande forum e io sono un nerd totale della programmazione. È possibile scrivere un EA o indicarmi la direzione di uno. Entrata di acquisto su incrocio stocha 30, su dato TF, se su un TF superiore stocha sale e > 30, ma < 70. Sulla vendita - attraversando 70, se sul TF superiore stocastico è in calo e > 30, ma < 70. Esci alla presa o all'arresto con un'opzione per cambiare i valori.

È fatta. Ho fatto tutto quello che mi è stato chiesto di fare.

File:
ctoh_1.rar  6 kb
 
Skydiver >> :

Fatto. Penso di aver fatto tutto quello che mi hai chiesto.

>>Grazie mille!!!!

 
Diver-si >> :

Grazie mille!!!!

Ha già lavorato con questa strategia? Ha avuto successo?

 
Skydiver >> :

Ha già lavorato con questa strategia? >> Hai avuto successo?

Non è una strategia, solo bisogno di testare un presupposto. A proposito, perché l'EA non fa operazioni? Non capisco perché.

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


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



Potete per favore dirmi come inserire una condizione in questa costruzione if(iSAR(NULL,0,step0,0.1,0)<Close[0]), che significa che se, per esempio, le posizioni di acquisto sono aperte, allora le posizioni di vendita non sono aperte fino a quando tutte le posizioni di acquisto sono chiuse. In altre parole, un ciclo di trading, compriamo 3 posizioni, aspettiamo che tutte e tre siano chiuse. Le posizioni sono chiuse solo da Stop Loss o Take Profit. Tutte le posizioni sono chiuse, si aspetta il segnale, si ottiene un segnale, si comprano o si vendono (a seconda del segnale) 3 posizioni, ecc. Le "Funzioni utili di KimIV" sono state studiate. Potete usare le funzioni CountOrders(), ExistOrders(), ExistPositions(). Ma come inserirli praticamente? Il costrutto if((iSAR(NULL,0,step0,0.1,0)>Close[0])&& ExistPositions(NULL,OP_SELL)==false) non funziona. Capisco che ho bisogno di inserire una variabile logica, ma come lo faccio in pratica? Non capisco una cosa.

 
anat >> :



Potreste dirmi come inserire una condizione in questo codice if(iSAR(NULL,0,step0,0.1,0)<Close[0]), in cui, per esempio, se abbiamo aperto posizioni Buy, non apriamo posizioni Sell finché non chiudiamo tutte le posizioni Buy. In altre parole, un ciclo di trading, compriamo 3 posizioni, aspettiamo che tutte e tre siano chiuse. Le posizioni sono chiuse solo da Stop Loss o Take Profit. Tutte le posizioni sono chiuse, si aspetta il segnale, si ottiene un segnale, si comprano o si vendono (a seconda del segnale) 3 posizioni, ecc. Le "Funzioni utili di KimIV" sono state studiate. Potete usare le funzioni CountOrders(), ExistOrders(), ExistPositions(). Ma come inserirli praticamente? Il costrutto if((iSAR(NULL,0,step0,0.1,0)>Close[0])&& ExistPositions(NULL,OP_SELL)==false) non funziona. Capisco che ho bisogno di inserire una variabile logica, ma come lo faccio in pratica? Non capisco una cosa.


Si possono aprire, ma poi si sovrappongono automaticamente sul lato opposto. Ed è molto più facile farlo con un EA separato che aggiungere del codice aggiuntivo in un EA già pronto. Correttore.mq4



 
(NULL,PERIOD_M1, 14, 0, 1, PRICE_CLOSE, 1, 1 ) < Ask) { // se il prezzo è sopra la linea allora vendi <--------- è corretto?



(NULL,PERIOD_M1, 14, 0, 1, PRICE_CLOSE, 2, 1 ) > Bid) { // se il prezzo è sotto la linea allora compra <----- è la logica corretta o sto confondendo qualcosa?



Aiuto plz...

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

Ma cos'è questo design?