Question sur le conseiller multi-devises - page 10

 
rid >> :
Cependant, j'ai besoin - en même temps - que la fonction de trailing stop soit implémentée pour tous les ticks.

Le bénéfice tangible d'un chalut d'empotage ne peut être constaté que sur une courte section au détriment de l'aménagement.

En règle générale, un chalut grossier fait tout aussi bien l'affaire (à moins qu'il ne s'agisse d'un chalut pipsing et scalping).

Mais les avantages de l'optimisation du "prix d'ouverture" lors de l'utilisation d'un chalut sont perdus, ce qui est très significatif.

Ces derniers temps, j'ai abandonné le chalutage sur presque tous les CT.

La fermeture partielle/complète d'une position (éventuellement par retournement) par un signal de retournement fonctionne mieux.

 

Et j'utilise un chalut de seuil. Et si vous ajustez le seuil de départ, il y a une raison...

extern string   ____________= "Параметры Трейлинг стопа";
extern bool UseTrailing = false;
extern int lMinProfit = 150;
extern int sMinProfit = 160;
extern int lTrailingStop = 50;
extern int sTrailingStop = 60;
extern int lTrailingStep = 5;
extern int sTrailingStep = 5;
//--------------------------------------------------------
int start()
  {
  if(Time[0] == prevtime)   return(0);
   prevtime = Time[0];//если появился новый бар , включаемся
//-------------------------------------------------------------------   
if ( UseTrailing) TrailPositions(); //трейлинг стоп

//--------------------------------------------------------------
... ... ... ... ... ... ... ... ... ... ... ... 
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
void TrailPositions() //пороговый трейлинг стоп
{  int Orders = OrdersTotal();
  for (int i=0; i< Orders; i++) {
    if (!(OrderSelect( i, SELECT_BY_POS, MODE_TRADES))) continue;
    if (OrderSymbol() != Symbol() && OrderMagicNumber()== Magic) continue; 
    if (OrderType() == OP_BUY) {
      if (Bid-OrderOpenPrice() > lMinProfit*Point) {
        if (OrderStopLoss() < Bid-( lTrailingStop+ lTrailingStep-1)*Point) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Bid- lTrailingStop*Point,
                                                    OrderTakeProfit(), 0, Blue);
        }}}
    if (OrderType() == OP_SELL) {
      if (OrderOpenPrice()-Ask > sMinProfit*Point) {
        if (OrderStopLoss() > Ask+( sTrailingStop+ sTrailingStep-1)*Point || 
                                                      OrderStopLoss() == 0) {
          OrderModify(OrderTicket(), OrderOpenPrice(), Ask+ sTrailingStop*Point,
                                                     OrderTakeProfit(), 0, Blue);
        }}}}}
//жжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжжж
 

De manière générale, je ne comprends pas quel est l'intérêt d'utiliser un chalut à seuil Potikko ?

 

Bonjour à tous. Encore un problème.

Avec l'indicateur.

Impossible d'écrire l'iCustom.

Je l'ai écrit comme ça :

double ActivatorBLUE=iCustom(NULL,0,"HL Next Activator", ActivatorPeriod, useFullPeriods,0,1);
//синие уровни на 1 баре
double ActivatorRED=iCustom(NULL,0,"HL Next Activator", ActivatorPeriod, useFullPeriods, 1,1);
//красные уровни на 1 баре
Comment( ActivatorBLUE,"-", ActivatorRED);

Mais dans les deux cas, seules les valeurs du niveau bleu sont renvoyées. Je ne comprends pas pourquoi ! Après tout, j'ai fourni des numéros de tampon de 1 et 0 respectivement !

Même dans le commentaire, les mêmes valeurs sont affichées - niveau bleu

C'est ainsi que les tampons sont définis dans l'indicateur init :

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,159);
   SetIndexBuffer(0, SellActivator);//синий
   SetIndexEmptyValue(0,0.0);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,159);
   SetIndexBuffer(1, BuyActivator);//красный
   SetIndexEmptyValue(1,0.0);
   if ( useFullPeriods!=0) useFullPeriods=1;
//----
   return(0);
  }

Une suggestion de Pozh. Indicateur dans le téléchargement (l'auteur de l'indicateur est Rosh).

Dossiers :
 
rid писал(а) >>

Bonjour à tous. Encore un problème.

Avec l'indicateur.

Impossible d'écrire iCustom.

Je l'ai vérifié, ça ressemble à ça :

2008.10.29 15:13:49 2008.10.28 12:51 testhl EURUSD,H1 : 1.2395-0
2008.10.29 15:13:49 2008.10.28 12:51 testhl EURUSD,H1 : 1.2395-0
2008.10.29 15:13:49 2008.10.28 12:51 testhl EURUSD,H1 : 1.2395-0
2008.10.29 15:13:48 2008.10.28 05:52 testhl EURUSD,H1 : 0-1.2547
....
2008.10.29 15:13:48 2008.10.28 05:51 testhl EURUSD,H1 : 0-1.2547
2008.10.29 15:13:48 2008.10.28 05:51 testhl EURUSD,H1 : 0-1.2547
2008.10.29 15:13:47 2008.10.27 18:49 testhl EURUSD,H1 : 1.2414-1.2542
.....
2008.10.29 15:13:47 2008.10.27 18:49 testhl EURUSD,H1 : 1.2414-1.2542
2008.10.29 15:13:46 2008.10.27 14:54 testhl EURUSD,H1 : 0-1.2612

Je ne me suis pas encore penché sur la question, mais cela semble correct, j'ai pris l'indicateur avec les paramètres par défaut, l'appel de valeur avec la chaîne de caractères

Print(iCustom(NULL,0,"HLdNextmActivator",0,1),"-",iCustom(NULL,0,"HLdNextmActivator", 1,1));
 

Merci.

C'est bizarre. Tout à coup, ça marche pour moi aussi. Ça ne l'a pas arrangé, ça n'a rien fait.

Mais ça n'a pas marché ce matin ! Ça m'a pris deux heures. "Je te le dis..."

Ce n'est pas la première fois que je le remarque. Je vais faire quelque chose de simple sur une dinde simple. Tout d'un coup, ça ne marche plus depuis le début !

Sans raison apparente ! Bien que la construction soit la plus simple. D'accord, je suppose. Je vais réessayer plus tard...

Et puis je l'allume et regarde, il fonctionne comme il le devrait !

C'est comme un miracle...

Je l'ai fait une fois avec un parabolique. Je fixe les conditions d'ouverture d'une position au changement du "signe" de la parabole.

C'était la condition la plus primitive. Cela n'a pas fonctionné dans le testeur ! Pendant deux jours, j'ai juré de ne rien faire et j'ai essayé de trouver ce qui n'allait pas. Je n'ai pas réussi à le comprendre. Je n'arrivais pas à comprendre. Je pensais que je le découvrirais plus tard. Un jour plus tard, je l'ai allumé et... - ...ça marchait comme sur des roulettes...

 
rid >> :

.............. alors ... Puis un jour plus tard, je l'ai allumé et... - Je regarde, ça marche comme sur des roulettes...

L'homme vient chez l'horloger.

- Celui-ci s'est cassé.

Le mécanicien ouvre l'horloge et un cafard mort en tombe.

- Mais cela ne fonctionnera pas.

- Pourquoi pas ?

- Le mécanisme est mort, cependant.

 

Bonjour à tous. Je ne peux pas résoudre le problème.

Le conseiller expert place des ordres en attente, par exemple OP_BUYSTOP - quatre ordres.

OP_BUYSTOP magique 1

OP_BUYSTOP magique 2

OP_BUYSTOP magique 3

OP_BUYSTOP magique 4

Placez-les - à une distance donnée du prix et à un pas donné les uns des autres.

Plus loin. Si le prix a baissé, j'ai besoin que les ordres suivent le prix avec le pas donné.

Je l'ai fait. Je n'ai pas rencontré de difficultés particulières.

 

Cependant !

Je n'ai pas besoin que tous les ordres soient modifiés et se déplacent derrière le prix, attirant l'attention du courtier avec des requêtes inutiles au serveur.

Je veux que la commande la plus éloignée du prix actuel saute par-dessus toutes les autres et devienne la plus proche !

Et ainsi de suite, de sorte qu'avec un nouveau mouvement du prix vers le bas, les ordres les plus éloignés se rapprocheraient constamment du prix !

J'ai réfléchi pendant plusieurs heures et je n'arrive pas à trouver une solution.

Je ne peux même pas m'approcher de la solution.

Ou peut-être existe-t-il une référence à quelque chose de similaire ?

J'ai trouvé la fonction dans une branche de I. Kim. Mais la manière de les appliquer ici n'est pas encore claire.

//----------------------------------------------------------------------------------------------------------------------------

Fonction GetIndexByTicket(). Cette fonction renvoie l'index de l'ordre ou de la position par le ticket

La fonction IndexByTicket(). Cette fonction renvoie l'index (le numéro d'index dans la liste générale des ordres fixés ou des positions ouvertes) de l'ordre ou de la position dans le ticket.

Fonction GetOrderOpenPrice(). Renvoie le prix fixé pour la dernière commande passée.

 

Créez deux tableaux. L'un par numéro de billet, le second par prix. Ensuite, triez le tableau par prix, en déplaçant les numéros de tickets en même temps (sans rompre la connexion). Ainsi, à une extrémité du tableau se trouvera le prix le plus bas, à l'autre le prix le plus élevé. Il ne reste plus qu'à modifier l'un des ordres les plus éloignés.