Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 63

 
FAQ:


Je vois, plus de questions alors :

Vous devez contrôler l'heure d'ouverture de la bougie avec la fonction : iTime

J'ai essayé de contrôler le temps d'ouverture d'un chandelier avec cette fonction : iTime

L'ordre s'ouvre à la bougie de 15 heures...... mais la bougie de 15 heures n'est souvent pas la première.

Avant cela, les chandeliers précédents avaient déjà été en contact avec 1.3000.

Et je veux que ce soit le premier chandelier qui a franchi 1.3000 à 15 heures, sans aucun autre chandelier.

Merci.

 
Parfois, les nouveaux venus sont déconcertés... exactement la logique, la simple logique humaine. et la programmation est plutôt linéaire. essayez de penser à vos conditions en une seule ligne.
 
FAQ:
Parfois, les nouveaux venus sont déconcertés... exactement la logique, la simple logique humaine. et la programmation est plutôt linéaire. essayez de penser à vos conditions en une seule ligne.

Laissez-moi vous donner mon idée sous forme de graphique.

http://clip2net.com/s/5vbxUK

Et comment exprimer cette idée en une ligne ?

Merci.
 
dans le temps, dans l'ordre inverse. c'est ainsi que le programme va l'analyser. imaginez que vous vous trouvez au point de décision.
 
FAQ:
dans le temps, dans l'ordre inverse. C'est ainsi que le programme l'analyserait.

Désolé - je ne comprends pas bien votre intention.

J'apprécierais si vous pouviez écrire ce que cela pourrait donner sous forme de code...

Merci.

 
solnce600:

Bonjour à tous !

Je serais très reconnaissant à toute personne qui pourrait me dire comment coder une telle idée.


Le graphique TF 5

Actuellement, l'offre est à 1.3150

Il y a un niveau de prix - 1.3000.

Le prix baisse.

====================================

// Si le prix franchit 1.3000.

// Si le prix traverse d'abord 1.3000.

// Si le prix franchit pour la première fois 1.3000 et que le franchissement se situe dans la bougie de15 heures (c'est-à-dire 15:00,15:05.....15:55)


// Ouvrir un commerce.

===================================

Merci.



il ne s'agit que d'une idée sans mise en œuvre complète

extern double crossLevel = 1.                       3;extern int hour = 15;int start(){    static int cross = 0;    if (TimeHour(TimeCurrent()) == hour) {// la bougie correspond à l'heure        if (isCrossPrice(crossLevel, Bid)) {// franchissement de niveau let Bid            cross++;            if (cross == 1) {// premier franchissement de niveau                ifxml-ph// ouvrir un ordre - implémenter vous-même                    cross = 0;                }            }        }    }bool isCrossPrice(double level, double price){    bool res = false;    static double prev = 0;    if (prev > 0) {        if ((prev <= niveau && prix > niveau) || // croisement de niveau vers le haut            (prev >= niveau && prix < niveau)) { // croisement de niveau vers le bas            res = true;        }    }    prev = prix;    return(res);} }
 
keekkenen:

il ne s'agit que d'une idée sans mise en œuvre complète


Merci beaucoup.
 
solnce600:


Désolé - je ne comprends pas bien votre intention.

J'apprécierais si vous pouviez écrire ce à quoi cela pourrait ressembler sous forme de code...

Merci.


Le chemin vers le code est encore long, il faut comprendre le principe, l'algorithme.
 

Cela fait deux jours que je me débats et je n'arrive pas à comprendre. J'ai besoin de trouver le prix le plus bas des n dernières barres, mais pas à partir de la barre actuelle, mais à partir de la barre reçue par la fonction. La fonction renvoie l'indice de la barre à laquelle l'ordre a été ouvert. C'est à partir de cette barre qu'il faut remonter dans l'historique des n barres pour trouver le prix le plus bas. Voici mon code, qu'est-ce qui ne va pas ?

 double low_price_n_bar()
 {
   
   double low_bar=100000, index_bar;
   
   for (int i=time_orders; i<=count_bar; i++) //time_orders индекс бара получаемого из функции, count_bars внешняя переменная количество баров для сдвига назад по истории
   {
    index_bar= ND(iLow(Symbol(),0,i));
    if (index_bar<low_bar)
    {
      low_bar=index_bar;     
    }
   
   }
   return(low_bar);
 }
 

Chers utilisateurs du forum, je vous prie de bien vouloir m'aider.


if (TimeBar==Time[0]) return(0) ;


double MA1 = NormalizeDouble(iMA(NULL,TimeFrame_2,MA_Period_2,MA_Shift_2,MA_Method_2,Applied_Price_2,0),Digits) ; // où 0 est le décalage de la barre actuelle de la valeur spécifiée. nombre de périodes en arrière
//double MA21 = NormalizeDouble(iMA(NULL,timeframe_2,period_2,ma_shift_2,ma_method_2,applied_price_2,2),Digits) ;
double MA2 = NormalizeDouble(iMA(NULL,timeFrame_3,MA_Period_3,MA_Shift_3,MA_Method_3,Applied_Price_3,0),Digits) ;
//double MA31 = NormalizeDouble(iMA(NULL,timeframe_3,period_3,ma_shift_3,ma_method_3,applied_price_3,2),Digits)
double MA3 = NormalizeDouble(iMA(NULL,TimeFrame_4,MA_Period_4,MA_Shift_4,MA_Method_4,Applied_Price_4,0),Digits) ;

double OsMA = NormalizeDouble(iOsMA(NULL,TimeFrame_5,FastEMA_5,SlowEMA_5,SignalSMA_5,Applied_Price_5,0),Digits)

si (MaxOrders>b && Low[0]>=MathMax(MA1,MA2)&& Low[0]>MA3 && Ask>MathMax(MA1,MA2)+DeltaOpen*Point && Ask>MA3 && MA2<MA3 && MA1<MA3 && OsMA>0 && Trade)
{
if (OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slippage,SL,TP, "Puria_1",Magic,0,Blue) ==-1) TimeBar=0 ;
else TimeBar=Time[0] ;

}
si (MaxOrders>s && High[0]<=MathMin(MA1,MA2) && High[0]<MA3 && Bid<MathMin(MA1,MA2)-DeltaOpen*Point && Bid<MA3 && MA1>MA3 && MA2>MA3 && OsMA<0 && Trade)
{
if (OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slippage,SL,TP, "Puria_1",Magic,0,Red) ==-1) TimeBar=0 ;
else TimeBar=Time[0] ;
}

retour(0) ;


Dans ces conditions, le conseiller expert ouvre une transaction, disons, sur VENTE, la ferme sur un bénéfice, et ouvre immédiatement une autre transaction sur VENTE. Comment prescrire dans un EA, que lorsque le signal est reçu, une seule transaction doit s'ouvrir, c'est-à-dire un signal - une transaction.
Je vous remercie d'avance.