[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 130

 
borilunad:

Victor, bien tu as mis le travail du DC, c'est bien qu'il soit virtuel pour le moment ! Pourquoi la commande qui vient d'être passée est-elle supprimée d'un seul coup ? C'est pourquoi nous devons la contrôler en permanence, expérimenter et accumuler progressivement des compétences. Tout TS est ajusté dans le testeur. Si tout est acceptable, vous pouvez utiliser le mode démo et, là encore, obtenir beaucoup d'idées et de variantes. Vous le faites pour vous, c'est donc notre travail quotidien et créatif. Ainsi, vous obtiendrez ce que vous voulez ! Succès !

J'aimerais ajouter que nous n'avons pas besoin de fixer des SL et TP dans les postponies, car nous n'avons pas à nous soucier des sociétés de courtage. Nous n'avons pas besoin de fixer un SL et un TP, nous avons juste besoin de positions. Dans les ordres en attente, il est judicieux de ne modifier que le prix d'ouverture si nécessaire et de ne le supprimer que pour une bonne raison.

Cependant, il me semble qu'il est plus sûr de fixer un stop dans les ordres en attente (en cas d'échec de la connexion). Après tout, s'il y a un ordre en attente sans stop, il ne s'agit pas encore d'une position, et il y a suffisamment de temps pour fixer un stop avant que l'ordre ne se déclenche. Après son déclenchement, la position aura un stop de protection qui empêchera la perte du dépôt en cas de perte de connexion.

Imaginons maintenant qu'un ordre sans stop se déclenche et que la connexion avec le serveur soit perdue... Est-ce que vous appelleriez le support technique par téléphone pour lui demander de placer un stop sur votre position ?

 
borilunad:

Victor, bien tu as mis le travail du DC, c'est bien qu'il soit virtuel pour le moment ! Pourquoi l'ordre que vous venez de passer est-il immédiatement supprimé ?

Qui vous a dit ça tout de suite ? Ma stratégie me permet de vérifier les conditions à l'ouverture d'une barre. S'il n'y a pas de conditions d'entrée sur le marché, l'ordre est supprimé. Une fois par barre. Où est-il à la fois ? Une fois dans un bar, c'est beaucoup ? Je ne fais pas de commerce sur les tics, après tout. Pourquoi es-tu si surpris ?

Parce que si une nouvelle barre arrive et que l'ordre en attente placé sur la barre précédente n'est plus une option et que, selon les conditions, il n'est pas à l'endroit le plus adéquat, il doit être supprimé. Je pense que c'est correct. Qu'est-ce qui ne va pas ?

En fait, nous ne parlons pas de commandes supprimées, mais de commandes qui ne sont pas placées aux bons endroits. C'est à cela que je demandais de faire attention :). Des idées à ce sujet ?

artmedia70:

Cependant, il me semble que la fixation d'un stop dans les ordres en attente est plus fiable (en cas d'échec de la connexion). Après tout, si nous avons une position en attente sans stop, ce n'est pas encore une position et il y a suffisamment de temps pour définir un stop avant que l'ordre en attente ne se déclenche. Après son déclenchement, la position aura un stop de protection qui empêchera la perte du dépôt en cas de perte de connexion.

Imaginons maintenant qu'un ordre sans stop se soit déclenché et que la connexion avec le serveur soit perdue. Est-ce que vous appelleriez le support technique par téléphone pour lui demander de mettre un stop sur votre position ?



C'est vrai. À mon avis, il n'y a pas de problème à placer un stop. À mon avis, il est normal de mettre un stop sur votre position. S'il ne s'agit pas d'un entrepôt, il ne devrait y avoir aucun problème.

 
hoz:

C'est vrai. À mon avis, c'est bien de mettre un frein. Une société de courtage est une société de courtage qui exécute les ordres. Si ce n'est pas une cuisine, il ne devrait pas y avoir de problèmes.

Si BC a une réaction inadéquate à un métier adéquat - fuyez cette cuisine.

Je comprends quand, par exemple, il n'y a pas de prix ou qu'il a changé et qu'EA martèle le serveur avec des ordres ridicules - c'est vrai... Mais s'arrête... Surtout dans le cas d'un ordre en attente - vous les définissez et vous les oubliez. Quand on se transforme en position, il n'est pas gênant de modifier un arrêt (un arrêt adéquat)... Donc, à mon avis, il vaut mieux tout faire en position d'attente - c'est plus fiable.

 

Bonjour, une recherche n'a rien donné.

Comment puis-je écrire un tableau à n dimensions dans un fichier CSV ? J'ai découvert qu'on peut écrire dans un fichier, mais ça ne colle pas.

   double Arr[2][2];
   Arr[0][0]=11;
   Arr[0][1]=12;   
   Arr[1][0]=21;     
   Arr[1][1]=22;
   
   int h=FileOpen("test",FILE_BIN|FILE_WRITE);
   FileWriteArray(h,Arr,0,4)

FileClose(h);

Il est important d'obtenir un fichier excel.

Merci.

 
Bonjour, chers amis !
Qu'est-ce qui marche le plus vite, à votre avis ?
Variante 1 : Le Conseiller Expert a deux indicateurs identiques attachés à lui, mais avec des paramètres différents.
Variante 2 : Le conseiller expert accède deux fois au même indicateur, mais avec un ensemble différent de paramètres transmis.
 
Leo59:
Bonjour, chers amis !
Lequel des deux fonctionne le plus vite, selon vous ?
Variante 1 : Le Conseiller Expert a deux indicateurs identiques attachés à lui, mais avec des paramètres différents.
Variante 2 : Le conseiller expert accède deux fois au même indicateur, mais avec un ensemble différent de paramètres transmis.

c'est la même chose.

Répondez vous-même à la question -
Variante 1. Deux indicateurs identiques sont attachés au graphique, mais avec des paramètres différents.
Variante 2. Le même indicateur est attaché au graphique, mais avec un ensemble différent de paramètres.

Vous ne pensez pas que c'est une question de beurre ?

 
sergeev:

c'est la même chose.

répondez vous-même à la question -
Option 1. Il y a deux indices identiques attachés au graphique, mais avec des paramètres différents.
Option 2. Le graphique comporte le même indicateur, mais avec un ensemble de paramètres différent.

ça ne semble pas être une question de pétrole ?

Merci pour la réponse !

Peut-être que c'est le cas. Sauf pourquoi, ce n'est pas clair.
Lorsqu'il y a deux indicateurs, il n'y a pas de différence notable. Mais quand il y a deux cents indicateurs, alors la différence devient peut-être perceptible.

 
artmedia70:

Cependant, il me semble qu'il est plus sûr de fixer un stop dans les ordres en attente (en cas d'échec de la connexion). Après tout, s'il existe une position sans stop, ce n'est pas encore une position, et il y a suffisamment de temps pour définir un stop avant que la position ne se déclenche. Après son déclenchement, la position aura un stop de protection qui empêchera la perte du dépôt en cas de perte de connexion.

Imaginons maintenant qu'un ordre sans stop se soit déclenché et que la connexion avec le serveur soit perdue. Appelleriez-vous le support technique pour lui demander de mettre un stop sur votre position ?

Vous avez raison, bien sûr ! Mais avant de passer à la Démo, surtout avant le Réel, Victor devrait décrire son TS de manière simple, car le testeur rejette les variantes perdantes, il y aura donc plus de variantes viables avec des entrées rentables et nous pourrons alors configurer tout ce dont nous avons besoin pour nous protéger des surprises. Et je suis partisan de toujours fixer puis modifier, car la plupart des sociétés de courtage n'acceptent pas tout en même temps, peut-être qu'à ce stade il y a beaucoup d'ouvertures, et il est plus rapide et sans erreur de se passer de SL puis de modifier. Comme toujours, merci pour les nombreux conseils qui m'ont été donnés !
 
Snegovik:

Bonjour, la recherche n'a rien donné.

Comment puis-je écrire un tableau à n dimensions dans un fichier CSV ? J'ai découvert qu'on peut écrire dans un fichier, mais ça ne colle pas.

FileClose(h);

Il est important d'obtenir un fichier excel.

Merci.

bool Flag=true;
int start()
  {
 double Arr[2][2];
   Arr[0][0]=11.12345678;
   Arr[0][1]=12;   
   Arr[1][0]=21;     
   Arr[1][1]=22;
   int h;
   string tmp,tmp1;
   if(Flag)
    {
     h=FileOpen("test",FILE_CSV|FILE_WRITE,"\t");
     for(int i=0;i<2;i++)
      {
       tmp="";
       for(int j=0;j<2;j++)
        {
         tmp1=DoubleToStr(Arr[j][i],8);
         int k=StringFind(tmp1,".",0); if(k>=0) tmp1=StringSetChar(tmp1,k,',');
         tmp=StringConcatenate(tmp,tmp1,"\t");
        }
       FileWrite(h,tmp);
      }
     FileClose(h);
     Flag=false;
    }
   return(0);
  }

Exel

 

J'ai retravaillé un morceau de code sur ce que j'ai demandé hier. Tout est maintenant comme il se doit. Voici 3 fonctions pour montrer ce qui est utilisé pour obtenir le signal original, car ce n'est que le début de ce que j'écris.

//+-------------------------------------------------------------------------------------+
//| Открытие позиций                                                                    |
//+-------------------------------------------------------------------------------------+
bool Trade(int signal)
{
   double fastMa = iMA(NULL,i_TF,i_fastMaPeriod,0,MODE_EMA,MODE_CLOSE,0);
   double slowMa = iMA(NULL,i_TF,i_slowMaPeriod,0,MODE_EMA,MODE_CLOSE,0);
   
   DeletePendingOrders();
   
   if (signal == SIGNAL_BUY)
       if (!OpenBuy(fastMa, slowMa))
          return(false);
   
   if (signal == SIGNAL_SELL)
       if (!OpenSell(fastMa, slowMa))
          return(false);
       
   return (true);
}
//+-------------------------------------------------------------------------------------+
//| Получаем общий сигнал на открытие позиции                                           |
//+-------------------------------------------------------------------------------------+
int GetSignal()
{
   // Получаем значения машек для дальнейших рассчётов
   double fastMa = iMA(NULL,i_TF,i_fastMaPeriod,0,MODE_EMA,MODE_CLOSE,0);
   double slowMa = iMA(NULL,i_TF,i_slowMaPeriod,0,MODE_EMA,MODE_CLOSE,0);
 //  double filtrMa = iMA(NULL,i_TF,i_filtrMaPeriod,0,MODE_SMA,MODE_CLOSE,0);
   
   if (FindOrders() > 0)                                 // Если есть открытые ордера, то..
       return (SIGNAL_NO);                               //..ничего не делаем
   
   if (GetStateMa(fastMa, slowMa/*, filtrMa*/) == MA_DIRECT_TO_UP)      // Если машки указывают вверх
       if ( (MathAbs(High[0] - fastMa) <= 0.1 * pt ) || ( MathAbs(Low[0] - fastMa) <= 0.1 * pt) )     // Цена вблизи 0.1пп от fastMa
           return(SIGNAL_BUY);      // Функция возвращает сигнал покупки
       
 //  if (GetStateMa(fastMa, slowMa/*, filtrMa*/) == MA_DIRECT_TO_DOWN)
   //    return(SIGNAL_SELL);
   
   return (SIGNAL_NO);
}

Voici la fonction d'achat :

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy(double fastMa, double slowMa)
{
   int ticket = -1;
   
//   if ( (MathAbs(High[0] - fastMa) <= 0.1 * pt ) || ( MathAbs(Low[0] - fastMa) <= 0.1 * pt) )
   {
       if ((fastMa + i_thresholdFromMa * pt) > Ask)            // Проверка что цена открытия выше Ask, т.к. у нас вход отложенником
      Print("fastMa = ", DoubleToStr(fastMa,Digits));
      Print("i_thresholdFromMa = ", DoubleToStr(i_thresholdFromMa * pt,Digits));
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(fastMa + i_thresholdFromMa * pt), 3, 0, 0, NULL, i_magic, 0);
      Print("OrderOpenPrice() = ", DoubleToStr(OrderOpenPrice(),Digits));
   }
      if (ticket > 0 && OrderSelect(ticket, SELECT_BY_TICKET == true))
 
   return (true);
}

Voici la ligne :

ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(fastMa + i_thresholdFromMa * pt), 3, 0, 0, NULL, i_magic, 0);

nous avons une position qui s'ouvre au prixND(fastMa + i_thresholdFromMa * pt), mais qui ne s'ouvre pas du tout là. Pourquoi ?

Cela fait deux jours que je lutte, je ne sais pas quoi faire. Dans le code, tout est identique. Je n'ai pas écrit de chèques pour de vrai, je les écris pour le testeur maintenant.

Voici une capture d'écran, par exemple,

Un joint

Sur le graphique, vous pouvez voir que le prix n'est pas supérieur au fastMa (rouge), et inférieur en général. Mais dans le code, il est clairement indiqué que l'ordre en attente doit être au prix :

ND(fastMa + i_thresholdFromMa * pt)

Quel est le piège, professionnels ? Je ne sais plus quoi faire...