[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 330

 

Les gars, un indice... Je vous montre des fragments de code où les conditions d'entrée sur le marché sont calculées. WHY avec les valeurs données des délais obtenus lors de l'optimisation

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.

i.e. le TF = jour, l'entrée sur le marché se produit à l'ouverture des chandeliers de 4 heures, dans le testeur de stratégie, lorsqu'il est testé sur la période H4 ? Il devrait y avoir une entrée UNIQUEMENT à l'ouverture des bougies du jour - J'apporte des sections du code et du rapport de test sur H4 et D1, Expert Advisor avec contrôle de l'ouverture d'une nouvelle barre.

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

Rapports. Lors des tests sur H4 - entrée sur le marché toutes les 4 heures, si les conditions de trading sont remplies, bien queextern int s_signal_period =7 ;
extern int
t_trend_period =7 ;

D1 - test sur D1 - entrée sur le marché à l'ouverture de D1, à la mêmeextern int s_signal_period=7 ;
extern int
t_trend_period =7 ;

C'est censé être si... Pourquoi le testeur de stratégie entre-t-il sur le marché à l'ouverture H4 lorsqu'il teste sur H4, mais pas à l'ouverture des chandeliers quotidiens? cars_signal_period=7;
extern int
t_trend_period =7 ;

Merci pour le conseil sur cette question.

 
Roman.:

Les gars, un indice... Je vous montre des fragments de code où les conditions d'entrée sur le marché sont calculées. WHY avec les valeurs données des délais obtenus lors de l'optimisation

i.e. le TF = jour, l'entrée sur le marché se produit à l'ouverture des chandeliers de 4 heures, dans le testeur de stratégie, lorsqu'il est testé sur la période H4 ? Il devrait y avoir une entrée UNIQUEMENT à l'ouverture des bougies du jour - J'apporte des sections du code et du rapport de test sur H4 et D1, Expert Advisor avec contrôle de l'ouverture d'une nouvelle barre.

Rapports. Lors des tests sur H4 - entrée sur le marché toutes les 4 heures, si les conditions de trading sont remplies, bien queextern int s_signal_period =7 ;
extern int
t_trend_period =7 ;

D1 - test sur D1 - entrée sur le marché à l'ouverture de D1, à la mêmeextern int s_signal_period=7 ;
extern int
t_trend_period =7 ;

C'est censé être si... Pourquoi le testeur de stratégie entre-t-il sur le marché à l'ouverture H4 lorsqu'il teste sur H4, mais pas à l'ouverture des chandeliers quotidiens? cars_signal_period=7;
extern int
t_trend_period =7 ;

Merci pour le conseil sur cette question.


Le code donné n'est pas suffisant pour répondre
 
Vinin:

Le code donné n'est pas suffisant pour répondre

De combien de code avez-vous besoin ? La partie signal est là...
 
Vinin:

Le code donné n'est pas suffisant pour répondre

Maintenant je l'ai testé sur H1 - il ouvre des trades toutes les heures avec s_signal_period=7;
extern t_trend_period =7 ;
 
Roman.:

Maintenant testé sur H1 - ouvre des transactions toutes les heures avec s_signal_period=7;
extern int t_trend_period =7 ;


Il est logique de rendre la variable signal_period globale et de lui attribuer une valeur dans init()

Et changez le contrôle pour une nouvelle barre

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


Il est logique de rendre la variable signal_period globale et de lui attribuer une valeur dans init()

Et changez le contrôle de la nouvelle barre


Je vois, Victor, merci - je vais essayer ce soir après le travail. J'écrirai les résultats dans ce fil de discussion.
 
comment savoir si une commande a attrapé un élan ou non ?
 
CLAIN:
Avez-vous des conseils pour savoir si un ordre enregistre une perte ou non ?

Réfléchissez bien.

Recherche : détecter le site de commerce perdant :mql4.com, rechercher le site de commerce perdant :mql4.com

 
CLAIN:
Comment savoir si un ordre a pris une perte ou non ?

Si OrderClosePrice()==OrderStopLoss(), alors l'ordre est définitivement fermé sur un ordre à perte. L'astuce consiste à déterminer à quel profit il a été fermé. Disons que le trader a ouvert une position, fixé un stop loss, puis, lorsque la position est devenue bénéficiaire, il a déplacé le stop loss vers une zone de profit positive - ainsi, si le stop se déclenche, l'ordre sera fermé avec profit. Le prix s'est repris et a fait tomber l'ordre par le stop. C'est-à-dire que l'OrderClosePrice() est en réalité égal à l'OrderStopLoss(). L'ORDRE a attrapé un élan, mais il n'a pas enregistré une perte, mais un bénéfice. Que faites-vous dans cette situation ?
 

Bonjour !

Pouvez-vous me dire comment calculer la taille du lot, en fonction du prix d'entrée, du StopLoss et du pourcentage du dépôt ? Supposons que le prix d'entrée est de 1,4500, le StopLoss est de 1,4400. Le risque est de 100 pips. Si le prix d'un pip est de 0,1 et que le risque est de 2% du solde (10000), la taille du lot sera de 0,2. Est-il possible de déduire cette formule dans MQL ? J'ai cherché dans presque tout le forum et je n'ai rien trouvé de tel. Toutes les autres méthodes de calcul du lot sont complètement différentes.

J'aimerais l'utiliser comme base pour mon robot de trading.