Fermeture de postes. Signal lumineux de marche. - page 8

 
Lukyanov:

Bénéfice net 6157.73


Sergey, un profit de 6000 $ à 6000 - 9000 transactions.

1. Qu'est-ce que le MJ ?

2. 1 500 transactions par jour - quel courtier peut supporter cela ?

 

Bonsoir à tous ! Il y a eu un autre problème. S'il vous plaît dites-moi si vous savez comment écrire l'expression

hann = iCustom(.... .... .... ) pour indicateur

Au moins dans sa forme la plus basique - pour définir le paramètre Lb et le numéro de la barre...

/+------------------------------------------------------------------+
//|                                                          SSL.mq4 |
//|                                                          Kalenzo |
//|                                      bartlomiej.gorski@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Kalenzo"
#property link      "bartlomiej.gorski@gmail.com"
//----
#property indicator_buffers 1
#property indicator_color1 Blue
extern int Lb=10;
double ssl[],Hld,Hlv;
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexBuffer(0,ssl);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit() {   return(0);  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//----
   for(int i=Bars-Lb;i>=0;i--)     {
      if(Close[i]>iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_HIGH,i+1))
         Hld=1;
      else        {
         if(Close[i]<iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_LOW,i+1))
            Hld=-1;
         else
            Hld=0;
        }
      if(Hld!=0)
         Hlv=Hld;
      if(Hlv==-1)
         ssl[i]=iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_HIGH,i+1);
      else
         ssl[i]=iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_LOW,i+1);
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
Voici le graphique -
 
rid:

Bonsoir à tous ! Il y a eu un autre problème. Aidez-nous, qui peut - écrire une expression

hann = iCustom(.... .... .... ) pour indicateur

iCustom( Symbol(), Period(), "SSL", indLb, 0, bar );
 

Merci, komposter.

 

Bon après-midi. Veuillez me conseiller.

Il y a un indicateur Force-index installé dans mt4. C'est bipolaire, avec une ligne médiane à t.0.

Voici son code.

#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
 
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
//---- input parameters
extern int ExtForcePeriod=13;
extern int ExtForceMAMethod=0;
extern int ExtForceAppliedPrice=0;
//---- buffers
double ExtForceBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string sShortName;
   SetIndexBuffer(0, ExtForceBuffer);
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
//---- name for DataWindow and indicator subwindow label
   sShortName="Force("+ ExtForcePeriod+")";
   IndicatorShortName( sShortName);
   SetIndexLabel(0, sShortName);
//---- first values aren't drawn
   SetIndexDrawBegin(0, ExtForcePeriod);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Force Index indicator                                            |
//+------------------------------------------------------------------+
int start()
  {
   int nLimit;
   int nCountedBars=IndicatorCounted();
//---- insufficient data
   if(Bars<= ExtForcePeriod) return(0);
//---- last counted bar will be recounted
   if( nCountedBars> ExtForcePeriod) nCountedBars--;
   nLimit=Bars- nCountedBars;
//---- Force Index counted
   for(int i=0; i< nLimit; i++)
      ExtForceBuffer[ i]=Volume[ i]*
(iMA(NULL,0, ExtForcePeriod,0, ExtForceMAMethod, ExtForceAppliedPrice, i)-
iMA(NULL,0, ExtForcePeriod,0, ExtForceMAMethod, ExtForceAppliedPrice, i+1));
//---- done
   return(0);
  }


Cependant. Ma tâche consiste à dessiner l'indicateur dans son intégralité en zone positive (ou négative, peu importe).

Pour le faire de manière programmatique.

C'est-à-dire pas comme ceci : double force=(iForce+10), mais de manière programmatique !

Veuillez indiquer qui sait ce qu'il faut ajouter (insérer) au code à cette fin ?

 
rid >> :

Cependant. J'ai besoin que l'indicateur entier soit dessiné dans la zone plus (ou moins, peu importe).

S'il vous plaît, dites-moi, qui sait, ce que je dois ajouter au code pour cela ?

IMHO, le wrapper sigmoïde est ce dont vous avez besoin. Le tampon aura des valeurs de 0 à 1.

for(int i=0; i< nLimit; i++)
      ExtForceBuffer[ i]=Volume[ i]*
(iMA(NULL,0, ExtForcePeriod,0, ExtForceMAMethod, ExtForceAppliedPrice, i)-
iMA(NULL,0, ExtForcePeriod,0, ExtForceMAMethod, ExtForceAppliedPrice, i+1));

//заменяем на 

for(int i=0; i< nLimit; i++)
{
         ExtForceBuffer[ i]=Volume[ i]*
   (iMA(NULL,0, ExtForcePeriod,0, ExtForceMAMethod, ExtForceAppliedPrice, i)-
   iMA(NULL,0, ExtForcePeriod,0, ExtForceMAMethod, ExtForceAppliedPrice, i+1));

   ExtForceBuffer[ i] = Sigmoid( ExtForceBuffer[ i]);
}

//...

double Sigmoid(double x)
{
   double value = MathExp( x);
   return ( value/(1 + value))
}
 

Merci, TheXpert ! Je vais essayer.

//gzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz.

Cela a marché !

 

Bonjour à tous. Je veux faire mon premier EA, mais je ne sais pas comment écrire le code. Les transactions sont ouvertes sur le MA. Si le prix touche la MA du haut, alors achetez. S'il touche en dessous, alors c'est une vente. La pente de l'AM doit être prise en compte. La pente des MAs et l'ouverture de l'ordre doivent être unidirectionnelles. Merci.

 
Shu писал(а) >>

la recherche est fascinante ! c'est même bon pour le cerveau et pour l'expérimentation. je salue et respecte cela.

Tous les vélos et les motos ont déjà été (barrés) inventés avant nous - mettez toutes les commandes dans votre propre tableau (peut-être plus d'un) et faites les manipulations que vous voulez avec. le trier selon n'importe quel critère, ou le supprimer (le ticket est votre ami), ou le modifier (il est facile de faire des modifications de stoploss/ takeprofits, ou de créer de nouveaux ordres.

ps (une dernière chose). si vous décidez de prendre votre création au sérieux, n'oubliez pas qu'à tout moment (milliseconde) la connexion avec votre société de courtage peut se couper. La solution idéale est de permettre au conseiller expert de voir la nécessité de fermer certains ordres (dans ce cas) après un arrêt/activation d'urgence.

Cependant, la plupart des "grails" vendus publiquement sous forme de P.C. - sont pareillement des jouets...

A propos des tableaux, je ne comprends pas vraiment. Mais la deuxième idée - que si l'expert manque le signal de fermeture, il sera quand même capable de saisir la nécessité de la fermeture - me plaît. Mais comment le faire...

 

Après-midi.

EA place des ordres limite par limite suivant le mouvement du prix à la distance =Distance.

Je dois supprimer les ordres excessifs (les plus éloignés) au fur et à mesure que le prix augmente.

Je l'ai fait. Mais pour une raison quelconque, cela fonctionne très mal ! La première commande est supprimée normalement. Alors, au contraire, ceux qui sont les plus proches du prix sont supprimés ! Puis ils s'arrêtent ou sont supprimés "à l'improviste", et le journal génère l'erreur 4108 (ticket inconnu). Ensuite, pendant un certain temps, ils sont supprimés normalement.

Je crois qu'il a été dit quelque part qu'il est important d'organiser correctement la recherche des commandes.

//жжжжж Удаление лишних байлим ордеров жжжжжжжжж
if( NumberOfOrders(NULL,OP_BUYLIMIT, MAGIC)> КоличествоОрдеров  )  {
    //если ордеров больше заданного значения 
//for (int z = OrdersTotal() - 1; z >= 0; z -- )  {//перебираем с "конца"
  for ( int z=0;    z<OrdersTotal();        z++)  {//перебираем с начала         
  if (OrderSelect( z, SELECT_BY_TICKET, MODE_TRADES))          {//перебираем по тикету           
   if (OrderSymbol()==Symbol()&& OrderType() == OP_BUYLIMIT) {//выбираем байлимиты   
     if ( OrderOpenPrice() <(Ask-( КоличествоОрдеров* Дистанция)*Point) ) {
     //если расстояние от тек. цены больше заданного
   
   OrderDelete(OrderTicket(),Yellow);   //  return(0);    //удаляем самый дальний
            }}}}} 

Cependant. Que la récupération des commandes soit exécutée "depuis la fin" ou depuis le début. Le résultat est incorrect.

Ce code semble être le plus simple !

Qu'est-ce qui peut bien se passer ici ? Veuillez me conseiller !