Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 282

 

Ciao a tutti i membri del forum.

Qualche consiglio da persone competenti? Ho un EA che apre trade su segnale indicatore, come prescrivere programmaticamente un contatore di segnali, cioè dopo aver preso Take Profit o chiuso un ordine su un Trailing Stop, l'EA salta i due segnali successivi e non apre trade.

Apprezzerei l'aiuto.

void CheckForOpen()
{
   int ticket, STOPLEVEL;
   double Price, SL, TP; 
   STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
   
   
   double AO = iIchimoku (Symbol(),0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANA,1); // верхняя граница облака 
   double BO = iIchimoku (Symbol(),0,Tenkan,Kijun,Senkou,MODE_SENKOUSPANB,1); // нижняя граница облака 

      
   if(Volume[0]>1) return;

   if (AO>BO) // продажа
   {
   if (Open[1]>Close[1] && Close[1] < BO && Open[1]>BO) // продажа

     {
     Price = NormalizeDouble(Bid, Digits); // округляем до нужного нам числа цифр после запятой
     if(StopLoss >= STOPLEVEL)
          if(StopLoss > 0)
      {
       SL = Price + StopLoss*Point; // вычисляем стоплос
       SL = NormalizeDouble(SL, Digits); // округляем до нужного нам числа цифр после запятой
      }
       else SL = 0;

      if(TakeProfit > 0)
      {
       TP = Price - TakeProfit*Point;
       TP = NormalizeDouble(TP, Digits); 
      }
       else TP = 0;

      { 
      ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP,"Pattern_1",Magic,0,Red);
      return;
      }
    }
    }
 
alexey1979621:

Ciao a tutti i membri del forum.

Qualche consiglio da persone competenti? Ho un EA che apre trade su segnale indicatore, come prescrivere programmaticamente un contatore di segnali, cioè dopo aver preso Take Profit o chiuso un ordine su un Trailing Stop, l'EA salta i due segnali successivi e non apre trade.

Apprezzerei qualsiasi aiuto.


Non so cosa voglio, ma per favore consigliatemi come implementarlo.

E cosa intende esattamente per saltare i segnali?

1) Un commercio virtuale? come se aprissimo una posizione fittizia, monitorassimo, chiudessimo anch'essa fittizia (Ilanim);

2) Cercare di utilizzare il segnale dopo un certo periodo di tempo, un nuovo segnale può essere ricevuto in ХХХХ minuti;

3) Valutazione del segnale dopo una certa quantità di barre? Un nuovo segnale può essere ricevuto dopo ХХХХ barre;

..................

Inoltre, qualsiasi altra richiesta:

sostituire il costrutto if(Volume[0]>1) return; non si innescherà sempre già su demo, figuriamoci su reale;

Non è possibile cavarsela con una condizione in più?

if (StopLoss >= STOPLEVEL)         //    if (StopLoss > STOPLEVEL) так не проще?
   if(StopLoss > 0)

la logica non è corretta, altrimenti gestisce la seconda condizione:

if (StopLoss >= STOPLEVEL)
   if (StopLoss > 0){
      SL = Price + StopLoss*Point; // вычисляем стоплос
      SL = NormalizeDouble(SL, Digits); // округляем до нужного нам числа цифр после запятой
   }
   else SL = 0;

e molti altri...

 
ALXIMIKS:


Voglio qualcosa che non so cosa, ma dimmi come implementarlo.

Cosa intende esattamente per segnali mancanti?

1) Un commercio virtuale? come se aprissimo una posizione fittizia, la controllassimo, la chiudessimo anche fittiziamente (Ilanim);

2) Cercare di utilizzare il segnale dopo un certo periodo di tempo, un nuovo segnale può essere ricevuto in ХХХХ minuti;

3) Valutazione del segnale dopo una certa quantità di barre? Un nuovo segnale può essere ricevuto dopo ХХХХ barre;

..................

Inoltre, qualsiasi altra richiesta:

sostituire il costrutto if(Volume[0]>1) return; non si innescherà sempre già su demo, figuriamoci su reale;

Non è possibile cavarsela con una condizione in più?

la logica non è corretta, altrimenti gestisce la seconda condizione:

e molto di più...

Sono un novellino, cioè sto arrivando a tutto da solo, la cosa principale è che funziona. if(Volume[0]>1) funziona bene sia sul reale che sulla demo, e nel tester. Ho scritto i miei desideri molto chiaramente. Un accordo viene aperto in base al segnale dell'indicatore (ho allegato la condizione di apertura dell'accordo nel codice). Dopo che il trade precedente è stato chiuso a Take Profit e Trailing Stop, ho bisogno di saltare 1 o 2 o 3 (parametro regolabile) segnali dall'indicatore, cioè non aprire un trade. Non so come prescriverlo programmaticamente, per questo chiedo aiuto.
 

Buongiorno a tutti!) Recentemente mi sono interessato al MQL e ora mi sono imbattuto nei primi problemi. L'idea è che l'EA apre le posizioni secondo la funzione ma non vuole chiuderle, e quindi questi ordini a mercato senza alcuno stop sono piazzati fino alla fine della sessione di test. La domanda è dove ho fatto il mio errore.

Ecco un frammento vicino:

 if(Level >= 0.000100 && LevelXP>LevelXM && CountSell() > 0)
          {
               for(i=OrdersTotal()-1; i >= 0; i--)
               {
                   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
                   {
                       if(OrderMagicNumber() == Magic && OrderType() == OP_SELL)
                          OrderClose(OrderTicket(), OrderLots(), Ask, Slippage);
                   }
               }
          }
 
ElhoroS:

Buongiorno a tutti!) Recentemente mi sono interessato al MQL e ho affrontato i primi problemi. L'idea è che l'EA apre posizioni secondo la funzione ma non vuole chiuderle, e quindi questi ordini a mercato senza alcuno stop sono piazzati fino alla fine della sessione di test. La domanda è: dove ho sbagliato?


1) Forse il problema è nelle condizioni di chiusura (l'hai dato implicitamente)

2) Hai solo chiuso OP_SELL in questo codice ( tisei ricordato di implementare le condizioni di acquisto? Assicurati che le condizioni di chiusura siano corrette).

3) Quando si controlla durante la forza bruta, non si controlla la coppia di valute e il time frame (perché dovrei farlo di nuovo?)

4) Non c'è un controllo per le requote (nello Strategy Tester tutto dovrebbe essere a posto, ma sul conto demo o reale - non sempre)

5) Come dichiarato da Artemis artmedia70, MarketInfo(Symbol(),MODE_ASK) è meglio diAsk - dà prezzi più rilevanti

 
ALXIMIKS:


5) Come affermato da Artemis, MarketInfo(Symbol(),MODE_ASK) sarà migliore diAsk - verranno dati prezzi più rilevanti

No... basta con gli insulti...
 
artmedia70:
No... basta con gli insulti...


Sì, ricordo l'ultima situazione, Artyom, mi dispiace - si è bloccata.
 
ALXIMIKS:

Sì, ricordo la situazione passata, Artem, mi dispiace - si è bloccata.
Artyom+Femis=Artemis; Sii orgoglioso, Artyom! È una confessione! Vi auguro di continuare così!
 
borilunad:
Artyom + Themis = Artemis; Sii orgoglioso, Artyom! È una confessione! Vi auguro di continuare così!
 
artmedia70:
Da dove vengono le immagini e come si fa? È vero, questi personaggi non rappresentano Themis.