Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 159

 

Ciao stimati programmatori, per favore aiutatemi a modificare questo EA.



1. Apertura automatica degli ordini.
2. Quando raggiunge + apre un ordine nello stesso lato con il lotto iniziale.
3. Quando raggiunge il - inverte l'ordine (apre l'ordine nella direzione in cui è stato ricevuto).
 
Saluti, colleghi!
Potete avvisare se qualcuno ha incontrato questo problema?
1) Testato in MT4 co-op. Ci sono Errore nell'ordine modify1 nel registro. Qual è la ragione dell'errore nell'ordinare modify1 e come correggerlo?
2) Non posso installare ed eseguire l'EA. Sposto l'EA nella finestra del grafico e o non si attacca all'angolo in alto a destra, o rimane bloccato, ma non parte. Invece di un colobo, è un rettangolo! (Vedere lo screenshot)
3) Come posso installare correttamente MT4 sul mio ROSA (Linux)? Ho MT4 installato in c/Program Files (x86)/MT4 . Devo copiare i file da c/Program Files (x86)/MT4 a c/users/xxl/AppData/ e a _c/users/xxl/Application Data/MetaQuotes/? Se è così, quali file dovrei mettere nelle cartelle LocalLow e Roaming e quali nelle cartelle Terminal e WebInstall?
Grazie per la risposta dettagliata! )

 

Ciao a tutti. Ecco la linea di fondo. C'è un punto di intersezione dell'alligatore con la barra N. Dobbiamo trovare l'angolo tra l'alligatore e, per esempio, il minimo della prima barra da questo punto di intersezione. La difficoltà è che abbiamo due valori incompatibili: il numero di barre e il prezzo. Volevo, come suggerito da qualcuno, ballare sulla dimensione di una cella del grafico. Ma se il numero di barre nel quadrato è proporzionale al cambiamento di scala, il prezzo non ha tale proporzione.

Ho due domande basate su quanto sopra:

1. Forse qualcuno ha incontrato o conosce la soluzione a questo problema.

2. L'Expert Advisor lavora con una certa scala del grafico o solo con il prezzo?

 
Alexander Dubovik:

Un'altra osservazione per gli sviluppatori.

La documentazione per il costrutto di linguaggio typedef (così come typedef stesso) lascia perplessi.

typedef char My_Char; - non compila.

Dalla documentazione:"La parola chiave typedef in C++ permette di creare tipi di dati personalizzati .....". Scusatemi, ma perché fare un riferimento al C++ nella documentazione su MQL, se in effetti MQL contiene solo dichiarazioni di puntatori a funzioni?

In MQL4/5 il typedef è castrato e serve solo per dichiarare i puntatori alle funzioni e non è utile per nient'altro.


typedef int (*TFunc)(int,int);

int add(int x,int y) 
{
    return(x+y); 
}

void OnStart()
{
    TFunc pfunc = add;   
    Print(pfunc(4,5));    
}
 
Alex Pirate:

Ciao a tutti!

Ho un semplice EA, è semplice, qualcosa non va, mi dà un errore... Voglio allegare un trawl ad esso ma non si apre nemmeno... dice - il valore di ritorno di 'OrderSend' dovrebbe essere controllato

perché controlla ancora??? cosa c'è che non va??? sembra che i programmatori e quelli che sono bravi ad aiutare tutti qui.... Peccato ((!)

https://translate.google.ru/?hl=ru&tab=TT#en/ru/return%20value%20of%20'OrderSend'%20should%20be%20checked

Google Переводчик
  • translate.google.ru
Бесплатный сервис Google позволяет мгновенно переводить слова, фразы и веб-страницы с английского на более чем 100 языков и обратно.
 
Alex Pirate:

Ciao a tutti!


 
Artyom Trishkin:


Grazie, ne sono consapevole... questa è la domanda tradotta che ho fatto in fondo... non quello che dice mi chiedo... perché? cosa c'è di sbagliato nel codice?? cosa ho scritto di sbagliato??

 
Alex Pirate:

Grazie, ne sono consapevole... Questa è la domanda tradotta che ho fatto in fondo... Mi chiedo perché, cosa c'è di sbagliato nel codice?

 
Artyom Trishkin:

extern int    MA_1_Period   = 22;
extern int    MA_1_MAShift  = 1;
extern int    MA_1_Method   = 1;
extern int    MA_1_Price    = 1;
extern int    MA_1_Shift    = 0;

extern int    MA_2_Period   = 55;
extern int    MA_2_MAShift  = 1;
extern int    MA_2_Method   = 1;
extern int    MA_2_Price    = 1;
extern int    MA_2_Shift    = 0;

extern int    MA_3_Period   = 163;
extern int    MA_3_MAShift  = 1;
extern int    MA_3_Method   = 1;
extern int    MA_3_Price    = 1;
extern int    MA_3_Shift    = 0;

extern double lot           = 0.1;
extern int    TP            = 60;
extern int    SL            = 40;
extern int    Slippage      = 5;
extern int    Magic         = 888;

int timeprev;

//+------------------------------------------------------------------+
int init()
{ 
   if (Digits == 3 || Digits == 5)
   {
     TP           *= 10;
     SL           *= 10;
     Slippage     *= 10;
     
   }

   return(0); 
}
//+------------------------------------------------------------------+
int deinit() 
{
   return(0);
}
//+------------------------------------------------------------------+

int start()
{
   if (timeprev == Time[0]) return(0);
   timeprev = Time[0];
   
   double MA_1_1 = iMA(Symbol(), 0, MA_1_Period, MA_1_MAShift, MA_1_Method, MA_1_Price, MA_1_Shift);
   double MA_1_2 = iMA(Symbol(), 0, MA_1_Period, MA_1_MAShift, MA_1_Method, MA_1_Price, MA_1_Shift);
   
   double MA_2_1 = iMA(Symbol(), 0, MA_2_Period, MA_2_MAShift, MA_2_Method, MA_2_Price, MA_2_Shift);
   double MA_2_2 = iMA(Symbol(), 0, MA_2_Period, MA_2_MAShift, MA_2_Method, MA_2_Price, MA_2_Shift);
   
   double MA_3_1 = iMA(Symbol(), 0, MA_3_Period, MA_3_MAShift, MA_3_Method, MA_3_Price, MA_3_Shift);
   double MA_3_2 = iMA(Symbol(), 0, MA_3_Period, MA_3_MAShift, MA_3_Method, MA_3_Price, MA_3_Shift);
     
 //+------------------------------------------------------------------+  
 // покупаем
 
   if (CountBuy() + CountSell() == 0 && MA_1_1 > MA_1_2 && MA_2_1 > MA_2_2 && MA_3_1 > MA_3_2 )
   
      {
         OrderSend(Symbol(), OP_BUY , lot, Ask, Slippage, SL, TP, "", Magic,0, Green);
      }
// продаём
   
   if (CountBuy() + CountSell() == 0 && MA_1_1 < MA_1_2 && MA_2_1 < MA_2_2 && MA_3_1 < MA_3_2 )
   
      {
         OrderSend(Symbol(), OP_SELL, lot, Bid, Slippage, SL, TP, "", Magic,0, Red);
      }
          
   return(0);
}
//+------------------------------------------------------------------+
int CountBuy()
{
   int count = 0;
   
   for (int i = OrdersTotal() - 1; i >= 0; i --)
   {
      if (OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
      {
        if (OrderSymbol() == Symbol() && OrderMagicNumber() ==  Magic && OrderType() == OP_BUY)
           count++;
      }
   }
   return(count);
}
//+------------------------------------------------------------------+
int CountSell()
{
   int count = 0;
   
   for (int i = OrdersTotal() - 1; i >= 0; i --)
   {
      if (OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
      {
        if (OrderSymbol() == Symbol() && OrderMagicNumber() ==  Magic && OrderType() == OP_SELL)
           count++;
      }
   }
   return(count);
}
//+------------------------------------------------------------------+
 
Alex Pirate:

Cosa stai confrontando con cosa?

   double MA_1_1 = iMA(Symbol(), 0, MA_1_Period, MA_1_MAShift, MA_1_Method, MA_1_Price, MA_1_Shift);
   double MA_1_2 = iMA(Symbol(), 0, MA_1_Period, MA_1_MAShift, MA_1_Method, MA_1_Price, MA_1_Shift);
   
   double MA_2_1 = iMA(Symbol(), 0, MA_2_Period, MA_2_MAShift, MA_2_Method, MA_2_Price, MA_2_Shift);
   double MA_2_2 = iMA(Symbol(), 0, MA_2_Period, MA_2_MAShift, MA_2_Method, MA_2_Price, MA_2_Shift);
   
   double MA_3_1 = iMA(Symbol(), 0, MA_3_Period, MA_3_MAShift, MA_3_Method, MA_3_Price, MA_3_Shift);
   double MA_3_2 = iMA(Symbol(), 0, MA_3_Period, MA_3_MAShift, MA_3_Method, MA_3_Price, MA_3_Shift);
     
 //+------------------------------------------------------------------+  
 // покупаем
 
   if (CountBuy() + CountSell() == 0 && MA_1_1 > MA_1_2 && MA_2_1 > MA_2_2 && MA_3_1 > MA_3_2 )

Se 0 > 0 e 0 > 0 e 0 > 0

Motivazione: