[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 330

 

Ragazzi, un suggerimento... Vi mostro i frammenti di codice in cui vengono calcolate le condizioni di entrata nel mercato. PERCHE' con i valori dati dei tempi ottenuti durante l'ottimizzazione

extern int s_signal_period=7;
extern int t_trend_period =7; // 1-M1, 2-M5, 3-M15, 4-M30, 5-H1, 6-H4, 7-D1, 8-W.

cioè il TF = giorno, l'entrata nel mercato avviene all'apertura delle candele a 4 ore, nel tester della strategia, quando si testa sul periodo H4? Ci dovrebbe essere un ingresso SOLO all'apertura delle candele del giorno - porto sezioni del codice e rapporto di prova su H4 e D1, Expert Advisor con controllo dell'apertura di una nuova barra.

xtern string A4 = "Таймфрейм и параметры технических индикаторов";
extern int s_signal_period=7;
extern int t_trend_period =7;
...
static datetime prevtime = 0;       // по ценам открытия

...
int start()
{
   if(Time[0] == prevtime)   return(0);  //ждем нового бара
   prevtime = Time[0];                   //если появился новый бар , включаемся
   
   ...                     
//---------------------------------------------В ЛОНГ-------------------------------------------------------------------------      

      if(((type_op()==OP_BUY) || (Buy_signal==true && Sell_signal==false)) && (orderCount==0 || orderCount < 10) && Period_MA_Fast<Period_MA_Slow && delta_fma()>0 && delta_sma()>0 &&   
           iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,1) > iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) && //идентификация впадины 
           iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) > iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3) && //с последующим
           iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,4) > iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3))   //ростом
            
           WmOrderSend(Symbol(), OP_BUY, Lots_New, Ask,Bid-StopLoss*Point, Bid + TakeProfit*Point, "2MA+Momentum", magic);


//---------------------------------------------В ШОРТ--------------------------------------------------------------------------     
     
      if(((type_op()==OP_SELL) || (Buy_signal==false && Sell_signal==true)) && (orderCount==0 || orderCount < 10) && Period_MA_Fast<Period_MA_Slow  && delta_fma()<0 && delta_sma()<0 &&
          iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,1) < iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) && //вершина 
          iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) < iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3) && //с последующим 
          iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,4) < iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3))   //падением
      
          
           WmOrderSend(Symbol(), OP_SELL, Lots_New, Bid, Ask+StopLoss*Point, Ask - TakeProfit*Point, "2MA+Momentum", magic); 
      
         
 ...          
}//------------------------------------------Конец Старт-----------------------------------------------------

double delta_fma()
  {
    int signal_period= GetPeriod(s_signal_period);
    return(iMA(Symbol(),signal_period,Period_MA_Fast,0,MODE_EMA,PRICE_CLOSE,1)-
           iMA(Symbol(),signal_period,Period_MA_Fast,0,MODE_EMA,PRICE_CLOSE,3));
  }

double delta_sma()
  {
    int trend_period = GetPeriod(t_trend_period); 
    return(iMA(Symbol(),trend_period,Period_MA_Slow,0,MODE_EMA,PRICE_CLOSE,1)-
           iMA(Symbol(),trend_period,Period_MA_Slow,0,MODE_EMA,PRICE_CLOSE,3));
  }

//для оптимизации по всем периодам по всем периодам
int GetPeriod(int period)
{int periodres;
 switch(period)
  {
   case 1: periodres=1;break;     //M1
   case 2: periodres=5;break;     //M5
   case 3: periodres=15;break;    //M15
   case 4: periodres=30;break;    //M30
   case 5: periodres=60;break;    //H1
   case 6: periodres=240;break;   //H4
   case 7: periodres=1440;break;  //D1
   case 8: periodres=10080;break; //W
   default: periodres=1;break;
  }
return(periodres);
} 

Rapporti. Quando si testa su H4 - entrata nel mercato ogni 4 ore, se le condizioni di trading sono soddisfatte, anche seextern int s_signal_period =7;
extern int
t_trend_period =7;

D1 - test su D1 - entrando nel mercato all'apertura di D1, allo stessoextern int s_signal_period=7;
extern int
t_trend_period =7;

Questo dovrebbe essere così... Perché il tester della strategia entra nel mercato all'apertura dell'H4 quando prova su H4, ma non all'apertura delle candele giornaliere? perchés_signal_period=7;
extern int
t_trend_period =7;

Grazie per la dritta su questo problema.

 
Roman.:

Ragazzi, un suggerimento... Vi mostro i frammenti di codice in cui vengono calcolate le condizioni di entrata nel mercato. PERCHE' con i valori dati dei tempi ottenuti durante l'ottimizzazione

cioè il TF = giorno, l'entrata nel mercato avviene all'apertura delle candele a 4 ore, nel tester della strategia, quando si testa sul periodo H4? Ci dovrebbe essere un ingresso SOLO all'apertura delle candele del giorno - porto sezioni del codice e rapporto di prova su H4 e D1, Expert Advisor con controllo dell'apertura di una nuova barra.

Rapporti. Quando si testa su H4 - entrata nel mercato ogni 4 ore, se le condizioni di trading sono soddisfatte, anche seextern int s_signal_period =7;
extern int
t_trend_period =7;

D1 - test su D1 - entrando nel mercato all'apertura di D1, allo stessoextern int s_signal_period=7;
extern int
t_trend_period =7;

Questo dovrebbe essere così... Perché il tester della strategia entra nel mercato all'apertura dell'H4 quando prova su H4, ma non all'apertura delle candele giornaliere? perchés_signal_period=7;
extern int
t_trend_period =7;

Grazie per la dritta su questo problema.


Il codice dato non è sufficiente per rispondere
 
Vinin:

Il codice dato non è sufficiente per rispondere

Di quanto codice avete bisogno? La parte del segnale è lì...
 
Vinin:

Il codice dato non è sufficiente per rispondere

Ora l'ho testato su H1 - apre i trade ogni ora con s_signal_period=7;
extern t_trend_period =7;
 
Roman.:

Ora testato su H1 - apre gli scambi ogni ora con s_signal_period=7;
extern int t_trend_period =7;


Ha senso rendere globale la variabile signal_period e assegnarle un valore in init()

E cambiare il controllo per una nuova barra

   if(iTime(Symbol(),signal_period,0) == prevtime)   return(0);  //ждем нового бара
   prevtime = iTime(Symbol(),signal_period,0);                   //если появился новый бар , включаемся
 
Vinin:


Ha senso rendere globale la variabile signal_period e assegnarle un valore in init()

E cambiare il controllo della nuova barra


Capisco, Victor, grazie - lo proverò stasera dopo il lavoro. Scriverò a questo thread con i risultati.
 
come faccio a sapere se un ordine ha catturato un alce o no?
 
CLAIN:
qualche consiglio su come sapere se un ordine cattura una perdita o no?

Pensa bene.

Ricerca: individua il sito commerciale perdente :mql4.com, cerca il sito commerciale perdente :mql4.com

 
CLAIN:
Come faccio a sapere se un ordine ha preso una perdita o no?

Se OrderClosePrice()==OrderStopLoss(), allora l'ordine è definitivamente chiuso in perdita. Il trucco sta nell'area di quale profitto è stato chiuso. Diciamo che il trader ha aperto una posizione, ha impostato uno stop loss, e poi, quando la posizione si è spostata in profitto, ha spostato lo stop loss in una zona di profitto positivo - così, se lo stop è scattato, l'ordine sarà chiuso con profitto. Il prezzo ha vinto di nuovo e ha abbattuto l'ordine per lo stop. Cioè, l'OrderClosePrice() è realmente uguale all'OrderStopLoss(). L'ORDER Caught a Moose, ma non ha mostrato una perdita, bensì un profitto. Cosa fate in questa situazione?
 

Ciao!

Potete dirmi come calcolare la dimensione del lotto, in funzione del prezzo di entrata, dello StopLoss e della percentuale del deposito? Supponiamo che il prezzo di entrata sia 1,4500, lo StopLoss è 1,4400. Il rischio è di 100 pips. Se il prezzo di un pip è 0,1 e il rischio è il 2% del saldo (10000) la dimensione del lotto sarebbe 0,2. È possibile dedurre questa formula in MQL? Ho cercato in quasi tutto il forum e non ho trovato nulla del genere. Tutti gli altri metodi per il calcolo del lotto sono completamente diversi.

Grazie.