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.

Raison: