[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 161

 
Mopo3:

Sì, si chiama "imparare il gioco" cioè la lingua :)


Bene ricordo che il principio si basa sul fatto che c'erano tempi di 1min. e quindi per vedere un periodo di 20min. i dati sono presi proprio da 20 barre per 1 minuto....

il punto è... poi non ci ho pensato due volte...))

 

Gente! Guardate il cambiamento di tendenza della MA, qualcuno può aiutare? https://www.mql5.com/ru/forum/131277/page159

 
Se non è difficile consigliare quale periodo dovrebbe essere impostato per i livelli Murray in modo da non mentire o per ogni TF il suo periodo. Se ha il suo periodo, allora quali?
 

Buon pomeriggio!!!!!

Potete dirmi dov'è l'errore...... quando si compila nessun errore, ma non fa trading nel log del tester eSvechi+MA AUDUSD,H1: OrderSend errore 131 e qual è la ragione - non capisco

//+------------------------------------------------------------------+
//|                                                   eSvechi+MA.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.01;
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(StopLoss <= StopLevel+Spread)
         double SL = 0;
        else
         SL = Ask - StopLoss*Point;
       if(TakeProfit <= StopLevel-Spread)
         double TP = 0;
        else
         TP = Ask + TakeProfit*Point;
       if(!OrderSend(Symbol(), OP_BUY, Lots, Ask, 10, SL, TP, 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(StopLoss <= StopLevel+Spread)
         SL = 0;
        else
         SL = Bid + StopLoss*Point;
       if(TakeProfit <= StopLevel-Spread)
         TP = 0;
        else
         TP = Bid - TakeProfit*Point;
       if(!OrderSend(Symbol(), OP_SELL, Lots, Bid, 10, SL, TP, NULL, MagicNumber))
         Print("Не открыт ордер Sell. Ошибка №", GetLastError()); 
       }
//-----------------конец блока продажи ----------------------
   return(0);
  }
//+------------------------------------------------------------------+

ERR_INVALID_TRADE_VOLUME 131 Volume errato, errore nella granulazione del volume. È necessario fermare tutti i tentativi di trading e cambiare la logica del programma.

La logica sembra essere corretta.............................................

 
igrok2008:

Buon pomeriggio!!!!!

Potete dirmi dov'è l'errore...... durante la compilazione senza errori, ma non fa trading nel log del tester eSvechi+MA AUDUSD,H1: OrderSend errore 131 e qual è la ragione - non capisco

ERR_INVALID_TRADE_VOLUME 131 Volume errato, errore nella granulazione del volume. È necessario fermare tutti i tentativi di trading e cambiare la logica del programma.

La logica sembra essere corretta.............................................


I lotti non dovrebbero essere inferiori a (+ sorta di multiplo di) MarketInfo(Symbol(), MODE_MINLOT);

I programmi di molti trader hanno 0,1, ma il tuo è 10 volte meno.

 
ilunga:


I lotti devono essere almeno (+ tipo un multiplo di) MarketInfo(Symbol(), MODE_MINLOT);

Molti programmi dei trader hanno 0,1, mentre voi avete 10 volte meno.

E TUTTI !!!! L'intera cattura è questa!!!!!!!!! .......... Beh, che dire dei piccoli depositi di 5 -10 dollari???????
 
ilunga:


I lotti devono essere almeno (+ tipo un multiplo di) MarketInfo(Symbol(), MODE_MINLOT);

Molti programmi dei trader hanno 0,1, mentre voi avete 10 volte meno.

cambiato il lotto a 0,1 ancora non scambia
 
igrok2008:
ho cambiato il mio lotto a 0,1 ancora non funziona


eseguito su InterBank, tutto funziona anche con 0,01

Alpari a 0,01 dà errore 131, a 0,1 funziona

 
ilunga:


eseguito su InterBank, tutto funziona anche con 0,01

Alpari a 0,01 dà errore 131, a 0,1 funziona

esattamente Alpari su conto demo e test non funziona!!!!! terminale MT4 build 229........ consigli!!!!!!
 
igrok2008:

Buon pomeriggio!!!!!

Potete dirmi dov'è l'errore...... quando si compila nessun errore, ma non fa trading nel log del tester eSvechi+MA AUDUSD,H1: OrderSend errore 131 e qual è la ragione - non capisco

ERR_INVALID_TRADE_VOLUME 131 Volume errato, errore nella granulazione del volume. È necessario fermare tutti i tentativi di trading e cambiare la logica del programma.

La logica sembra essere corretta.............................................

Normalizzare Stop Loss, Take Profit e Open Price con NormalizeDouble