[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

 
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.


 
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.
 
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 ?

Raison: