Recherche Debutant Motivé 😊 ? - page 3

 
//+------------------------------------------------------------------+
//|                                                        essai.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"


//Variables globale

int movingAverage;              // creation d'un ""pointeur"" moyenne mobile'
double myMovingAverageArray[];  // Création un tableau pour les valeurs de la moyenne mobile.
   
//+------------------------------------------------------------------+
//| initialization function                                   |
//+------------------------------------------------------------------+
  
int OnInit()
  {
   // Initialisation de la moyenne mobile  https://www.mql5.com/fr/docs/indicators/ima
   movingAverage = iMA(_Symbol, _Period, 10, 0, MODE_SMA, PRICE_CLOSE);  //creation d'un pointeur moyenne mobile
   //organisation temporelle du tableaux, la position 0 sera la valeur la plus récente
   ArraySetAsSeries(myMovingAverageArray,true);
   
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   IndicatorRelease(movingAverage); //Libère la ressource moyenne mobile
  }
  

// fonction moyenne mobile                                           |
double moyenneMobileArithmetique()
   {
   // Transfert de la dernière valeur à partir du "pointeur" movingAverage  dans le tableaux myMovingAverageArray
   CopyBuffer(movingAverage,0,0,1,myMovingAverageArray);
   //retourne la dernnier valeur de la moyenne mobile.
   double val= NormalizeDouble(myMovingAverageArray[0],5);
   return val;
   }
 
 //Cette fonction compare la moyenne mobile aux barres et renvoi une entier
 // n barres au dessus achatVente =n,  nbarres en dessous achatVente = -n
 
int achatVente(const double& tab[],double moyenneMobile)
{
    int tailleTableau = ArraySize(tab);
    int achatVente=0;
    for (int i = 0; i < tailleTableau; i++)
    {
        if(tab[i]>moyenneMobile){
            achatVente++;
        }
        if(tab[i]<moyenneMobile){
            achatVente--;
      }
    }
    return achatVente;
}
  
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+

void OnTick()
{
      int nbBarres=4;
      // declaration du tableaux pour stokage des valeurs de cloture 
      double tabBarClose[];
      //initialisation de tableaux
      ArrayResize(tabBarClose, nbBarres);
      // Récupéreration  des valeurs de clôture des dernières barres
      for(int i=0; i<nbBarres; i++)
      {
         tabBarClose[i]= iClose(_Symbol, _Period, i+1); 
      }
       
      double mm=moyenneMobileArithmetique();  
      int achatVenteVal=achatVente(tabBarClose,mm);
     
     if(PositionsTotal()<1)
     {
         
         if (achatVenteVal==nbBarres){
         achat();

         }
         if (achatVenteVal==(nbBarres*-1)){
         vente();

         }
     }
 
  
}



void achat()
{
    double lotSize = 0.1;              // Taille du lot
    double stopLoss = 50;              // Stop Loss en points (50 points dans cet exemple)
    double takeProfit = 50;           // Take Profit en points (50 points dans cet exemple)

    // Récupérer le prix actuel du marché
    double currentPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID);

    // Calculer le prix du Stop Loss et Take Profit
    double stopLossPrice = currentPrice - stopLoss * SymbolInfoDouble(_Symbol, SYMBOL_POINT);
    double takeProfitPrice = currentPrice + takeProfit * SymbolInfoDouble(_Symbol, SYMBOL_POINT);

    // Créer une instance de MqlTradeRequest
    MqlTradeRequest request;
    ZeroMemory(request); // Initialiser toutes les valeurs de la structure à 0

    // Remplir les informations de l'ordre dans la structure MqlTradeRequest
    request.action = TRADE_ACTION_DEAL;       // Type d'action (achat ou vente)
    request.symbol = _Symbol;                // Symbole
    request.volume = lotSize;                // Taille du lot
    request.price = currentPrice;            // Prix d'ouverture de l'ordre
    request.type = ORDER_TYPE_BUY;           // Type d'ordre (achat)
    request.type_filling = ORDER_FILLING_FOK; // Type de remplissage (Fill or Kill)
    request.sl = stopLossPrice;              // Prix du Stop Loss
    request.tp = takeProfitPrice;            // Prix du Take Profit

    // Passer l'ordre d'achat en utilisant MqlTradeRequest
    MqlTradeResult result;
   // ZeroMemory(result); // Initialiser toutes les valeurs de la structure à 0
    if (OrderSend(request, result))
    {
        Print("Ordre d'achat passé avec succès ! Numéro de ticket :", result.order);
    }
    else
    {
        Print("Erreur lors de la passation de l'ordre :", GetLastError());
    }
}

void vente()
{
    double lotSize = 0.1;              // Taille du lot
    double stopLoss = 50;              // Stop Loss en points (50 points dans cet exemple)
    double takeProfit = 50;           // Take Profit en points (50 points dans cet exemple)

    // Récupérer le prix actuel du marché
    double currentPrice = SymbolInfoDouble(_Symbol, SYMBOL_BID);

    // Calculer le prix du Stop Loss et Take Profit
    double stopLossPrice = currentPrice + stopLoss * SymbolInfoDouble(_Symbol, SYMBOL_POINT);
    double takeProfitPrice = currentPrice - takeProfit * SymbolInfoDouble(_Symbol, SYMBOL_POINT);

    // Créer une instance de MqlTradeRequest
    MqlTradeRequest request;
    ZeroMemory(request); // Initialiser toutes les valeurs de la structure à 0

    // Remplir les informations de l'ordre dans la structure MqlTradeRequest
    request.action = TRADE_ACTION_DEAL;       // Type d'action (achat ou vente)
    request.symbol = _Symbol;                // Symbole
    request.volume = lotSize;                // Taille du lot
    request.price = currentPrice;            // Prix d'ouverture de l'ordre
    request.type = ORDER_TYPE_SELL;          // Type d'ordre (vente)
    request.type_filling = ORDER_FILLING_FOK; // Type de remplissage (Fill or Kill)
    request.sl = stopLossPrice;              // Prix du Stop Loss
    request.tp = takeProfitPrice;            // Prix du Take Profit

    // Passer l'ordre de vente en utilisant MqlTradeRequest
    MqlTradeResult result;
    ZeroMemory(result); // Initialiser toutes les valeurs de la structure à 0
    if (OrderSend(request, result))
    {
        Print("Ordre de vente passé avec succès ! Numéro de ticket :", result.order);
    }
    else
    {
        Print("Erreur lors de la passation de l'ordre :", GetLastError());
    }
}

Avec chtgpt et 2 3 notions voilà ce que l'on arrive a faire avec un moyen mobile

c'est une libre interprétation de https://www.mql5.com/fr/articles/10479

Il faut encore filtrer les faux positifs et n'hésitez pas à me  corriger ou à me conseiller. Comme vous avez pu le remarquer, je suis un simple débutant

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • 2023.08.01
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 

Bonjour
Je ne suis pas sûr que faire générer du code par ChatGPT soit une bonne voie.

On est déjà esclave du code pour pour se faire comprendre d'une machine

Tu vas te rendre esclave d'une autre, pour te faire comprendre d'une autre

 

bonjour

Je me sers de ChatGPT pour trouver le nom des fonctions, comme par exemple le calcul de la valeur absolue

ou comment passer un ordre avec Tk et Sl. Les deux fonctions achat et vente (voir ci dessus ) sont un simple  un copier-coller commentaire compris

J'utilise ChatGPT un peu comme Google, mais sans avoir à rechercher dans une multitude de pages.
 
Ok...
Et a part de chatgpt, tu veux parler d'un aspect du développement en particulier ?
 

Oui, j'aimerais bien comprendre comment fonctionne le levier.

Par exemple, je suppose que j'ai 100 euros avec un levier de 30.

Je dispose donc d'un budget de 3000 euros, donc je peux passer un ordre d'un montant maximal de 3000 euros,

ou je passe un ordre d'un montant de 100 euros auquel le courtier applique un coefficient multiplicateur de 30


cdl remy

 
100€ x 30 = 3000€ virtual avec les quel tu peux acheter ce que tu veux, tu n'ai pas obligé d'utiliser les 3000€, tu peux utiliser juste 800€ par exemple, par n'oublie pas que toute perte sur n'importe quel achat ce déduira de tes 100€ qui eux sont réels, on ne va pas te déduire les perte des 3000€, si tu a du mal alors répose la questions autrement 😊
 
ZeroCafeine #:

Pas de débutant en français motivé 😊 ?

Vous pouvez me contacter en privé 😊

bonjour, je suis français et j'ai débuté il y a quelques mois. ça me ferait plaisir d'intégrer un groupe pour progresser ensemble
 
pipoubibou #:

Avec chtgpt et 2 3 notions voilà ce que l'on arrive a faire avec un moyen mobile

c'est une libre interprétation de https://www.mql5.com/fr/articles/10479

Il faut encore filtrer les faux positifs et n'hésitez pas à me  corriger ou à me conseiller. Comme vous avez pu le remarquer, je suis un simple débutant

bonjour, en vrai chatgpt peut t'aider pour des calcul complexes etc mais sur le long terme il n'est pas bon en écriture de code. pour ce qui est du code, passe par la classe CTrade c'est plus rapide et mieux pour la prise de position. utilise les classe positioninfo etc pour les fonction de trailling stop etc etc. regarde aussi les vidéos youtube en anglais, ils créent différentes stratégies et perso en plus de quelques formation acheter et de pratique, ça m'a fait énormément progresser ! le chemin est long mais quand les résultats sont la petit à petit c'est juste incroyable, on en apprend tous les jours et la communauté ici est incroyable niveau partage de valeur
 

Bonjour
Moi je suis partant pour essayer de vous aider sur les codes des indicateurs.

j'ai commencé à faire des codes exemples qui sont en ligne dans le codebase de ce site.

Ces codes simples exemples sont accompagnés de Pdf avec des explications supplémentaires que je n'ai pas voulu mettre dans le codes pour ne pas les alourdir

Ces mêmes codes peuvent aussi servir de bases pour point de départ pour des codes plus complexes

N'hésitez pas à demander

 
madara971 #:
bonjour, en vrai chatgpt peut t'aider pour des calcul complexes etc mais sur le long terme il n'est pas bon en écriture de code. pour ce qui est du code, passe par la classe CTrade c'est plus rapide et mieux pour la prise de position. utilise les classe positioninfo etc pour les fonction de trailling stop etc etc. regarde aussi les vidéos youtube en anglais, ils créent différentes stratégies et perso en plus de quelques formation acheter et de pratique, ça m'a fait énormément progresser ! le chemin est long mais quand les résultats sont la petit à petit c'est juste incroyable, on en apprend tous les jours et la communauté ici est incroyable niveau partage de valeur

tu peux me contacter en privé 😊