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

 
YuraZ:



Merci !!!!!!!!!!!!

Si vous ne pensez pas que c'est impertinent..... :))) conseiller comment faire fonctionner le Testeur correctement. La façon dont j'essaie, ça ne marche pas.

#import  "shell32.dll"
    int ShellExecuteA(int hwnd,string Operation,string File,string Parameters,string Directory,int ShowCmd); 
#import

int Start;

int start()
   {
    //---------------------------------- Запустим Тестер -------------------------
    //Start   = ShellExecuteA(0, "Open", "terminal.exe", FileOptim, PuthTester_h, 3);
    //Start   = ShellExecuteA(0, "Open", "terminal.exe", "optimise.ini", "D:\Alpari_Terminal_Tester\tester", 3);

    return(0);
   }
 
Leo59:

Merci !!!!!!!!!!!!

Si vous ne pensez pas que c'est impertinent..... :))) conseiller comment faire fonctionner le Testeur correctement. La façon dont j'essaie, ça ne marche pas.

L'auto-optimisation a décidé de le faire ! ? cool... C'est un sujet cool.

il y a deux façons de faire, j'aime la première

1) lancer l'optimisation depuis l'Expert Advisor sur le même terminal

2) configurer un ou plusieurs terminaux séparés - les démarrer et ensuite lire les résultats de l'optimisation


vous semblez essayer la deuxième méthode - elle est plus lourde.


Remplacez-le d'abord.

ShellExecuteA  на ShellExecuteW
 
YuraZ:

L'auto-optimisation a décidé de le faire ! ? cool... C'est un sujet cool.

il y a deux façons de faire, j'aime la première

1) lancer l'optimisation depuis l'Expert Advisor sur le même terminal

2) configurer un ou plusieurs terminaux séparés - les démarrer et ensuite lire les résultats de l'optimisation


vous semblez essayer la deuxième méthode - elle est plus lourde.


Vous devez d'abord le remplacer par.



Merci !!!!!!!!
Vous avez raison :)) L'essentiel est l'auto-optimisation.


1) lancer l'optimisation à partir de l'Expert Advisor sur le même terminal

Je le fais sur la base des résultats du commerce virtuel actuel.

2) Configurez un ou plusieurs terminaux séparés - démarrez-les et lisez les résultats de l'optimisation à la fin.

J'ai creusé dans l'auto_optimisation de XEON en automne. TestCommander est une boîte noire commerciale. J'ai décidé de le faire moi-même pour implémenter d'une manière ou d'une autre la fonctionnalité qui ne fonctionne pas dans la variante 1).

 
pu6ka:

Lancez cet indicateur sur M1, au fur et à mesure que de nouvelles barres apparaissent, les lignes d'alligator à gauche "s'effacent". En avez-vous besoin ?



J'ai résolu le problème.

#property copyright "forexman77@list.ru"
#property link      "forexman77@list.ru"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
extern int p  =10;
double val_plus[];
double val_minus[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit;
    double
    indicator_plus,indicator_minus;
   if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0;i<limit;i++)
   { 
     indicator_plus=0;
     indicator_minus=0;
     ArrayInitialize(val_plus,0);
     ArrayInitialize(val_minus,0);
   for(int k=p;k>=0;k--)
     {
     ArrayResize(val_plus,p);
     ArrayResize(val_minus,p);
     if(iMA(NULL,PERIOD_CURRENT,21,0,MODE_EMA,PRICE_CLOSE,i+k)>iMA(NULL,PERIOD_CURRENT,21,0,MODE_EMA,PRICE_CLOSE,i+k+1))val_plus[k]=1;
     if(iMA(NULL,PERIOD_CURRENT,21,0,MODE_EMA,PRICE_CLOSE,i+k+1)>iMA(NULL,PERIOD_CURRENT,21,0,MODE_EMA,PRICE_CLOSE,i+k))val_minus[k]=1;

     if (val_plus[k] > 0){indicator_plus=indicator_plus+val_plus[k];}
     if (val_minus[k] > 0){indicator_minus=indicator_minus+val_minus[k];}
     }
          ExtMapBuffer1[i]=indicator_plus;
          ExtMapBuffer2[i]=indicator_minus;
   }

   return(0);
  }
 
Quelqu'un peut-il écrire un code script simple qui copie un fichier d'un endroit à un autre ?

Ou, qui fera fonctionner le Tester dans un autre terminal ?

Eh bien, je ne peux pas encore. Le pouvez-vous ?

 
Leo59:
Quelqu'un peut-il écrire un script de code simple, qui copie un fichier d'un endroit à un autre ?

Ou, qui exécutera le Tester dans un autre terminal ?

Ici, je ne peux toujours pas. Et vous ?


Et je ne peux pas, parce que je n'ai pas à le faire ! Ce qu'il faut, j'apprends à le faire moi-même, pour ne pas avoir à changer ma logique !

D'autant plus que je l'ai fait moi-même, si vous avez besoin de modifier quelque chose, pas de problème !

Apprenez à partir des bases "match", avec des indices-cadeaux n'apprendra pas et à la fin plus de temps sera perdu pour rien !

Bonne chance ! :)

 
borilunad:


Et je ne peux pas, parce que ce n'est pas encore nécessaire ! Ce qui est nécessaire, j'ai l'habitude de le faire moi-même, pour ne pas changer de logique !

Raison de plus pour le faire vous-même, si vous avez besoin de modifier quelque chose, pas de problème !

Apprenez les bases, vous n'apprendrez pas avec des astuces-cadeaux et vous finirez par perdre plus de temps à long terme !

Bonne chance ! :)

Tu as raison, "ne mange pas le pain de quelqu'un d'autre".

La ville de Barcelone est incroyable ! Rien que les rails du tramway, disposés au milieu de pelouses vertes, valent le détour ! Mais les femmes en Espagne ont le cou court et la tête forte, pas comme nos femmes à Saint-Pétersbourg.
:)) Quel non-sens vous ne pouvez pas écrire de l'esprit farfelu. C'est moi.

C'est tout bon, et bonne chance à vous aussi, ainsi qu'à tous les autres !

 
Leo59:

Tu as raison, tu ne devrais pas regarder le pain de quelqu'un d'autre.

C'est une ville étonnante, Barcelone. Le tramway à lui seul, étalé parmi les pelouses vertes, ce qu'il vaut ! Mais les femmes en Espagne ont le teint court et la tête forte, pas comme nos femmes à Saint-Pétersbourg.
:)) Le genre de bêtises qu'on ne peut pas écrire quand on a vraiment la gueule de bois. C'est moi.

C'est tout bon, et bonne chance à vous aussi, ainsi qu'à tous les autres !


Je ne parle pas d'un "pain", mais d'une méthode d'apprentissage plus productive, afin que "ça ne fasse pas mal pour les années perdues" !

Eh bien, à chacun son métier ! :(

 
artmedia70:

Essayez peut-être de cette façon :

Entré un symbole et un magik dans les variables à passer. Vous n'avez pas de contrôle sur eux.




Merci ! Je vais l'essayer lundi. Bien que la question ne soit toujours pas claire pour moi. Si je veux fermer une commande, pourquoi est-ce que j'obtiens une erreur ? Au fait, je vais devoir essayer le même code dans l'ancien testeur. Le nouveau testeur comporte de nombreux changements mineurs. Je ne suis pas toujours sûr du résultat.
 
001:


Merci ! Je vais l'essayer lundi. Bien que la question ne soit toujours pas claire pour moi. Si je veux fermer une commande, pourquoi est-ce que j'obtiens une erreur ? Au fait, je vais devoir essayer le même code dans l'ancien testeur. Le nouveau testeur comporte de nombreux changements mineurs. Je ne suis pas toujours sûr du résultat.

Je ne me souviens plus maintenant... Si vous voulez fermer tous les Sell, vous n'avez pas besoin de revenir de la fonction. J'ai tout gâché dans mon sommeil. C'est comme ça qu'il faut faire pour les fermer tous :

//+------------------------------------------------------------------+
void  CheckForLongetivityClose_Sell(int symbol, int magic) {
   if(DayOfWeek()==0 || DayOfWeek()==6) return;
   for(int i=OrdersTotal()-1; i>=0; i--) {
      if(OrderSelect(i,SELECT_BY_POS)) {
         if(OrderMagicNumber()!=magic) continue;
         if(OrderSymbol()!=symbol)     continue;
         if(OrderType()!=OP_SELL)      continue;
         datetime openTime_S= OrderOpenTime();
         int timeDistance_S = TimeCurrent()-openTime_S;
         if(timeDistance_S>60*BarrierMinute_S) {
            bool  res= OrderClose(OrderTicket(),OrderLots(),Ask,3,clrRed);
            }
         }
      }
}
//+------------------------------------------------------------------+

En général, bien sûr, au lieu de cette ligne

bool  res= OrderClose(OrderTicket(),OrderLots(),Ask,3,clrRed);

Vous devez appeler une fonction normale pour fermer les positions qui ont un code de retour traité par le serveur.