[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 148

 

ou plutôt, il a même arrêté d'ouvrir des positions et a enregistré une erreur 138

 

Merci pour le conseil - j'ai corrigé le code un peu et sans la ligne de code ci-dessous, l'EA ouvrait des pips sur chaque tick.

et après avoir collé la ligne de code = EA a ouvert une position exactement comme je l'avais prévu.

int start()
   {
// начало открытия ордеров 
   if (OrdersTotal()>0)return(0);
 
first_may:

La FMC, c'est quoi ?

o_o - CME
 
BeerGod:
C'est déjà arrivé, je pense que c'est l'intrigue de DC pour qu'il soit problématique de tester quoi que ce soit.
Le DC n'a rien à voir avec les cotations téléchargées depuis le serveur de données historiques.
 
Le DC n'a rien à voir avec les cotations téléchargées depuis le serveur de données historiques.

Eh bien, tout est "censé" être téléchargé à partir d'un seul serveur... De plus, je pensais que dans le testeur, l'effet de levier du compte actuel n'avait aucun effet... Mais certaines sociétés de courtage ont une telle magie de la rue... Peut-être que certaines sociétés de courtage peuvent aussi jouer avec les prix ? (Bien qu'ils aient probablement tous des problèmes ici)...
 
alex12:

Merci pour le conseil - j'ai corrigé le code un peu et en effet, sans la ligne de code ci-dessous, l'EA ouvrait des pips sur chaque tick.

et après avoir collé la ligne de code = EA a ouvert une position exactement comme je l'avais prévu.

Eh bien... il ne s'agit que d'une correspondance apparente à celle prévue. Cette construction ne prend pas en compte le symbole, le type d'ordre ou sa magie. C'est-à-dire que si un autre EA fonctionne sur le compte pour un autre symbole, celui-ci ne fonctionnera pas, car nous avons déjà une position. Si seulement cet EA fonctionne, mais qu'il y a une position de vente et que la position d'achat doit être ouverte, il ne l'ouvrira pas - la position existe déjà et il y a beaucoup d'autres règles possibles, par exemple, vous avez ouvert manuellement une position ou défini un ordre en attente - c'est tout, l'EA s'est levé....

Vous devez vérifier spécifiquement : Y a-t-il déjà un poste ouvert sur tel ou tel symbole, avec tel ou tel magicien, de tel ou tel type ? Sinon, ouvrez.

 
artmedia70:

Eh bien... ce n'est qu'une correspondance apparente avec ce qui est prévu. Cette conception ne prend pas en compte le symbole, le type d'ordre ou sa magie. Cela signifie que si un autre EA fonctionne pour un autre symbole dans le compte, celui-ci ne fonctionnera pas, car il y a déjà une position. Si seulement cet EA fonctionne, mais qu'il y a une position de vente et que la position d'achat doit être ouverte, il ne l'ouvrira pas - la position existe déjà et il y a beaucoup d'autres règles possibles, par exemple, vous avez ouvert manuellement une position ou défini un ordre en attente - c'est tout, l'EA s'est levé....

Vous devez vérifier spécifiquement : Y a-t-il déjà un poste ouvert sur tel ou tel symbole, avec tel ou tel magicien, de tel ou tel type ? Sinon, ouvrez.

Merci. Oui, c'est vrai, car cet EA n'ouvre que des positions d'achat pour continuer le mouvement et
seulement après la fermeture de la position d'achat par la prise. Par exemple, si une position d'achat est ouverte et que le prix descend au niveau fixé par
, alors une autre position d'achat n'est pas ouverte (et aurait dû être ouverte par TS).
J'ai prescrit un certain prix dans la section Send order lines - price, voir le code ci-dessous.
Ma tâche est d'écrire le bon code dans l'EA = pour ouvrir une position d'achat supplémentaire après avoir ouvert une position d'achat,
, si le prix descend à un niveau prédéfini - ouvrir une position d'achat supplémentaire. Et ainsi, quel que soit le niveau
que le prix n'a pas franchi dans le code - toujours ouvrir une position d'achat, peu importe le nombre de
.

Il y a des postes ouverts en ce moment.

extern double Lot=1;

int g=20; //тейкпрофит

double price[10];   // Заданный уровень 

//-----------------------
 
int init()
  {
  
double price[10];   // объявляем массив из 5 элементов  
           
price[0] = 1.2100; // обращаемся к первому элементу массива и 
                   // присваиваем ему цену. Обратите внимание 
                   // на то, что индекс первого элемента 
                   // начинается с 0. Это важная особенность,
                   // к которой нужно привыкнуть.   
 
price[1] = 1.2200;  // обращаемся ко второму элементу 
price[2] = 1.2300;  // и так далее 
price[3] = 1.2400; 
price[4] = 1.2500;
price[5] = 1.2600; 
price[6] = 1.2700;  
price[7] = 1.2800; 
price[8] = 1.2900;
price[9] = 1.3000;  

   return(0);
  }
//---------------
int start()
   {
// начало открытия ордеров 
   if (OrdersTotal()>0)return(0);
   
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)//проверка наличия откр.поз
   price[0]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2100,10,0,Ask+g*Point,"My order #",11);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[1]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2200,10,0,Ask+g*Point,"My order #",12);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[2]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2300,10,0,Ask+g*Point,"My order #",13);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[3]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2400,10,0,Ask+g*Point,"My order #",14);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[4]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2500,10,0,Ask+g*Point,"My order #",15);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[5]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2600,10,0,Ask+g*Point,"My order #",16);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[6]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2700,10,0,Ask+g*Point,"My order #",17);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[7]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2800,10,0,Ask+g*Point,"My order #",18);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[8]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.2900,10,0,Ask+g*Point,"My order #",19);
   }
   if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   price[9]=Ask;
   {
   OrderSend (Symbol(),OP_BUY,Lot,1.3000,10,0,Ask+g*Point,"My order #",20);
   }
      return(0);
  }
//+------------------------------------------------------------------+
 
Bon après-midi. Je voudrais optimiser le code. J'ai ajouté trois tampons à l'indicateur. Ensuite, je fais une longue recherche de signaux. D'abord, je cherche MA1[], puis МА2[] et МА3[]. La différence réside dans le fait qu'un seul chiffre du nom du tampon est utilisé pour les calculs. Est-il possible de boucler le code.
 
alex12:
Oui, c'est vrai, car cet EA n'ouvre le bai que sur la continuation du mouvement et
seulement après avoir fermé la position d'achat sur le site .....
L'accolade d'ouverture { doit être placée avant price[...]=Ask ; (voir ci-dessous). Relisez l'opérateur "si". S'il n'y a pas de parenthèse immédiatement après if, il ne gère qu'une seule action (vous avez price[...]=Ask ;), si vous avez besoin de plusieurs actions, elles doivent être placées dans {...} immédiatement après if.
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)//проверка наличия откр.поз
   { 
      price[0]=Ask;
      OrderSend (Symbol(),OP_BUY,Lot,1.2100,10,0,Ask+g*Point,"My order #",11);
   }
if (OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==True)//проверка наличия откр.поз
   {
      price[1]=Ask;
      OrderSend (Symbol(),OP_BUY,Lot,1.2200,10,0,Ask+g*Point,"My order #",12);
   }
 

Après-midi.

J'ai besoin d'un historique EURUSD m5/m15 d'avant 2009, quelqu'un peut-il partager le sien ? (c'est-à-dire celui sur lequel vous déboguez vos experts).

Je vous en serais très reconnaissant.

Raison: