Errori, bug, domande - pagina 2829

 
Nuove funzioni interne.
int OrderExist( const string symbol, ENUM_ORDER_TYPE type, ulong magic, ulong &tickets[] );

int PositionExist( const string symbol, ENUM_POSITION_TYPE type, ulong magic, ulong &tickets[] );
 

Saluti. Potete consigliarmi o darmi un link su dove andare?

VPS WinServer 2012 R2, MT4 funziona, ad un certo punto si scarica, devo eseguire di nuovo.

Dove cercare, ecc. ....

Molte grazie in anticipo.

 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Peculiarità di mql5, consigli e trucchi

fxsaber, 2020.08.20 18:52

Il seguente codice sul conto demoRannForex-Server può riprodurre immediatamente questa situazione eseguendo questo EA.

// Воспроизведение ситуации наличия позиции и отложенного ордера с одинаковыми тикетами.

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

MqlTradeResult Result = {0};
MqlTradeRequest Request = {0};

int OnInit()
{

        Request.action = TRADE_ACTION_PENDING;
        Request.symbol = _Symbol;
        Request.volume = 100;
        Request.price = Ask;
        Request.type = ORDER_TYPE_BUY_LIMIT;
        
        return(!OrderSend(Request, Result)); // Выставили лимитник по текущей цене.
}

#define  TOSTRING(A) #A + " = " + DoubleToString(A, _Digits)

void OnTradeTransaction( const MqlTradeTransaction&, const MqlTradeRequest&, const MqlTradeResult& )
{
  if (OrderSelect(Result.order) && (OrderGetInteger(ORDER_STATE) == ORDER_STATE_PARTIAL)) // Если наш лимитник исполнился частично
  {
    if (Ask - OrderGetDouble(ORDER_PRICE_OPEN) < 100 * _Point)                            // и находится близко от текущей цены
    {
        Request.action = TRADE_ACTION_MODIFY;
        Request.order = Result.order;
        Request.price = Ask - 1000 * _Point;

      // тогда передвигаем его подальше.
      if (OrderSend(Request, Result)) // Если синхронный OrderSend выполнился успешно, то торговое окружение должно соответствовать.
      {
        // Проверка соответствия торгового окружения.
        if (OrderSelect(Request.order) &&                                                                // Если получилось взять данные нашего ордера
            NormalizeDouble(OrderGetDouble(ORDER_PRICE_OPEN) - Request.price, _Digits))                  // и цена ордера не равна цене успешного OrderSend
          Alert("Bug:" + TOSTRING(OrderGetDouble(ORDER_PRICE_OPEN)) + " != " + TOSTRING(Request.price)); // сообщаем о баге MT5.
      }
    }
    else
      ExpertRemove();
  }     
}


A proposito, lo script mostra (non sempre la prima volta) un bug nell'esecuzione di OrderSend sincrono.

Alert: Bug:OrderGetDouble(ORDER_PRICE_OPEN) = 0.89837 != Request.price = 0.88837

Dopo che l'OrderSend è stato eseguito per alcune decine/centinaia di millisecondi, il prezzo dell'ordine è vecchio, e non quello che è stato piazzato con successo da OrderSend.

 

invia una ricerca - non sono riuscito a trovarlo io stesso

come ottenere l' unicità delle righe con più campi in una tabella in SQLite?

ZS: se qualcuno può fare un esempio - grazie in anticipo!

 

Di chi è stata l'idea di spostare la scheda Forum in cima alla lista delle intestazioni?

Cattiva idea, non dire a chi.

 
L'evidenziazione del codice in base non funziona da più di una settimana, cambiando gli allegati anche un errore
 
Igor Makanu:

invia una ricerca - non sono riuscito a trovarlo io stesso

come ottenere l'unicità delle righe con più campi in una tabella in SQLite?

ZS: se qualcuno può fare un esempio - grazie in anticipo!

Crea una chiave unica per più campi (le righe con dati esistenti devono corrispondere all'unicità che si sta creando, altrimenti si verificherà un errore).

ALTER TABLE `t1` ADD UNIQUE (
`id` ,
`name` ,
`account`
);
 
Andrey Khatimlianskii:

Crea una chiave unica su più campi (le righe con dati esistenti devono corrispondere all'unicità creata, altrimenti si verificherà un errore).

OK, ci proverò, ma probabilmente dovrò leggere un libro SQL, non ho abbastanza conoscenze

Grazie!

 
Andrey Dik:

Di chi è stata l'idea di spostare la scheda Forum in cima alla lista delle intestazioni?

Cattiva idea, non dire a chi.

Sono d'accordo.

 
Andrey Dik:

Di chi è stata l'idea di spostare la scheda Forum in cima alla lista delle intestazioni?

Cattiva idea, non dire a chi.

Qual è il problema? Riflessi?)

E "Forum" è ancora cliccato più spesso di "Documentazione" - almeno sul sito...