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

[Deleted]  
Equilibrium:

Merci beaucoup)), la clôture de l'ordre fonctionne, sans erreur, mais les critères ne fonctionnent pas comme prévu à nouveau((, code et capture d'écran joints, aide s'il vous plaît....
if (M_2 < S_2 && M_1>=S_1) 
      { 
       if (Total>0)
         {
          Close_Order (Lts,Tip);
         } 
       if (Total==0 тут критерий не сработает, так как переменная Total еще равна предыдущему значению, т.е. 1 и ордер открываться не будет
				 нужно использовать OrdersTotal() или перерассчитывать ее

       
         {                                          
          Open_Order_B (Lts);     
         }                                      
      }
   if (M_2 > S_2 && M_1<=S_1 ) 
      { 
       if (Total>0)
          {
           Close_Order (Lts,Tip); 
          }
       if (Total==0)         то же самое
          {                                          
           Open_Order_S (Lts);                                               
          }


D'un coup d'oeil, ce que je vois dans la fonction de fermeture des ordres, vous devez sélectionner l'ordre par le ticketOrderSelect(Ticket, SELECT_BY_TICKET), le nombre de lots n'indique pas la variable Lts, car elle est recalculée à chaque fois, mais utilisez OrderLots() Et une autre chose, vous continuez à travailler sur la barre 0, respectivement, les critères sur une barre peuvent disparaître, vos ordres peuvent ne pas s'ouvrir où vous le souhaitez. Remplacer la barre 0 par 1 et 1 par 2 dans les paramètres de l'indicateur.


[Deleted]  
borilunad:

Qui est obligé de faire 5.000 ? Commencez par 100, testez vous-même, votre courtier et décidez ensuite en toute confiance ! L'argent est à vous !

Je m'en sors bien avec un petit depo depuis six mois maintenant ! Tout va bien :)
 
Beowulf:

Tout va bien sur le petit dépôt depuis six mois maintenant ! Tout est juste comme il se doit :)
Si tout va bien, jetez 2 000 dollars et travaillez pendant six mois de plus. Et alors vous verrez les résultats.
[Deleted]  
Tous les ordinateurs ont META TRADER connecté au compte, mais seul le mien ne fonctionne pas :-( peut-être que quelqu'un peut me dire ce que l'on peut faire ? peut-être quelque chose à installer en plus. je ne veux pas réinstaller vin.... J'ai même désinstallé le pare-feu, je pensais que c'était le problème, j'ai réinstallé le programme 20 fois... MarketTrader fonctionne sans aucun problème, j'aimerais travailler avec Metatrader !
 
kolospav:
Tous les ordinateurs ont META TRADER connecté au compte, mais seul le mien ne fonctionne pas :-( peut-être que quelqu'un peut me dire ce que l'on peut faire ? peut-être quelque chose à installer en plus. je ne veux pas réinstaller Windows.... J'ai même désinstallé le pare-feu, je pensais que c'était le problème, j'ai réinstallé le programme 20 fois... Je n'ai eu aucun problème avec MarketTrader, j'aimerais utiliser Metatrader !
Où se trouve cet ordinateur ? Par exemple, à la maison, MT4 se connecte bien au serveur, mais au travail, ce n'est pas le cas.
 

Bonjour ! Je ne sais même pas comment l'écrire. C'est ma propre fonction que j'ai oubliée. Oui, même dans la version 5. Quelqu'un pourrait-il clarifier cela ? Comment le mettre en œuvre à quatre ?

double GetLot(  double Riskk,  ENUM_ORDER_TYPE  action ,  string  symbol ,   double  price ,  double   Lott  ){ 

                     double  volume=1,margin=1; 

                       if(use_percent_of_deposit) return  (Lot) ; MqlTick last_tick;SymbolInfoTick(Symbol(),last_tick);

                                                                                   switch(action)

     {

      case ORDER_TYPE_BUY: price=last_tick.ask ;

      case ORDER_TYPE_SELL: price=last_tick.bid ;

      case ORDER_TYPE_BUY_LIMIT: price=price;

      case ORDER_TYPE_SELL_LIMIT:  price=price;

      case ORDER_TYPE_BUY_STOP:  price=price;

      case ORDER_TYPE_SELL_STOP:  price=price;

      case ORDER_TYPE_BUY_STOP_LIMIT:  price=price;

      case ORDER_TYPE_SELL_STOP_LIMIT:  price=price;}

                     OrderCalcMargin(

         action,           // тип ордера

                  symbol,           // имя символа

                  volume,           // объем

                  price,            // цена открытия

                 margin            // переменная для получения значения маржи

                   ); 

         

         double  Koeffitsyenta=AccountInfoDouble(ACCOUNT_BALANCE)/ margin ;

         Lott= (Koeffitsyenta*Riskk)/100;

         double Shag=1/SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP); 

          Lott= Lott*Shag; Print( "Lot*Shag  " ,  Lot   );

         Lott=NormalizeDouble(Lot,0); 

          Lott= Lott/Shag;

         double MAX=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX);

           double MIN=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN);

          if (Lot>MAX) Lot=MAX;if (Lot<MIN) Lot=MIN;

          return(Lot);

                 

                   }
 

Veuillez indiquer comment calculer la valeur de l'indicateur personnalisé dans le code, car cela ne fonctionne pas.

double osma1=iCustom(NULL, 0, "OsMA",12,26,9,0,1) ;

Je n'arrive pas à comprendre ce qui ne va pas

 
Montrer en code ce que vous faites ?
 
kwadrad:

Veuillez indiquer comment calculer la valeur de l'indicateur personnalisé dans le code, car cela ne fonctionne pas.

double osma1=iCustom(NULL, 0, "OsMA",12,26,9,0,1) ;

Je n'arrive pas à comprendre ce qui ne va pas


Pas assez d'informations dans la question. Relisez-le. Et vérifiez tout.
 
Roman.:

Pas assez d'informations dans la question. Relisez-le, s'il vous plaît. Vérifiez tout.


Vous devez calculer la valeur de l'indicateur personnalisé "OsMA".

Écrire en code

double osma1=iCustom(NULL, 0,"OsMA",12,26,9,0,1);

Il devrait retourner la valeur de l'OsMA de la bougie précédente.

mais en réalité, il renvoie des résultats erronés.

Le tampon semble être "0", le code indicateur a trois paramètres, écrits dans le même ordre que dans le code indicateur, mais le résultat est faux.

Question : pouvez-vous me dire où se trouve l'erreur ?