4p0ssum: Merci cher gss pour l'intérêt que vous portez à ma demande. Si vous êtes un programmeur MQL4, vous pouvez échanger votre EA avec d'autres programmeurs MQL4. Je pense que le code que j'ai est bon, je l'ai collecté à partir de différents EAs, ou pour être plus précis à partir de l'un d'entre eux, j'ai pris uniquement la fonction Trailing Stop. Le reste, je l'ai inventé moi-même (concernant les commandes en cours). Je voudrais vous demander, ainsi qu'à d'autres gourous, de jeter un coup d'œil à mon code et d'ajouter deux fonctions supplémentaires à ce robot, si vous le voulez bien.
1) Suppression d'un ordre en attente lorsque l'un des deux est déclenché.
2) Augmentation automatique d'un lot (pour chaque 50$ 0.01 i.e. pour 100$ ce sera 0.02).
Merci d'avance.
//+------------------------------------------------------------------+//| 4p0ssum.mq4 |//| Copyright 2013, 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 strictexternint TakeProfit = 100.0;
externbool AllPositions = True; // Управлять всеми позициямиexternbool ProfitTrailing = True; // Тралить только профитexternint TrailingStop = 50; // Фиксированный размер тралаexternint TrailingStep = 0; // Шаг тралаexternbool Del = false; // Удалять оппозитный ордерexternbool UseSound = False; // Использовать звуковой сигналexternstring NameFileSound = "expert.wav"; // Наименование звукового файла//------- Внешние параметры модуля -----------------------------------externstring _Parameters_b_Lots = "---------- Параметры модуля расчёта лота";
externint LotsWayChoice = 0; // Способ выбора рабочего лота:// 0-фиксированный,// 1-процент от депозита,// 2-фиксированно-пропорциональный,// 3-фракционно-фиксированный,externdouble Lots = 0.1; // Фиксированный размер лотаexternint LotsPercent = 10; // Процент от депозитаexternint LotsDeltaDepo = 500; // Коэффициент приращения депозитаexternint LotsDepoForOne = 500; // Размер депозита для одного минилотаexternint LotsMax = 1000; // Максимальное количество минилотов//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void start()
{
double TakeProfitLevelB;
double TakeProfitLevelS;
double BuyStart = Ask + 400*_Point;
double SellStart = Bid - 400*_Point;
TakeProfitLevelB = BuyStart + TakeProfit*Point;
TakeProfitLevelS = SellStart - TakeProfit*Point;
if (Open[1]==Close[1]&& OrdersTotal()==0)
{
int BuyTicket = OrderSend(Symbol(),OP_BUYSTOP,GetSizeLot(),BuyStart,3,0,TakeProfitLevelB,NULL,0,0,Green);
int SellTicket = OrderSend(Symbol(),OP_SELLSTOP,GetSizeLot(),SellStart,3,0,TakeProfitLevelS,NULL,0,0,Blue);
}
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (AllPositions || OrderSymbol()==Symbol()) {
TrailingPositions();
}
}
}
if(Del && ExistPositions(Symbol()))DeleteOrders(Symbol(),-1);
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void TrailingPositions()
{
double pBid, pAsk, pp;
pp = MarketInfo(OrderSymbol(), MODE_POINT);
if (OrderType()==OP_BUY) {
pBid = MarketInfo(OrderSymbol(), MODE_BID);
if (!ProfitTrailing || (pBid-OrderOpenPrice())>TrailingStop*pp) {
if (OrderStopLoss()<pBid-(TrailingStop+TrailingStep-1)*pp) {
ModifyStopLoss(pBid-TrailingStop*pp);
return;
}
}
}
if (OrderType()==OP_SELL) {
pAsk = MarketInfo(OrderSymbol(), MODE_ASK);
if (!ProfitTrailing || OrderOpenPrice()-pAsk>TrailingStop*pp) {
if (OrderStopLoss()>pAsk+(TrailingStop+TrailingStep-1)*pp || OrderStopLoss()==0) {
ModifyStopLoss(pAsk+TrailingStop*pp);
return;
}
}
}
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void ModifyStopLoss(double ldStopLoss)
{
bool fm;
fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
if (fm && UseSound) PlaySound(NameFileSound);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 06.03.2008 |//| Описание : Возвращает флаг существования позиций |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//| ot - время открытия ( 0 - любое время открытия) |//+----------------------------------------------------------------------------+bool ExistPositions(string sy="", int op=-1, int mn=-1, datetime ot=0) {
int i, k=OrdersTotal();
if (sy=="" || sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (ot<=OrderOpenTime()) return(True);
}
}
}
}
}
}
return(False);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 13.06.2007 |//| Описание : Удаление ордеров. Версия функции для тестов на истории. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" или NULL - текущий символ) |//| op - операция ( -1 - любая позиция) |//| mn - MagicNumber ( -1 - любой магик) |//+----------------------------------------------------------------------------+void DeleteOrders(string sy="", int op=-1, int mn=-1) {
int i, k=OrdersTotal(), ot;
if (sy=="" || sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
ot=OrderType();
if (ot==OP_BUYLIMIT || ot==OP_BUYSTOP || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
if (OrderSymbol()==sy && (op<0 || ot==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
OrderDelete(OrderTicket(), clrRed);
}
}
}
}
}
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 01.02.2008 |//| Описание : Возвращает одно из двух значений взависимости от условия. |//+----------------------------------------------------------------------------+string IIFs(bool condition, string ifTrue, string ifFalse) {
if (condition) return(ifTrue); elsereturn(ifFalse);
}
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 01.09.2005 |//| Описание : Вывод сообщения в коммент и в журнал |//+----------------------------------------------------------------------------+//| Параметры: |//| m - текст сообщения |//+----------------------------------------------------------------------------+void Message(string m) {
Comment(m);
if (StringLen(m)>0) Print(m);
}
//+------------------------------------------------------------------+//| Главная функция получения размера лота (вызывается из советника) |//+------------------------------------------------------------------+double GetSizeLot()
{
double dLot;
if (LotsWayChoice==0) dLot=Lots;
// фиксированный процент от депозитаif (LotsWayChoice==1)
{
dLot=MathCeil(AccountFreeMargin()/100000*LotsPercent)/10;
}
// фиксированно-пропорциональныйif (LotsWayChoice==2)
{
int k=LotsDepoForOne;
for (double i=2; i<=LotsMax; i++)
{
k=k+i*LotsDeltaDepo;
if (k>AccountFreeMargin())
{
dLot=(i-1)/10000; break;
}
}
}
// фракционно-фиксированныйif (LotsWayChoice==3)
{
dLot=MathCeil((AccountFreeMargin()-LotsDepoForOne)/LotsDeltaDepo)/10;
}
if (dLot<MarketInfo(Symbol(), MODE_MINLOT)) dLot=MarketInfo(Symbol(), MODE_MINLOT);
if (dLot<0.01) dLot=0.01;
return(dLot);
}
//+------------------------------------------------------------------+
Bonjour, je me demandais si vous pouviez m'aider à écrire un EA. Voici l'affaire. Après la fermeture d'une bougie avec un grand volume (achat ou vente), un ordre d'achat ou de vente avec un lot et un TP personnalisables est ouvert sur la deuxième bougie. Merci. Si vous pouvez m'aider)) Terminal MT4
ilfatiskhakov: Bonjour, je me demandais si vous pouviez m'aider à rédiger une évaluation environnementale. Voici l'affaire. Après la fermeture d'une bougie avec un grand volume (achat ou vente), un ordre d'achat ou de vente avec un lot et un TP personnalisables est ouvert sur la deuxième bougie. Merci. Si vous pouvez m'aider)) Terminal MT4
Bonjour, je vous demande d'écrire un EA basé sur l'indicateur ADX ci-joint. Je vous demande d'écrire un EA pour cet indicateur et non pour un autre, car il en existe de nombreuses variétés.
Le principe de fonctionnement va de flèche en flèche, lorsque la flèche apparaît la transaction est ouverte et lorsque le signal opposé apparaît la transaction est fermée et ouverte dans la direction opposée. Le lot est calculé à l'aide de la formule (Balance x (risque/1000), où le risque est de 0 à 1. Il devrait également y avoir une fonction de lot fixe
Bonjour, je vous demande d'écrire un EA basé sur l'indicateur ADX ci-joint. Je vous demande d'écrire un EA pour cet indicateur et non pour un autre, car il en existe de nombreuses variétés.
Le principe de fonctionnement va de flèche en flèche, lorsque la flèche apparaît la transaction est ouverte et lorsque le signal opposé apparaît la transaction est fermée et ouverte dans la direction opposée. Le lot est calculé à l'aide de la formule (Balance x (risque/1000), où le risque est compris entre 0 et 1. Il devrait également y avoir une fonction de lot constant.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Merci cher gss pour l'intérêt que vous portez à ma demande. Si vous êtes un programmeur MQL4, vous pouvez échanger votre EA avec d'autres programmeurs MQL4. Je pense que le code que j'ai est bon, je l'ai collecté à partir de différents EAs, ou pour être plus précis à partir de l'un d'entre eux, j'ai pris uniquement la fonction Trailing Stop. Le reste, je l'ai inventé moi-même (concernant les commandes en cours). Je voudrais vous demander, ainsi qu'à d'autres gourous, de jeter un coup d'œil à mon code et d'ajouter deux fonctions supplémentaires à ce robot, si vous le voulez bien.
Bonjour, je me demandais si vous pouviez m'aider à rédiger une évaluation environnementale. Voici l'affaire. Après la fermeture d'une bougie avec un grand volume (achat ou vente), un ordre d'achat ou de vente avec un lot et un TP personnalisables est ouvert sur la deuxième bougie. Merci. Si vous pouvez m'aider)) Terminal MT4
https://www.mql5.com/ru/code/mt4/experts
Bonjour, je vous demande d'écrire un EA basé sur l'indicateur ADX ci-joint. Je vous demande d'écrire un EA pour cet indicateur et non pour un autre, car il en existe de nombreuses variétés.
Le principe de fonctionnement va de flèche en flèche, lorsque la flèche apparaît la transaction est ouverte et lorsque le signal opposé apparaît la transaction est fermée et ouverte dans la direction opposée. Le lot est calculé à l'aide de la formule (Balance x (risque/1000), où le risque est de 0 à 1. Il devrait également y avoir une fonction de lot fixe
Bonjour, je vous demande d'écrire un EA basé sur l'indicateur ADX ci-joint. Je vous demande d'écrire un EA pour cet indicateur et non pour un autre, car il en existe de nombreuses variétés.
Le principe de fonctionnement va de flèche en flèche, lorsque la flèche apparaît la transaction est ouverte et lorsque le signal opposé apparaît la transaction est fermée et ouverte dans la direction opposée. Le lot est calculé à l'aide de la formule (Balance x (risque/1000), où le risque est compris entre 0 et 1. Il devrait également y avoir une fonction de lot constant.
Faux signaux
+ indicateur de l'avenir
Faux signaux solides
+ indicateur de l'avenir
Je trade manuellement sur H4 et c'est pas mal
Iurii Tokman:
Faux signaux solides
+ indicateur de l'avenir
Dans MT5, les points d'entrée sont légèrement différents
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
J'ai couru pour vérifier l'indicateur - cela semble être un bon début.
Je trade manuellement sur H4 et cela semble bon.
résultats d'activités sur le studio
MT5 a des points d'entrée légèrement différents
où est l'avenir ?
i - 1Où est l'avenir ?
Je n'en ai aucune idée - je l'ai fait tel qu'il est ! Je suis autodidacte, tout par méthode scientifique
\\\\\\\\\\\\\ Je suis moi-même surpris - il semble aussi que le résultat soit bon - mon expert est lourd - il faut beaucoup de temps pour le tester