Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1538

 
Potete dirmi per favore come ritirare il denaro?
 
Richiesta inviata ieri, sono passate più di 24 ore e nessuna notizia
 
ivlyeva.tatyana6:
Ho inviato una richiesta ieri, è passato più di un giorno e il silenzio.

1. Vai al bancomat più vicino, inserisci la carta, inserisci il codice pin...

2. Andate alla banca più vicina, stabilite un contatto visivo, poi seguite la situazione...

3. Andare al mercato. 3) Andare al mercato. Andare in banca. Ritira i fondi (puoi ritirarli tutti, non solo i tuoi...) ...

4. Se devi ritirare i soldi da MMM, allora anche il serbatoio non ti aiuterà!

E seriamente, non si può!

 
//+------------------------------------------------------------------+
//|                                                  MACD Sample.mq4 |
//|                   Copyright 2005-2014, MetaQuotes Software Corp. |
//|                                              http://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright   "2005-2014, MetaQuotes Software Corp."
#property link        "http://www.mql4.com"
input double TakeProfit    =3160;
input double Lots          =0.5;
input double TrailingStop  =1040;
input int OpenLevel =22;
input int CloseLevel=77;
input int    Period =85;
input int    Period1 =57;
int LastBars=0;
extern int Magic = 110725;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick(void)
  {
   
 
   int    cnt,ticket,total;
//---
// initial data checks
// it is important to make sure that the expert works with a normal
// chart and the user did not make any mistakes setting external 
// variables (Lots, StopLoss, TakeProfit, 
// TrailingStop) in our case, we check TakeProfit
// on a chart of less than 100 bars
//---
//--- Trade only if new bar has arrived
   if(LastBars!=Bars) LastBars=Bars;
   else return(0);
   if(Bars<100)
     {
      Print("bars less than 100");
      return;
     }
   if(TakeProfit<10)
     {
      Print("TakeProfit less than 10");
      return;
     }
//--- to simplify the coding and speed up access data are put into internal variables
   
   total=OrdersTotal();
   if(total<1)
     {
      //--- no opened orders identified
      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("We have no money. Free Margin = ",AccountFreeMargin());
         return;
        }
      //--- check for long position (BUY) possibility
     if(iRSI(NULL,0,OpenLevel,PRICE_LOW,Period)>iRSI(NULL,0,CloseLevel,PRICE_HIGH,Period1)) 
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-TakeProfit*Point,Bid+TakeProfit*Point,"USDCADH4",Magic,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("BUY order opened : ",OrderOpenPrice());
           }
         else
            Print("Error opening BUY order : ",GetLastError());
         return;
        }
      //--- check for short position (SELL) possibility
      if(iRSI(NULL,0,OpenLevel,PRICE_LOW,Period1)<iRSI(NULL,0,CloseLevel,PRICE_HIGH,Period)) 
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+TakeProfit*Point,Ask-TakeProfit*Point,"USDCADH4",Magic,0,Red);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("SELL order opened : ",OrderOpenPrice());
           }
         else
            Print("Error opening SELL order : ",GetLastError());
        }
      //--- exit from the "no opened orders" block
      return;
     }
//--- it is important to enter the market correctly, but it is more important to exit it correctly...   
   for(cnt=0;cnt<total;cnt++)
     {
      if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
         continue;
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
         //--- long position is opened
         if(OrderType()==OP_BUY)
           {
            //--- should it be closed?
              if(iRSI(NULL,0,OpenLevel,PRICE_LOW,Period1)<iRSI(NULL,0,CloseLevel,PRICE_HIGH,Period)) 
              {
               //--- close order and exit
               if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet))
                  Print("OrderClose error ",GetLastError());
               return;
              }
            //--- check for trailing stop
            if(TrailingStop>0)
              {
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point*TrailingStop)
                    {
                     //--- modify order and exit
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green))
                        Print("OrderModify error ",GetLastError());
                     return;
                    }
                 }
              }
           }
         else // go to short position
           {
            //--- should it be closed?
           if(iRSI(NULL,0,OpenLevel,PRICE_LOW,Period)>iRSI(NULL,0,CloseLevel,PRICE_HIGH,Period1)) 
              {
               //--- close order and exit
               if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet))
                  Print("OrderClose error ",GetLastError());
               return;
              }
            //--- check for trailing stop
            if(TrailingStop>0)
              {
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                 {
                  if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     //--- modify order and exit
                     if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red))
                        Print("OrderModify error ",GetLastError());
                     return;
                    }
                 }
              }
           }
        }
     }
//---
  }
//+------------------------------------------------------------------+

Salve, per favore aiutatemi a capire... L'Expert Advisor chiude le compravendite degli altri o non apre le proprie se ci sono compravendite di altri.

 
darirunu1:

Salve, per favore aiutatemi a capire... L'Expert Advisor chiude le compravendite degli altri o non apre le proprie se ci sono compravendite di altri.

Dov'è il tuo mago per trovare gli ordini?
 

Se è scritto sopra, l'Expert Advisor chiude i trade aperti manualmente,

Se la metto in questo modo

 if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))
         continue;
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==Symbol()&& OrderMagicNumber()==Magic)  // check for symbol

Se ci sono compravendite aperte manualmente, allora l'Expert Advisor non chiuderà altre compravendite, ma non aprirà la propria se ci sono compravendite aperte manualmente.

 
darirunu1:

Se è scritto sopra, l'Expert Advisor chiude i trade aperti manualmente,

Se la metto in questo modo

Se ci sono compravendite aperte manualmente, allora l'Expert Advisor non chiuderà altre compravendite, ma non aprirà la propria se ci sono compravendite aperte manualmente.

hanno anche bisogno di una selezione per stregoneria all'apertura
 
MakarFX:
Ho anche bisogno di selezione sul numero magico all'apertura
 ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+TakeProfit*Point,Ask-TakeProfit*Point,"USDCADH4",Magic,0,Red);

Che cos'è questo? L'apertura è indicata. Il fatto è che quando si utilizzano diversi Expert Advisors, non c'è alcun problema. Il problema si verifica solo quando c'è un'apertura manuale di una posizione nel conto.

Non appena ci sono operazioni aperte manualmente sul conto, l'Expert Advisor smette di funzionare.

Non appena rimuovo questo nel codice, total=OrdersTotal();

se(totale<1)

Gli EA vanno dritti, ma aprono molti scambi

 
darirunu1:

Che cos'è questo? L'apertura è indicata. Il fatto è che quando si utilizzano diversi Expert Advisors, non c'è alcun problema. Il problema si verifica solo quando c'è un'apertura manuale di una posizione nel conto.

Non appena ci sono operazioni aperte manualmente sul conto, l'Expert Advisor smette di funzionare.

Non appena rimuovo questo nel codice, total=OrdersTotal();

se(totale<1)

Gli EA vanno dritti, ma aprono molti scambi.

Questo è quello di cui sto parlando - OrdersTotal() è per tutti gli ordini e avete bisogno di un ordine EA

   if(CountOrders("", -1,  Magic)<1)
     {
     открытие ордеров
     }
//+----------------------------------------------------------------------------+
//| Подсчет ордеров                                                            |
//+----------------------------------------------------------------------------+
//| -1 - Все типы ордеров                                                      |
//|  0 - ордера типа BUY                                                       |
//|  1 - ордера типа SELL                                                      |
//|  2 - ордера типа BUYLIMIT                                                  |
//|  3 - ордера типа SELLLIMIT                                                 |
//|  4 - ордера типа BUYSTOP                                                   |
//|  5 - ордера типа SELLSTOP                                                  |
//+----------------------------------------------------------------------------+
int CountOrders(string symb="", int or_ty=-1, int magiс=-1) 
  {
   int cnt=0;
   if(symb=="0") symb=_Symbol;
   for(int pos=OrdersTotal()-1;pos>=0;pos--)
     {
      if(OrderSelect(pos,SELECT_BY_POS)==true)
        {
         if((OrderSymbol()==symb || symb=="")&&(or_ty<0 || or_ty==OrderType()))
           {
            if(magiс<0 || OrderMagicNumber()==magiс) cnt++;
           }
        }
     }
   return(cnt);
  }
 
MakarFX:

Questo è quello di cui sto parlando, OrdersTotal() è tutti gli ordini e voi volete gli ordini EA

if(CountOrders("", -1,  Magic)<1)
     {

Questo è invece di

total=OrdersTotal();

if(total<1) o lasciamo anche questo?

Motivazione: