Questions des débutants MQL5 MT5 MetaTrader 5 - page 389

 

Bonne journée à tous.

J'ai commencé à étudier la programmation MQL5 il n'y a pas si longtemps, je me suis familiarisé avec la documentation et j'ai regardé quelques webinaires sur youtube. J'ai réussi à faire quelques pas modestes :) Cela fait trois jours que je travaille dessus :( Je voudrais demander de l'aide aux professionnels.

Le concept général est le suivant : d'abord, nous obtenons les prix Ask et Bid (j'ai utilisé MqlTick et SymbolInfoTick à cette fin), puis nous regardons s'il y a une transaction ouverte ou non (j'ai utilisé PositionsTotal à cette fin), s'il n'y a pas de positions ouvertes, nous ouvrons une position aux prix Ack ou Bid selon une certaine condition. En d'autres termes, si nous avions une transaction précédente à acheter et qu'elle s'est avérée positive (nous avons acheté au plus bas et clôturé au plus haut), nous ouvrirons une nouvelle position pour acheter... C'est en termes généraux :) Le problème est que je n'arrive pas à obtenir d'informations sur le type de la dernière transaction et par conséquent sur le prix d'ouverture et de fermeture de la transaction ...

Voici le code que j'ai écrit :

//+------------------------------------------------------------------+

//|                                                  SOVETNIK_01.mq5 |

//|                                                   Tokarev Sergey |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Tokarev Sergey"

#property link      "https://www.mql5.com"

#property version   "1.00"



//Мои подключаемые библиотеки

#include<Trade\Trade.mqh>           //Библиотека для структуры "CTrade", она отвечает за выполнение всех торговых операций

#include <Trade\PositionInfo.mqh>   //Библиотека для структуры "CPositionInfo" она выдаёт информацию по всем нашим позициям



//переменные для подключаемых классов и структур опишем тут

CTrade Trade;                 //Значение структуры "CTrade" поместим в переменную Trade

CPositionInfo PositionInfo;   //Значение структуры "CPositionInfo" поместим в переменную PositionInfo

MqlTick last_tick;            //В переменной last_tick будут храниться цены последнего пришедшего тика, для этого используем структуру "MqlTick"

MqlTradeRequest request;

MqlTradeResult result;

//глобальные переменные

double SL;                           //Переменная необходимая для преобразования размера StopLoss в зависимости от типа брокера

double TP;                           //Переменная необходимая для преобразования размера TakeProfit в зависимости от типа брокера

double Ask;                          //Переменная в которой будем хранить значения цены спроса

double Bid;                          //Переменная в которой будем хранить значение цены предложения

int MagicNumber=123456;    //Зададим MagicNumber для идентификации своих ордеров

int N;                     //В переменную N мы занесём кол-во открытых позиций                  

int Lot;                    //Укажем размер нашего лота

//+------------------------------------------------------------------+

//| Инструкции которые срабатывают один раз при запуске эксперта                                   |

//+------------------------------------------------------------------+

int OnInit()

  {

   Trade.SetExpertMagicNumber(MagicNumber);        //Занесём наш номер в переменную Trade

   Lot=1;                                                  //Установим размер нашего лота

   return(0);

  }

//+------------------------------------------------------------------+

//| Инструкции которые срабатывают один раз при остановке (закрытии) эксперта                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

  }

//+------------------------------------------------------------------+

//| Инструкции которые срабатывают при каждом новом тике цен                                             |

//+------------------------------------------------------------------+

void OnTick()

  {

   SymbolInfoTick(_Symbol,last_tick);   //Заполняем переменную last_tick последними ценами текущего символа, для этого используем "SymbolInfoTick"

   //Обновляем переменные Ask и Bid для дальнейшего использования

   Ask=last_tick.ask;

   Bid=last_tick.bid;

   Print("Цена ПРОДАЖИ = ",Ask);

   Print("Цена ПОКУПКИ = ",Bid);

//Определим существует ли открытая позиция или нет

   N=PositionsTotal();

   Print("Кол-во открытых позиций: ",N); 

   if(N==0)

      {

      //Если позиции нет то определим какая сделка была крайней

      HistorySelect(0,TimeCurrent());        //Загружаем историю наших сделок

      ulong last_deal_ticket;                   //Объявим переменную для тикета последней сделки

      ulong deals=HistoryOrdersTotal();      //Обяъвим переменную "deals" куда выгрузим количество наших сделок в целом из истории

      last_deal_ticket=HistoryDealGetTicket((int)deals-1); //получим тикет крайней сделки

      Print("Ticket крайней сделки: ",last_deal_ticket);

      long deal_type=HistoryDealGetInteger(last_deal_ticket,DEAL_TYPE); //Тут получить должны тип крайней сделки из истории

      Print ("Тип крайней ",deal_type);      

      //Если была на продажу то покупаем

      if (deal_type==BUY)

         {

         //Открываем наш ордер на покупку

         Trade.Buy(Lot,Symbol(),Ask,SL,TP);

         Print("Мы купили по цене: ",Ask);

} 

 

Merci d'avance pour votre aide :)

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
Karputov Vladimir:
J'ai abandonné les livres papier il y a longtemps, ainsi que les livres pirates sous forme électronique. Je m'y suis habitué.

Vous ne pouvez pas vivre magnifiquement.

Des nouveaux arrivants me demandent ce qu'il faut lire et je ne me souviens pas de ce que j'ai.

 

Bonne journée à tous !

J'ai besoin de récupérer dans le champ de saisie de la fenêtre EA la période sélectionnée par l'utilisateur dans la liste déroulante. Comment le coller dans la fonction, j'ai du mal à le faire pour la deuxième journée consécutive, dites-le moi) !

Code :

input enum timeFrame {
Heure_1 = 60,
Heure_4 = 240,
Jour_1 = 1440,
Semaine_1 = 10080 !

} ;


iADX(currencySelect, THIS IS HOW TO INSTALL SELECTED DATA !, ADXparam, PRICE_CLOSE, MODE_MINUSDI,2)


Merci !

 
Сергей Михеев:

Insertion correcte du code dans le forum

Voici un exemple de script, appliquant votre énumération :

//+------------------------------------------------------------------+
//|                                                       Primer.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property script_show_inputs
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
enum timeFrame
  {
   Hour_1 = 60,
   Hour_4 = 240,
   Day_1=1440,
   Week_1=10080
  };
input timeFrame MyTimeFrame=Hour_1;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   Print(MyTimeFrame);
  }
//+------------------------------------------------------------------+
 
Karputov Vladimir:

Insertion correcte du code dans le forum

Voici un exemple de script, appliquant votre liste :

Merci !

Et plus encore, dites-moi s'il vous plaît, existe-t-il une construction dans MQ4 comme un tableau associatif avec des clés de texte, par exemple : Array["Here is the key !"] ?

 
Сергей Михеев:

Merci !

Aussi, pourriez-vous me dire si MQ4 a une construction comme un tableau associatif avec des clés de texte, par exemple : Array["Here is the key !"] ?

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
#define  Number                1
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   int Arr[]={ 12,15,4 };
   Print(Arr[Number]);
  }
//+------------------------------------------------------------------+
 
Karputov Vladimir:
Dans votre exemple, les clés sont des nombres et je voulais dire utiliser des chaînes de caractères comme clé.
 
Сергей Михеев:
Dans votre exemple, les clés sont des chiffres, et je voulais dire utiliser des chaînes de caractères comme clés.
Les éléments du tableau sont accessibles par index. L'index est un type d'entier.
 

Bonjour !

Pouvez-vous m'indiquer comment obtenir des informations sur les transactions ouvertes et fermées dans le code MQL EA (quel prix a été ouvert, quels étaient le TP et le SL) ? au moins pour les 1 dernières années.

Et existe-t-il une fonction intégrée ou une bibliothèque qui renvoie un tableau avec les n dernières valeurs de la moyenne mobile(de préférence pondérée ou exponentielle) ?

 
Alex317:

Bonjour !

Pouvez-vous m'indiquer comment obtenir des informations sur les transactions ouvertes et fermées dans le code MQL EA (quel prix a été ouvert, quels étaient le TP et le SL) ? au moins pour les 1 dernières années.

Et existe-t-il une fonction intégrée ou une bibliothèque qui renvoie un tableau avec les n dernières valeurs de la moyenne mobile(de préférence pondérée ou exponentielle) ?

Veuillez toujours préciser pour quelle version de MQL4 ou MQL5 votre question porte.