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

 
artmedia70:
Tout acheter et tout vendre sont deux scripts différents. C'était clair dès le départ. La question est de savoir s'il faut fermer absolument tous les postes. Ou doit-il fermer uniquement les positions qui se trouvent sur le graphique où le script est exécuté ? Doit-il fermer les positions ouvertes manuellement ou les positions ouvertes par un conseiller expert, ou les deux ?

Sinon, ils peuvent écrire des messages d'erreur, des vérifications, etc. Je pense que ce script n'a pas besoin de ce genre de choses. Je n'utilise pas d'EAs, je ne fais que trier maintenant, je n'ai aucun projet de cours dans ma vie dans le mois à venir, j'ai décidé de vérifier le forex.
 
bambastik:
Tout cela est absolument nécessaire, mais en fonction du type de graphique sur lequel le script est basé, afin que le script soit le plus simple possible. Je n'utilise pas de conseillers experts, je ne fais que tester maintenant, je ne prévois aucune activité dans ma vie au cours du prochain mois, c'est pourquoi j'ai décidé de jeter un coup d'œil au forex.

C'est donc le traitement des erreurs de trading qui fait la différence entre un bon script et un tutoriel dans ce cas. Voulez-vous en tirer des leçons ou voulez-vous qu'il fonctionne à 100% ?

Si vous voulez juste le principe, le voici :

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;

   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()>1)      continue;
         if (OrderType()==OP_BUY)   OrderClose(OrderTicket(),OrderLots(),Bid,5,Blue);
         if (OrderType()==OP_SELL)  OrderClose(OrderTicket(),OrderLots(),Ask,5,Red);
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

Il ferme à la fois l'achat et la vente.

Il n'y a absolument aucune gestion des erreurs. Vous pouvez clôturer uniquement Achat ou uniquement Vente pour vous-même - supprimez une ligne.

Eh bien... seulement acheter :

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;

   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()==OP_BUY)   OrderClose(OrderTicket(),OrderLots(),Bid,5,Blue);
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

A vendre :

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;

   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()==OP_SELL)  OrderClose(OrderTicket(),OrderLots(),Ask,5,Red);
         }
      }
   return;
}
//-----------------------------------------------------------------------------+
 

Merci beaucoup. C'est juste ce dont j'ai besoin. Mais qu'est-ce que le rouge et le bleu et à quoi cela sert-il, cela indique probablement le point de réinitialisation de chaque commande, non ? Quand je l'essaierai, je l'ajouterai à la base de code immédiatement par artmedia70. Et d'ailleurs, pourquoi avons-nous besoin du traitement d'une normale si le script est précis et que le développeur a confiance en lui ?

Et peut-être que je n'ai pas besoin de les ajouter d'ailleurs et le développeur lui-même qui est artmedia70 ajoutera à la base de code, ils s'avéreront être nécessaires là-bas, et je n'ai pas de compte là-bas, et aux commentaires ne sera pas en mesure de répondre à un mot, hein ?

 
bambastik:

Merci beaucoup. Mais c'est juste ce dont j'ai besoin. Mais qu'est-ce que le rouge et le bleu et à quoi cela sert-il, cela indique probablement le point de réinitialisation de chaque commande, non ? Quand je l'essaierai, je l'ajouterai à la base de code immédiatement par artmedia70.

Non, pas à la codbase, pas du tout. J'ai l'habitude de faire des choses fiables, pas des tutoriels :)

Si je vous avais montré un script normal, vous m'auriez dit que, comme tout le monde, j'ai encore écrit toutes sortes d'"erreurs"... Mais... vous ne pouvez pas vous en passer. C'est du travail avec notre argent.

Le bleu et le rouge sont les couleurs de la marque de fermeture.

 
artmedia70:

Non, il n'y a pas besoin d'une base de chat. J'ai l'habitude de faire des choses fiables, pas des tutoriels :)

Si je vous avais montré un scénario normal, vous m'auriez dit que, comme tout le monde, j'écrivais toutes sortes d'erores... Mais... vous ne pouvez pas vous en passer. C'est un travail avec notre argent.

Le bleu et le rouge sont les couleurs de l'icône de fermeture.


Je comprends tout sur le kotobaza, sur le rouge et le bleu aussi, en général encore une fois merci beaucoup pour votre aide, mais je ne vais pas commencer à yak out sauf si elle est très rare, l'Internet imho doit être au-delà de la révérence et la flatterie et de porter que la pensée et d'ailleurs un vous pouvez être cent fois plus respectueux que vous un millier) mais c'est lyrique) en général artmedia70 Merci beaucoup, très script aidé et dans le kotobaza avec elle je ne vais pas. J'ai beaucoup d'entre eux dans l'histoire qui pensait ainsi et où ils sont maintenant. imho, l'argent sera aboli bientôt réel, laissera un virtuel et de la chaux, de sorte que tout le monde pourrait avoir un compte avec strictement identifiable pas plus d'un certain montant, le reste dans le budget, etc Je suis donc cool avec eux, mais le processus de leurs activités est oui, intéressant. p.s. s'excuser pour la verbosité.
 
bambastik:

D'ailleurs, pourquoi faut-il traiter un script régulier s'il est clair et que le développeur a confiance en lui ?

Le développeur n'aura confiance en son programme que si celui-ci est capable de gérer les erreurs renvoyées par le serveur de trading. Si aucune gestion des erreurs n'est effectuée, le programme peut trébucher à la première erreur. L'erreur n'est PAS une erreur de programme, mais une erreur renvoyée par le serveur commercial. Par exemple - le script ci-dessus n'obtient pas de données fraîches. Le serveur peut donc renvoyer une erreur concernant le mauvais prix. Pour cela, il faut essayer de recevoir l'environnement de transaction le plus récent avant la fermeture - veuillez exécuter la commande RefreshRates() ou, au lieu du prix Ask ou Bid, utiliser le prix obtenu à l'aide de MarketInfo(Symbol(),MODE_ASK) ou MarketInfo(Symbol(),MODE_BID) ;

Le script prendra alors cette forme (pour Sell) :

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;
   
   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)  continue;
         if (OrderType()==OP_SELL)  {
            double pp=MarketInfo(sy,MODE_ASK);
            OrderClose(OrderTicket(),OrderLots(),pp,5,Red);
            }
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

Et si vous essayez de traiter d'autres erreurs renvoyées par le serveur, il se développera à ces valeurs lorsque vous direz - "vous l'avez refait..." :)

 

Maintenant je comprends et oui, c'est important. Internet n'est pas bon ici, c'est un fait, le matériel est jeune aussi, donc il n'est pas vraiment sage de compter sur eux pour les deux cent pour cent, mais le risque est une chose noble =) mais merci encore pour l'ajout, je vais l'ajouter à la fois à l'achat et à la vente.

Est-ce que cela convient pour acheter ?

void start() {
string sy=Symbol();
int i, k=OrdersTotal()-1;

for (i=k; i>=0; i--) {
if (OrderSelect(i,SELECT_BY_POS)) {
if (OrderSymbol()!=sy) continue;
if (OrderType()==OP_BUY) {
double pp=MarketInfo(sy,MODE_BID);
OrderClose(OrderTicket(),OrderLots(),pp,5,Blue);
}
}
}
return;
}

Et si j'ai besoin de supprimer seulement 3 ordres d'achat sur 5 parmi tous ceux disponibles, quelle est la valeur la plus importante, le script va-t-il s'agrandir ? Et encore une question, si je ne me donne pas la peine de la poser, puisque ces contrôles prennent tout le temps, je me demande quel script a une plus grande probabilité de dérapage que celui avec contrôles ou celui sans contrôles d'erreurs ?

 
bambastik:

Maintenant je comprends et oui, c'est important. L'internet n'est pas bon ici, le matériel est jeune aussi, donc il n'est pas vraiment sage de compter sur eux pour les deux cent pour cent complets, mais le risque est une chose noble =) mais merci encore pour l'ajout, je l'ajouterai à la fois à l'achat et à la vente.

Est-ce correct pour l'achat ?

Oui. Mais ce n'est pas tout... ;)

Ce script, en plus des erreurs similaires non traitées, touchera également les commandes "étrangères". Par exemple, si vous avez un EA qui travaille sur ce symbole, le script fermera ses positions et l'EA les rouvrira. C'est ainsi qu'ils vont se "battre" entre eux.

Pour éviter cela, il est nécessaire de limiter le scénario en termes de magie. C'est-à-dire, ajouter une ligne if (OrderMagicNumber()>0) continue ; alors le script ne fonctionnera qu'avec les ordres ouverts manuellement.

A vendre :

//-----------------------------------------------------------------------------+
void start() {
   string sy=Symbol();
   int    i, k=OrdersTotal()-1;
   
   for (i=k; i>=0; i--) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderMagicNumber()>0)  continue;
         if (OrderSymbol()!=sy)     continue;
         if (OrderType()==OP_SELL)  {
            double pp=MarketInfo(Symbol(),MODE_ASK);
            OrderClose(OrderTicket(),OrderLots(),pp,5,Red);
            }
         }
      }
   return;
}
//-----------------------------------------------------------------------------+

Et il y a encore beaucoup à affiner pour une fiabilité "normale". Cela viendra en temps voulu, n'en doutez pas. ;)

 
artmedia70:

Oui. Mais ce n'est pas tout... ;)

Ce script, outre les erreurs similaires non traitées restantes, touchera également les ordres "étrangers". Par exemple, si vous avez un EA qui travaille sur ce symbole, le script fermera ses positions et l'EA les rouvrira. C'est ainsi qu'ils vont se "battre" entre eux.

Pour éviter cela, il est nécessaire de limiter le scénario en termes de magie. Par exemple, ajouter une ligne if (OrderMagicNumber()>0) continue ; alors le script ne traitera que les ordres ouverts manuellement.


Je ne sais pas comment faire, je n'arriverai jamais aux conseillers experts, aux indicateurs, aux signaux et tout le reste, donc je m'ennuie en jouant à Dota et je commence à fouiller dans le graphique, j'adore regarder son mouvement, c'est très beau, donc je suis juste ainsi, pour le développement général et maintenant je comprends ce qu'est un ordre magik qui est ouvert par des non-automatiques et des non-conseillers, bien que ce soit probablement les mêmes personnes ;).
 
pouvez-vous écrire : un script/conseiller pour fermer deux ordres opposés en n*pips en profit ?