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

 
abeiks:

Combien de barres du graphique actuel depuis la dernière heure connue du serveur (TimeCurrent()) jusqu'à un jour particulier par la première barre d'ouverture de ce jour (TimeDay(Time[80]) ?


iBarShift devrait aider
 
pu6ka:

iBarShift devrait aider

J'ai lutté toute la journée et je n'ai toujours pas réussi. Mauvaise expérience pour moi et plus encore. :)

Quelqu'un peut-il écrire cette fonction ?

 
abeiks:

J'ai lutté toute la journée et je n'ai toujours pas réussi. Mauvaise expérience pour moi et plus encore. :)

Quelqu'un peut-il écrire cette fonction ?

     int n = 0;                                           // индекс дня, в данном случае 0 - текущий день
datetime DayTime = iTime(NULL, PERIOD_D1, n);             // Начало дня "n" в секундах
     int cb = iBarShift(NULL,0,DayTime);                  // Получим на текущем ТФ индекс бара
 
Stells:

Bon après-midi.

Je ne comprends pas comment cela fonctionne

03:00:24 '9473965' : ordre de vente 0.01 GBPUSD ouvrant à 0.00000 sl : 1.65314 tp : 0.00000 échoué [Invalid S/L or T/P].

avec ce code

pourquoi le prix d'ouverture est de zéro


C'était ce soir ? Dans ce cas, il est fort probable que votre stoploss était inférieur au prix d'ouverture et pour un ordre de vente, le prix du stoploss doit être plus élevé.
 
pu6ka:


C'est un peu faux. J'ai besoin d'obtenir le début du jour "n" en secondes spécifiquement à partir de cette fonction TimeDay(Time[80]), mais cela ne fonctionne pas pour moi.

 

Je voulais évaluer l'histoire pour les trous.
J'ai fait ça :

int start() 
{
  if(Time[0] > prev_time ) 
  {
    if( iTime(NULL, PERIOD_M1,0)-iTime(NULL, PERIOD_M1,1) > 200000)
    {
      n=n+1;
      Print("n =",n ,"");
    }
    prev_time = Time[0];
  } 
  
  return (0);
}

Je comprends bien que iTime compte en secondes et que 200 000 = 2,31 jours ?

Est-il possible de le faire ? (Semble fonctionner, seulement 6 pièces détectées)

 
abeiks:

C'est un peu faux. J'ai besoin d'obtenir le début du jour "n" en secondes spécifiquement à partir de cette fonction TimeDay(Time[80]), mais cela ne fonctionne pas pour moi.


Plus précisément, à partir de cette fonction TimeDay(Time[80]), je dois effectuer d'autres calculs intermédiaires. Vous avez toujours le temps de la barre Time[80]. La méthode la plus simple serait la suivante :

     int n = iBarShift(NULL,PERIOD_D1,Time[80]);          // индекс дня, которому принадлежит время бара - Time[80]
datetime DayTime = iTime(NULL, PERIOD_D1, n);             // Начало дня "n" в секундах
     int cb = iBarShift(NULL,0,DayTime);                  // Получим на текущем ТФ индекс первого бара дня "n"
 
sv.:

J'ai pensé à évaluer l'histoire des trous.

Voici un script très utile, que j'utilise depuis des années. Si l'archive du devis est téléchargée, vous devez modifier deux paramètres pour éviter de fouiller dans les paramètres. Ils sont mis en évidence dans la capture d'écran avec un cadre rouge.

Pour le lancer sur n'importe quel graphique et attendre quelques secondes, jusqu'à ce que le message où le fichier avec le rapport est.

 
addict:

l'ordre d'achat est ouvert une fois, mais pour la vente le nombre d'ordres est à nouveau infini


Écrivez une fonction comme celle-ci

int start()

if( OrdersTotal()==0 && CountTrades()==0)

{

OrderSend ("EURUSD",OP_BUYLIMIT,l,1.36000,5,0,1.36000+tp*Point,"my order",1);

OrderSend ("EURUSD",OP_BUYSTOP,l,1.36000,5,0,1.36000+tp*Point,"my order",1);

sinon

{
OrderSend ("EURUSD",OP_SELLLIMIT,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
OrderSend ("EURUSD",OP_SELLSTOP,l,1.36000,5,0,1.36000-tp*Point,"my order",2);
}

}

retour(0) ;

}

//+------------------------------------------------------------------+

int CountTrades()

{

int count = 0 ;

for(int trade = OrdersTotal()-1 ; trade >=0 ; trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES) ;

if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)

compte++ ;

}

}

return(count) ;

 
pu6ka:


Plus précisément à partir de cette fonction TimeDay(Time[80]), vous devez effectuer quelques calculs intermédiaires supplémentaires. Vous avez encore le temps de la barreTime [80]. Ce serait plus facile de le faire de cette façon :


Merci ! :)