[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 162

 
igrok2008:
exactement Alpari sur le compte de démonstration et testé NON négocié !!!!! terminal mt4 build 229........ conseils !!!!!!
j'ai un compte alpari mais je ne négocie pas de stoploss ou de takeovers, juste le prix et après avoir placé les ordres et la position, je place des stoploss après.
 
todem:
Normaliser le Stop Loss, le Take Profit et le prix d'ouverture avec NormalizeDouble

sans normalisation IMHO il y aura une 130ème erreur, mais oui, c'est nécessaire aussi
 
j'ai pensé que c'était peut-être quelque chose avec la devise. j'ai essayé à la fois l'euro et la livre. RIEN NE TRADES !!!!! quelqu'un peut me dire !!!!!!
 
igrok2008:
j'ai pensé qu'il s'agissait peut-être d'un problème de devise. j'ai essayé l'euro et la livre. RIEN ne marche !!!!! qui peut me conseiller ?
ma suggestion : enlevez le SL et le TP. au lieu de 0...
 
igrok2008:
j'ai pensé qu'il y avait peut-être un problème avec la monnaie. j'ai essayé les deux, l'euro et la livre. RIEN ne marche !!!!! qui peut nous le dire s'il vous plaît !!!!!!
ticket1=OrderSend(Symbol(), OP_BUY, Lots, Ask, 10, SL, TP, NULL, MagicNumber);
if (ticket1!=0) {return(0);}
else Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
     
ou faites-le de cette façon parce que vous voulez beaucoup de choses en même temps.
 
todem:
j'ai aussi un alpari mais tout se négocie sans stoploss ni takeovers, juste le prix et après avoir placé les ordres et la position, je place les stoploss ensuite.

J'ai mis le stop et le chalut à 0 dans l'EA et cela ne marche toujours pas. J'ai fait une copie de l'EA, supprimé le stop du code, mais l'EA ne fonctionne toujours pas.

code de l'Expert Advisor sans stop et trall

//+------------------------------------------------------------------+
//|                                                eSvechi+MA_v1.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"


//---- input parameters
extern int       MA=13;
extern double    Lots=0.1;
extern int       StopLoss=100;
extern int       TakeProfit=100;
extern int       MagicNumber=501;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
  
bool CheckOrders(int Type)
{
 bool Result=True;
 for(int i=0;i<OrdersTotal();i++)
  if(OrderSelect(i,SELECT_BY_POS))
   if(OrderMagicNumber()==MagicNumber && OrderSymbol() == Symbol())
      if(OrderType()==Type)
        {
         if(Type==OP_BUY)
           if(!OrderClose(OrderTicket(),OrderLots(),Bid,0))
             Result=False;
         if(Type==OP_SELL)
           if(!OrderClose(OrderTicket(),OrderLots(),Ask,0))
             Result=False;
         } 
        else Result=False;
 return(Result); 
}

// Проверяем наличие закрытой на текущей свече позиции типа Type. Если есть, то возвращает False  
bool CheckExists(int Type)  
{
 bool Result=True;
 for(int i=OrdersHistoryTotal()-1; i>=0;i--)
  if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
   if(OrderMagicNumber()==MagicNumber && OrderSymbol() == Symbol() && OrderCloseTime() >= Time[0] && OrderType() == Type)
    {
     Result=False;
     break;
     }
 return(Result); 
 }
  
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {

        // Узнаем уровень стопов и спрэд
    int Spread = MarketInfo(Symbol(), MODE_SPREAD);
    int StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL);

        //Рассчитываем значения средних на 0-ом и 1-м баре
    double MA_0 =iMA(NULL, 0, MA,0,1,1,0);    
    double MA_1 =iMA(NULL, 0, MA,0,1,1,1);
    
 //-------------открытие позиции Buy покупка-----------------
 //сравниваем на 1-м баре цену закр. и откр. между собой и с МА, на 0-м баре откр. меньше МА закр. больше МА
    if(
       (Open[0+1]<Close[0+1])&& 
       (Close[0+1]<MA_1)&&
       (Open[0]<MA_0)&&
       (Close[0]>MA_0)
      )
     if(CheckOrders(OP_SELL) && CheckExists(OP_BUY))
      {
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 10, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Buy. Ошибка №", GetLastError()); 
       }
    //-------------------Конец блока покупки -------------------
    //-------------Открытие позиции Sell продажа----------------   
    if(
       (Open[0+1]>Close[0+1])&& 
       (Close[0+1]>MA_1)&&
       (Open[0]>MA_0)&&
       (Close[0]<MA_0)
      )
     if(CheckOrders(OP_BUY) && CheckExists(OP_SELL))
      {
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 10, 0, 0, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }
//-----------------конец блока продажи ----------------------
   return(0);
  }
//+------------------------------------------------------------------+
 
int OrderOp(int ord,double lot) // открытие ордера бай 
{
   double TP,SL,ticket;
   string ccm="";
   int ticket1;
   j2=autorazmer();
   
   if (ord==OP_BUY) {
   l=NormalizeDouble(MarketInfo(Symbol(), MODE_ASK), MarketInfo(Symbol(), MODE_DIGITS));
   
      ccm="ZZ:"+Period()+" -> BUY";
      ticket1=OrderSend(Symbol(),ord,lot,l,3,0,0,ccm,MG,0,White);
      OrderPrint();
   }
   if (ord==OP_SELL) {
   h=NormalizeDouble(MarketInfo(Symbol(), MODE_BID), MarketInfo(Symbol(), MODE_DIGITS));
   
      ccm="ZZ:"+Period()+" -> sell";
      ticket1=OrderSend(Symbol(),ord,lot,h,3,0,0,ccm,MG,0,White);
      OrderPrint();
   }
   if (ord==OP_BUYSTOP) {
   l=NormalizeDouble(MarketInfo(Symbol(), MODE_ASK), MarketInfo(Symbol(), MODE_DIGITS));
   lo=NormalizeDouble(l+j2*Point,Digits);
      ccm="ZZ:"+Period()+" -> BUYstop";
      ticket1=OrderSend(Symbol(),ord,lot,lo,3,0,0,ccm,MG,0,White);
      OrderPrint();
   }
   if (ord==OP_SELLSTOP) {
   h=NormalizeDouble(MarketInfo(Symbol(), MODE_BID), MarketInfo(Symbol(), MODE_DIGITS));
   ho=NormalizeDouble(h-j2*Point,Digits);
      ccm="ZZ:"+Period()+" -> sellstop";
      ticket1=OrderSend(Symbol(),ord,lot,ho,3,0,0,ccm,MG,0,White);
      OrderPrint();
   }
   return(ticket1);
}
vous pouvez utiliser la fonction d'ouverture des ordres pour Alpari...
 
erreur partout 131
 

Une question simple. Pouvez-vous me dire qui peut le faire :)

Si j'ai besoin de mettre 2 EAs sur un seul outil.

J'ouvre deux fenêtres dans le terminal et je lie mon robot à chacune d'elles ?

Il s'avère que le deuxième robot, par exemple, qui ne travaille qu'avec un seul ordre au marché, ne pourra pas ouvrir une transaction s'il y a des transactions en attente ouvertes par le premier robot ?

Ou bien le deuxième robot pourra clôturer les transactions du premier robot si elles répondent aux critères de clôture du deuxième robot ?

 

Bonjour à tous...

Pourriez-vous me dire comment construire le chemin vers les fichiers d'historique de MetaTrader 4 ? Comme "c:\\n-gram files\N-metatrader 4\N- history\N-alpari-classic\N" ?

Je sais qu'il existe une chaîne magique TerminalPath() qui renvoie le chemin du dossier à partir duquel le terminal est chargé. C'est compréhensible, il y a l'histoire, et puis des noms mystérieux de bureaux riches, qui vivent à mes dépens. Comment puis-je les atteindre ?