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

 
sponger:
Vous pouvez faire ceci : Km=MathMax(i/r,Point) ; // avec la division, et ce ne sera pas zéro !
 
borilunad:
Vous pouvez faire ceci : Km=MathMax(i/r,Point) ; // avec la division, et ce ne sera pas zéro !

wow !!! Tête ! Merci beaucoup ! !! Après un travail extrêmement fastidieux de quatre heures, j'ai finalement trouvé comment coller cette fonction de manière à ce que le testeur ne jure pas) est ressorti à peu près comme suit.

double a=iLowest(Symbol(),PERIOD_M1,MODE_LOW,m1,0) ; //renvoie l'indice de la barre pour n-périodes avec le prix minimum

double b=iHighest(Symbol(),PERIOD_M1,MODE_HIGH,m1,0) ; //renvoie l'indice de barre pour n-périodes avec le prix maximum

double MinLOWPeriod=iLow(Symbol(),PERIOD_M1,a) ; //renvoie la valeur du prix de la barre avec le prix le plus bas

double MaxHIGHPeriod=iHigh(Symbol(),PERIOD_M1,b) ; //renvoie le prix de la barre avec le prix le plus élevé

double PriceCloseBar=iClose(Symbol(),PERIOD_M1,0) ; //renvoie le prix de clôture de la dernière barre

double xm1=(PriceCloseBar-MinLOWPeriod)/(MathMax((MaxHIGHPeriod-MinLOWPeriod)/100,Point)) ;

Imprimer(xm1) ;

et a également rendu la formule plus lisse ;)

Merci !

 
Жалко, кнопочки "Спасибо" нету(
 

sponger:

C'estdommage qu'il n'y ait pas de bouton "Merci".

Mais il existe un autre bouton magique : le SRC. Lorsque vous l'utilisez, le code (ou ses fragments) devient plus net et plus lisible dans le post de l'auteur de la question, ajoutant des plus au karma de l'auteur de la question et augmentant le nombre de ceux qui regarderont ce code et décideront de l'aider.

Juste shhhh. . Ainsi dans la connaissance secrète de la magie du bouton SRC sont consacrés, en général, seulement ceux qui lisent les textes sacrés des manuels sur le site. Par exemple, comme ceux-ci.

Et vous réussissez ici à maîtriser la connaissance secrète pour résoudre d'autres questions !
 
sponger:

wow !!! Tête ! Merci beaucoup ! !! Après un travail extrêmement fastidieux de quatre heures, j'ai finalement trouvé comment coller cette fonction de manière à ce que le testeur ne jure pas) a donné à peu près le résultat suivant.

double xm1=(PriceCloseBar-MinLOWPeriod)/(MathMax((MaxHIGHPeriod-MinLOWPeriod)/100,Point)) ;

Imprimer(xm1) ;

et a également rendu la formule plus lisse ;)

Merci !

Vous êtes les bienvenus ! Et je suis d'accord avecDiPach à 100% ! Bonne chance !
 
void ChagingLots(int Magic,double percent,double lot)
{ 
  double t=2,             //коэффициент при делении,для того чтобы узнать цену закрытия
         PriceCl,         //цена закрытия части ордера
         takeprofit;      //нужна для вычислений
  int count = 0,order;
  for(int i=OrdersTotal()-1;i>=0;i--)    //пробегаемся по массиву ордеров
     {
        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
          {
            if(OrderSymbol()==Symbol() && OrderMagicNumber() == Magic)
              {
                 if(OrderType()== OP_BUY)        //если ордер на покупку
                 {
                 takeprofit = OrderTakeProfit();   //вычисляем тейк ордера
                 PriceCl    = NormalizeDouble((takeprofit + OrderOpenPrice())/t,Digits);  //примерную цену закрытия
                 order = OrderTicket();    //получили ордер
                 if(Bid>PriceCl) //если текущая цена оказалась выше нашей цены ,то закрываем часть ордера
                 {OrderClose(order,NormalizeDouble(lot*percent/100,2),PriceCl,3);} 
                 }
                 if( OrderType()== OP_SELL )// для продажи аналогично
                 {
                   takeprofit = OrderTakeProfit();
                   PriceCl    = NormalizeDouble((takeprofit + OrderOpenPrice())/t,Digits);
                   order = OrderTicket();
                   if(Bid<PriceCl)
                   {OrderClose(order,NormalizeDouble(lot*percent/100,2),Bid,3);}
                 }
              }
          }
     }
     
}

Bonjour à tous)

J'ai essayé d'écrire une fonction pour fermer une partie de la position, mais quand je l'exécute dans le testeur, 138 fait apparaître une erreur, je ne comprends pas quel est le problème. Aidez-moi s'il vous plaît.

Voici un Conseiller Expert dans lequel cette fonction devrait fonctionner)

Dossiers :
zigzagx.mq4  16 kb
 
LBatters:

Bonjour à tous)

J'ai essayé d'écrire une fonction pour fermer une partie de la position, mais quand je l'exécute dans le testeur, 138 fait apparaître une erreur, je ne comprends pas quel est le problème. Aidez-moi s'il vous plaît.

J'ai un EA où cette fonction devrait fonctionner).

Avez-vous regardé dans le Dock, ce que cette erreur signifie ! C'est à partir de là que vous trouverez la réponse !

À quel prix l'achat est-il clôturé ? Et la vente ?

 

Salutations à tous
Ma question est plus liée aux développeurs de methaquotes, mais néanmoins...


Сколько баров храниться история? Т.е. с каким максимальным по сдвигу баром можно работать?

Code :

Print(iMA(Symbol(),0,14,0,MODE_SMA,PRICE_CLOSE,1200));

Print(iClose(Symbol(),0,1200));

Lors du test de ce décalage, le terminal sort 0.0 pour 2 cas de figure

Mais

Print(iMA(Symbol(),0,14,0,MODE_SMA,PRICE_CLOSE,120));

Print(iClose(Symbol(),0,120)); 

Dans le test, tout fonctionne

Est-il possible d'ajuster la taille de l'historique disponible ? Peut-être que quelqu'un a été confronté à un tel problème et a déjà trouvé une solution ?
Merci d'avance !

 

Bonjour à tous.

J'essaie de mettre à jour un simple EA de trawl par Kim pour supprimer les ordres en attente après la fermeture de tous les ordres de marché, il échoue (

J'ai ajouté une fonction pour supprimer les commandes en attente :

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 28.11.2006                                                     |
//|  Описание : Удаление ордеров                                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любой ордер)                    |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
void DeleteOrders(string sy="", int op=-1, int mn=-1) {
  bool fd;
  int  err, i, it, k=OrdersTotal(), ot;

  if (sy=="0") sy=Symbol();
  for (i=k-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot>1 && ot<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) {
            for (it=1; it<=NumberOfTry; it++) {
              if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
              while (!IsTradeAllowed()) Sleep(5000);
              fd=OrderDelete(OrderTicket(), clDelete);
              if (fd) {
                if (UseSound) PlaySound(SoundSuccess); break;
              } else {
                err=GetLastError();
                if (UseSound) PlaySound(SoundError);
                Print("Error(",err,") delete order ",GetNameOP(ot),": ",ErrorDescription(err),", try ",it);
                Sleep(1000*5);
              }
            }
          }
        }
      }
    }
  }
}

J'ai été confronté à un autre problème que je ne devrais pas être en mesure de résoudre, car je ne suis pas très doué pour le codage.

Je suppose que je devrais écrire une condition telle que :

Ce n'est qu'un exemple tiré d'un autre EA.

   if(AccountProfit()<-TargetLoss || AccountProfit()>TargetProfit) 
     {
      ClosePosFirstProfit();
      if(DeleteOrders) DeleteOrders();
     }


Aidez-moi, s'il vous plaît.

Dossiers :
tral.mq4  19 kb
 
Messieurs les connaisseurs de MQL-4, comment le code MQ4 peut-il décharger et recharger un indicateur ?
Raison: