Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 234

 
Vitaly Muzichenko:

Une bonne programmation "tonique" est un programme sans erreurs ni avertissements, tout le reste relève de l'amateurisme.


Laissons le bon goût de côté. Je suppose que de tels avertissements sont faits pour une raison. La question est de savoir pourquoi.

 
Artyom Trishkin:
Vous n'allez pas retirer du journal l'argent gagné par le conseiller expert. Par conséquent, le programme doit traiter les erreurs afin d'agir en conséquence.

Le logiciel les traite donc quand même, s'il y en a, et affiche des messages à leur sujet. Qu'est-ce que je rate ici ?

 
Andrey Sokolov:

Le logiciel les traite donc quand même, s'il y en a, et affiche des messages à leur sujet. Qu'est-ce que je rate ici ?

Pas le programme, mais le terminal.
Pour que le programme puisse les traiter, ils doivent d'abord être récupérés. Pour ce faire, les fonctions commerciales renvoient false en cas d'erreur. En outre, si le résultat de la fonction est faux, vous devez obtenir le code d'erreur GetLastError() et le traiter dans votre programme.
 

bonjour ! le terminal n'est pas autorisé ! où aller, que faire ?

 
kalmyk87 bonjour ! le terminal n'est pas autorisé ! où aller, que faire ?
Autorisation = connexion au serveur du courtier, vous devez allumer l'internet. Si démo - vous avez oublié votre mot de passe, ouvrez un nouveau compte. Si elle est réelle - appelez votre courtier.
 
STARIJ:
Autorisation = communication avec le serveur du courtier, vous devez allumer l'internet. Si démo - oubliez votre mot de passe, ouvrez un nouveau compte. Si elle est réelle, appelez le courtier.

J'ai autorisé mon compte... mais le profil mql5 n'est pas autorisé pour une raison quelconque...

 

Bon après-midi. Veuillez m'aider à répondre à cette question...

L'indicateur dessine un niveau de blanc pour le jour actuel à partir du CSV. Si le prix n'atteint pas ce niveau, il (le niveau) continue à être affiché avec une ligne en pointillés les jours suivants. Lorsque le prix atteint cette ligne blanche en pointillés dans le futur, il s'arrête. Cependant, après avoir vérifié les niveaux non atteints le jour suivant, l'indicateur considère le niveau comme atteint et cesse de le dessiner.

Je voudrais que cette ligne pointillée reste sur le graphique. Merci.

//------------- читаю и разбираю строку из файла --

txt_data = FileReadString(file);   дата_уровней = StrToTime(txt_data+" 00:00");
if(FileIsEnding(file)==true)     break; // если конец  Выход из цикла
ArrayInitialize(d_input, 0);
for (int i=0; i<12; i++)  //== считываю уровни в массив
 {
 txt_data = FileReadString(file); 
 d_input[i] = replace_dot(txt_data);
 if ( FileIsLineEnding(file) ) break;
 }

if(уровни == Daily)
  {
   double white = d_input[4];
   t0 = дата_уровней + 1*PeriodSeconds(PERIOD_H1);
   t1 = дата_уровней + 23*PeriodSeconds(PERIOD_H1);
     Draw_Level("white", white, c_day_3, STYLE_SOLID, толщина); 
      if(показ_неотработок)
    if( !check_white_level(дата_уровней, white) )
     draw_line(t0, white, c_day_3) ;
  }
//   отображение  уровней 
void Draw_Level(string name, double _level, color _colr, int _style, int _width)
{
string o_name = i_name +"_"+ name +"_"+ TimeToStr(t0,TIME_DATE);
if (_level>0)
 {
  if (ObjectFind(o_name) != 0)
   ObjectCreate(o_name, OBJ_TREND, 0, t0, _level, t1, _level);
  ObjectSet(o_name, OBJPROP_TIME1, t0);
  ObjectSet(o_name, OBJPROP_PRICE1, _level);
  ObjectSet(o_name, OBJPROP_TIME2, t1);
  ObjectSet(o_name, OBJPROP_PRICE2, _level);
  ObjectSet(o_name, OBJPROP_COLOR, _colr);
  ObjectSet(o_name, OBJPROP_STYLE, _style);
  if(_style == STYLE_DOT)   ObjectSet(o_name, OBJPROP_WIDTH, 1);
    else     ObjectSet(o_name, OBJPROP_WIDTH, _width);
  ObjectSet(o_name, OBJPROP_RAY, false);  // луч
  ObjectSetText(o_name, DoubleToStr(_level, 4) );
  ObjectSetInteger(0, o_name, OBJPROP_SELECTABLE, False); 
   ObjectSetInteger(0, o_name, OBJPROP_HIDDEN, True);  
   ObjectSetString(0, o_name, OBJPROP_TOOLTIP, "\n"); // убираю всплывающую надпись
 }
}
// проверка_отработки уровня
bool check_white_level(datetime t_open, double _level)
{
if (_level <= 0) return(False);
int bar0 = iBarShift(NULL, 0, t_open);
double max = High[iHighest(NULL, 0, MODE_HIGH, bar0, 0)];
double min = Low[iLowest(NULL, 0, MODE_LOW, bar0, 0)];
if( _level <= max && _level >= min )
  return(TRUE);
return(False);
}
void draw_line(datetime begin, double _level, color _clr)
{
if (_level <= 0) return;
string o_name = i_name +"_wh1_"+ TimeToStr(begin,TIME_DATE);
datetime t_0 = begin ;
datetime t_1 = TimeCurrent() ;
  if (ObjectFind(o_name) != 0)
   ObjectCreate(o_name, OBJ_TREND, 0, t_0, _level, t_1, _level);
  ObjectSet(o_name, OBJPROP_TIME1, t_0);
  ObjectSet(o_name, OBJPROP_PRICE1, _level);
  ObjectSet(o_name, OBJPROP_TIME2, t_1);
  ObjectSet(o_name, OBJPROP_PRICE2, _level);
  ObjectSet(o_name, OBJPROP_COLOR, _clr);
  ObjectSet(o_name, OBJPROP_STYLE, STYLE_DOT);
   ObjectSet(o_name, OBJPROP_WIDTH, 1);
    ObjectSet(o_name, OBJPROP_RAY, false);  // луч
    ObjectSetInteger(0, o_name, OBJPROP_SELECTABLE, False); 
  ObjectSetInteger(0, o_name, OBJPROP_HIDDEN, True);  
  ObjectSetString(0, o_name, OBJPROP_TOOLTIP, "\n"); // убираю всплывающую надпись
}
 
AIDEZ-MOI À COMPRENDRE CE QU'EST UNE OBLIGATION
1) Comment calculer ma caution ? Comment puis-je obtenir cette valeur dans l'EA ?
2) Comment calculer une marge pour le verrouillage ? Comment puis-je obtenir cette valeur dans mon EA ?
3) Comment puis-je obtenir la valeur de la marge à partir du ticket d'un ordre ouvert ? Je n'ai pas trouvé de fonctions comme OrderMargin(), bien que je puisse voir la marge sur les ordres dans le terminal (ou est-ce qu'elle ment ?).
4) Le dépôt est-il un paramètre fixé une fois au moment de l'ouverture de l'ordre ou recalculé (flottant) à chaque nouveau moment d'ouverture de l'ordre au taux actuel ?

La formule pour le calcul manuel du dépôt est-elle correcte ?
(base_lot * trade_lot * current_rate%%%%%USD) / levier = marge USD
 
smart_man:
AIDEZ-MOI À COMPRENDRE CE QU'EST UN DÉPÔT
1) Comment calculer le dépôt ? Comment puis-je obtenir cette valeur dans mon EA ?
2) Comment calculer une marge pour le verrouillage ? Comment puis-je obtenir cette valeur dans mon EA ?
3) Comment puis-je obtenir la valeur de la marge à partir du ticket d'un ordre ouvert ? Je n'ai pas trouvé de fonctions comme OrderMargin(), bien que je puisse voir la marge sur les ordres dans le terminal (ou est-ce qu'elle ment ?).
4) Le dépôt est-il un paramètre fixé une fois au moment de l'ouverture de l'ordre ou recalculé (flottant) à chaque nouveau moment d'ouverture de l'ordre au taux actuel ?

La formule pour le calcul manuel du dépôt est-elle correcte ?
(base_lot * trade_lot * current_rate%%%%%USD) / levier = marge USD

1)

 margin =AccountInfoDouble(ACCOUNT_MARGIN);                        //-Размер зарезервированных залоговых средств на счете  в валюте депозита

2) ne pas utiliser

3) La formule est la même que la vôtre, mais au lieu de "current_%%%%%USD", c'est le prix ouvert de la position.

4) le paramètre est fixe


Correct

 
Alekseu Fedotov:

1)

2) ne pas utiliser

3) La formule est la même que la vôtre, mais au lieu de "current_%%%%%USD", c'est le prix ouvert de la position.

4) le paramètre est fixe


Correct

Merci !

2) J'ai trouvé des informations selon lesquelles la formule est la même, mais à la fin, je divise tout par 2, mais je ne sais pas si c'est vraiment vrai.

3) Prix d'ouverture de la position, qui par OrderOpenPrice() ?

5) Une autre question, si une ouverture est prévue, alors avant cela tous les coûts futurs de l'ordre doivent être calculés (montant de la marge, montant des profits et pertes, mais ici nous devons aussi calculer la valeur du point, vérifier la disponibilité des fonds libres, limiter en pourcentage les fonds libres pour le risque en une fois, ai-je manqué quelque chose d'autre ? Ou y a-t-il un autre moyen ? Y a-t-il un drawdown, doit-il être calculé également ?

5.1) Comment calculer la valeur du pip ?

5.2) Comment puis-je vérifier si j'ai des fonds disponibles ?

Je pose ces questions, car il est difficile de comprendre par moi-même, il y a tellement de choses spécifiques, comme la comptabilité.

Raison: