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

 
Ihor Herasko:

Scrivete i vostri zecchini e metteteli nel tester di strategia.

ma qualcosa di più facile da usare?

 
Andrey Sokolov:

ma qualcosa di più facile da usare?

non puoi scrivere che non lo farai tu stesso? allorahttps://www.mql5.com/ru/job

ecco l'articolohttps://www.mql5.com/ru/articles/4566

lo leggi, crea le tue leggi di distribuzione delle citazioni

se MT4 ha bisogno dei propri grafici e tick, allora leggete l'articolo, esportate le quotazioni da MT5 e importatele in MT4

non può essere più semplice

Se sai programmare per MT4, apri lo script PeriodConverter da MT4 in MetaEditor, il codice è chiaro e abbastanza compatto, non ti ci vorrà molto tempo per capirlo, poi crea il tuo grafico e testalo

ZS: Mi sono ricordato di aver postato sul forum uno script per creare grafici con la funzione Wehrstrass.

https://www.mql5.com/ru/forum/86386/page988#comment_7843056

 

Salve. Funzione Restituisce un flag per l'esistenza di una posizione o di un ordine vicino al mercato (funzione trovata sul forum). Per il codice di test, dovrebbe aprire una posizione se circa 200 pip sopra e sotto il prezzo corrente, nessuna posizione. Perché apre una posizione su ogni tick quasi allo stesso prezzo?

//+------------------------------------------------------------------+
//|                                                    testprpos.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//--- input parameters
input int      Input1;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!ExistOPNearMarket(Symbol(),-1,200))
     {
      int ticket=OrderSend(Symbol(),OP_BUY,1,Ask,300,0,0,"_",16384,0,clrGreen);
      if(ticket<0)
        {
         Print("OrderSend завершилась с ошибкой #",GetLastError());
        }
      else
         Print("Функция OrderSend успешно выполнена");
      //--- 

     }

  }
//+------------------------------------------------------------------+
bool ExistOPNearMarket(string sy="",int op=-1,int mn=-1,int ds=1000000) 
  {
   int i,k=OrdersTotal(),ot;

   if(sy=="" || sy=="0") sy=Symbol();
   double p=MarketInfo(sy,MODE_POINT);
   if(p==0) if(StringFind(sy,"JPY")<0) p=0.0001; else p=0.01;
   for(i=0; i<k; i++) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
        {
         ot=OrderType();
         if((OrderSymbol()==sy) && (op<0 || ot==op)) 
           {
            if(mn<0 || OrderMagicNumber()==mn) 
              {
               if(ot==OP_BUY || ot==OP_BUYLIMIT || ot==OP_BUYSTOP) 
                 {
                  if(MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())<ds*p) return(True);
                 }
               if(ot==OP_SELL || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) 
                 {
                  if(MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))<ds*p) return(True);
                 }
              }
           }
        }
     }
   return(False);
  }
//+------------------------------------------------------------------+
 
Ho un problema con la migrazione degli EA, i pulsanti sono diventati inattivi, non posso migrare, qualcuno l'ha sperimentato?
 
Aleksei Petrenko:
Ho un problema con la migrazione degli EA, i pulsanti sono diventati inattivi, non posso migrare, qualcuno l'ha sperimentato?
 
Aleksei Petrenko:


 
Ghabo:

Salve. La funzione restituisce un flag per l'esistenza di una posizione o di un ordine vicino al mercato (funzione trovata sul forum). Per il codice di test, dovrebbe aprire una posizione se circa 200 pip sopra e sotto il prezzo corrente, non ci sono posizioni. Perché apre una posizione su ogni tick quasi allo stesso prezzo?

Controllare il numero di parametri quando si chiama

ExistOPNearMarket(Symbol(),-1,200)

e la sua descrizione

 
Galim_V:

Controllare il numero di parametri quando si chiama

e la sua descrizione

Grazie.
 
Ho un bot binario su python, domanda: come posso inviargli un segnale dal robot dal terminale senza stampelle?
 

Potete dirmi come calcolare il collaterale di una transazione?


Provato due approcci

(0.1 * Ask*MarketInfo(Symbol(),MODE_LOTSIZE))/AccountInfoInteger(ACCOUNT_LEVERAGE)


E questo

FreeMarginCheck=AccountFreeMarginCheck(Symbol(),OP_BUY,0.1);

 double val=AccountFreeMargin()-FreeMarginCheck;



Il primo dà strani risultati su EURJPY se la mia valuta di deposito è USD. Devo aggiungere qualcosa alla formula?

Il secondo funziona anche occasionalmente, a volte con valori corretti, a volte con qualche sciocchezza (dipende dal deposito)