Qui peut aider avec le robot, pourquoi ne fonctionne-t-il pas ? - page 6

 
Alors quelle est la faute, montrez-moi au moins ?
 

voici ma fonction pour mt4 ecn, ndd, stp ...

Pas une seule erreur en un an

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

//| Fonction d'ouverture de commande (BeerGod) |

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

//| Paramètres : |

//| sy - nom de l'instrument ("" - symbole actuel) |

//| op - opération |

| //| ll - lot |

//| sl - niveau d'arrêt |

//| tp - take level |

//| mn - Numéro magique |

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


bool OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int MagicNumber=0)

{

double MinLl = MarketInfo(Symbol(),MODE_MINLOT) ;

double MaxLl = MarketInfo(Symbol(),MODE_MAXLOT) ;

ll = NormalizeDouble(ll,2) ;

si (ll < MinLl) ll = MinLl ; sinon ll = ll ;

si (ll > MaxLl) ll = MaxLl ; sinon ll = ll ;

if (op == 0) // Ouverture d'un BUY

{

// Vérifier si des fonds libres sont disponibles

if((AccountFreeMarginCheck(sy,OP_BUY,ll)<=0) || (GetLastError()==134))

{

Print(sy," ",ll," Il est impossible d'ouvrir l'ordre Acheter, pas assez d'argent.") ;

retour(0) ;

}

RefreshRates() ;


// Ouvrir une commande

int ticketbuy = OrderSend(sy,OP_BUY,ll,MarketInfo(sy,MODE_ASK),Slippage,0,0,Comments,MagicNumber,0,BuyColor) ;

if(ticketbuy<0)

Print(sy," OpenPosition. OrderSend Buy fail #",GetLastError()) ;

sinon

Print(sy," OpenPosition. OrderSend Buy successfully") ;


// Sommeil (Pause) ;


// Modifier l'ordre (fixer le take profit et le stop loss)

si (sl !=0 || tp !=0)

{

//--- Les prix SL et TP calculés doivent être normalisés.

double BSLoss = NormalizeDouble(MarketInfo(sy,MODE_ASK)-sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS))

double BTProfit = NormalizeDouble(MarketInfo(sy,MODE_ASK)+tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS)) ;

//--- Si la valeur d'entrée est zéro, remplacer le prix de modification par zéro.

si (sl == 0) BSLoss = 0 ;

si (tp == 0) BTProfit = 0 ;


bool resbuy = OrderModify (ticketbuy,OrderOpenPrice(),BSLoss,BTProfit,0,StopColor) ;

si(!resbuy)

Print(sy," OpenPosition. OrderModify Buy fail #",GetLastError()) ;

sinon

Print(sy," OpenPosition. OrderModify Buy successfully") ;

}

}


si (op == 1) // Ouvrir la vente.

{

// Vérifier la disponibilité des fonds libres

if((AccountFreeMarginCheck(sy,OP_SELL,ll)<=0) || (GetLastError()==134))

{

Print(sy," ",ll," Il est impossible d'ouvrir l'ordre Vendre, pas assez d'argent.") ;

retour(0) ;

}

RefreshRates() ;


// Ouvrir une commande

int ticketsell = OrderSend(sy,OP_SELL,ll,MarketInfo(sy,MODE_BID),Slippage,0,0,Comments,MagicNumber,0,SellColor) ;

si(ticketsell<0)

Print(sy," OpenPosition. OrderSend Sell fail #",GetLastError()) ;

sinon

Print(sy," OpenPosition. OrderSend Sell successfully") ;


// Sommeil (Pause) ;


// Modifier l'ordre (fixer le take profit et le stop loss)

si (sl !=0 || tp !=0)

{

//--- Les prix SL et TP calculés doivent être normalisés.

double SSLoss = NormalizeDouble(MarketInfo(sy,MODE_BID)+sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS))

double STProfit = NormalizeDouble(MarketInfo(sy,MODE_BID)-tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS)) ;

//--- Si la valeur d'entrée est zéro, remplacer le prix de modification par zéro.

si (sl == 0) SSLoss = 0 ;

si (tp == 0) STProfit = 0 ;


bool ressell = OrderModify (ticketsell,OrderOpenPrice(),SSLoss,STProfit,0,StopColor) ;

si(!ressell)

Print(sy," OpenPosition. OrderModify Sell fail #",GetLastError()) ;

sinon

Print(sy," OpenPosition. OrderModify Sell successfully") ;

}

}

retour(Vrai) ;

}

//Fin

 
P.S. Modérateurs, le code ne peut pas être inséré par le bouton.
 
Vladimir Zubov:
P.S. Modérateurs, le code ne peut pas être inséré via le bouton.

Je donne des leçons gratuites (sans frais) sur l'insertion de code sur Skype :)

 if (sl == 0) SSLoss = 0;
 
Karputov Vladimir:

Je donne des leçons gratuites (sans frais) en ligne sur l'insertion de code sur Skype :)

//+----------------------------------------------------------------------------+
//|    Функция открытия ордера  (BeerGod)                                      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" - текущий символ)                   |
//|    op - операция                                                           |
//|    ll - лот                                                                |
//|    sl - уровень стоп                                                       |
//|    tp - уровень тейк                                                       |
//|    mn - MagicNumber                                                        |
//+----------------------------------------------------------------------------+

bool OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int MagicNumber=0)
{
   double MinLl = MarketInfo(Symbol(),MODE_MINLOT);
   double MaxLl = MarketInfo(Symbol(),MODE_MAXLOT);
   ll = NormalizeDouble(ll,2);
   if (ll < MinLl) ll = MinLl; else ll = ll;
   if (ll > MaxLl) ll = MaxLl; else ll = ll;
   
   if (op == 0) // Открытие BUY
   {
      // Проверяем доступность свободных средств
      if((AccountFreeMarginCheck(sy,OP_BUY,ll)<=0) || (GetLastError()==134))
            {
               Print(sy," ",ll," It is impossible to open the order Buy, not enough money.");
               return(0);
            }
      RefreshRates();

      // Открываем ордер
      int ticketbuy = OrderSend(sy,OP_BUY,ll,MarketInfo(sy,MODE_ASK),Slippage,0,0,Comments,MagicNumber,0,BuyColor);
         if(ticketbuy<0)
         Print(sy," OpenPosition. OrderSend Buy fail #",GetLastError());
         else
         Print(sy," OpenPosition. OrderSend Buy successfully");

      // Sleep (Pause);

      // Модифицируем ордер (выставляем тейкпрофит и стоплосс)
      if (sl !=0 || tp !=0)
            {
            //--- Вычисленные значения цен SL и TP должны быть нормализованы
            double BSLoss = NormalizeDouble(MarketInfo(sy,MODE_ASK)-sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
            double BTProfit = NormalizeDouble(MarketInfo(sy,MODE_ASK)+tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
            //--- Если входящие значения ноль то заменяем цену модификации на ноль
            if (sl == 0) BSLoss = 0;
            if (tp == 0) BTProfit = 0;

            bool resbuy = OrderModify (ticketbuy,OrderOpenPrice(),BSLoss,BTProfit,0,StopColor);
                  if(!resbuy)
                     Print(sy," OpenPosition. OrderModify Buy fail #",GetLastError());
                  else
                     Print(sy," OpenPosition. OrderModify Buy successfully");
            }
   }

   if (op == 1) // Открытие Sell
   {
      // Проверяем доступность свободных средств
      if((AccountFreeMarginCheck(sy,OP_SELL,ll)<=0) || (GetLastError()==134))
            {
               Print(sy," ",ll," It is impossible to open the order Sell, not enough money.");
               return(0);
            }
      RefreshRates();

      // Открываем ордер
      int ticketsell = OrderSend(sy,OP_SELL,ll,MarketInfo(sy,MODE_BID),Slippage,0,0,Comments,MagicNumber,0,SellColor);
         if(ticketsell<0)
         Print(sy," OpenPosition. OrderSend Sell fail #",GetLastError());
         else
         Print(sy," OpenPosition. OrderSend Sell successfully");

      // Sleep (Pause);

      // Модифицируем ордер (выставляем тейкпрофит и стоплосс)
      if (sl !=0 || tp !=0)
            {
            //--- Вычисленные значения цен SL и TP должны быть нормализованы
            double SSLoss = NormalizeDouble(MarketInfo(sy,MODE_BID)+sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
            double STProfit = NormalizeDouble(MarketInfo(sy,MODE_BID)-tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
            //--- Если входящие значения ноль то заменяем цену модификации на ноль
            if (sl == 0) SSLoss = 0;
            if (tp == 0) STProfit = 0;

            bool ressell = OrderModify (ticketsell,OrderOpenPrice(),SSLoss,STProfit,0,StopColor);
                  if(!ressell)
                     Print(sy," OpenPosition. OrderModify Sell fail #",GetLastError());
                  else
                     Print(sy," OpenPosition. OrderModify Sell successfully");
            }
   }
return (True);
}
//End
 
Karputov Vladimir:

Je donne des leçons gratuites (sans frais) en ligne sur l'insertion de code sur Skype :)

Si je colle juste le code, oui, mais si j'écris plus, le code disparaît.
 
Il y a une erreur quelque part, lors du calcul de PHP & MQL, si vous avez besoin d'assembleur alors aidez.
 
GIM:
Merci !

Fait, si vous avez des questions sur le code écrire, également disponible en personne ou sur Skype

Dossiers :
GIM.mq4  9 kb
 
Sergey Gritsay:

prêt, si vous avez des questions sur le code, envoyez un e-mail ou Skype

Alert sort le message suivant : pas de prix. En attendant un nouveau tic...
 
GIM:
L'alerte est lancée avec le message suivant : pas de prix. Nous attendons un nouveau tic...

J'avais un compte de démonstration qui fonctionnait bien et j'ai ouvert une transaction du premier coup. J'ai besoin de plus de détails.