Errori, bug, domande - pagina 771

 
maryan.dirtyn:

È quello che sto facendo))... 6a ora... e non riesco a capire dove sia l'errore

la riluttanza a usare le librerie standard è dovuta al fatto che i flag e le variabili globali sono usati all'interno delle funzioni, e non sembra ragionevole smontare trade.mqh e altre parti

E quale errore viene restituito? )))
 
maryan.dirtyn:

MetaQuotes-Demo

Accesso: 1219233

EURUSD

Ho appena provato sulla sterlina, stessa storia. nessun arresto. faccio tutto nel tester

Costruire 655 (se aiuta)

Scrivere un'inizializzazione esplicita delle strutture:

   MqlTradeRequest request={0};
   MqlTradeResult  result={0};

Senza di esso, i campi della struttura sono lasciati con spazzatura e non si riempiono tutti i campi.

 

Grazie...

questo è il modo in cui mi lascio andare:

void OnTick(){ if(PositionsTotal()<1)OPEN(); }

bool OPEN(){
             MqlTradeRequest request={0};  ZeroMemory(request);
             MqlTradeResult  result={0};   ZeroMemory(result);
             

             request.symbol       = _Symbol;
             request.action       = TRADE_ACTION_DEAL;
             request.type_filling = ORDER_FILLING_FOK;
             request.deviation    = 100;
             request.volume       = NormalizeDouble(2,2);
             request.type         = ORDER_TYPE_BUY;
             request.price        = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
             request.tp           = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK) + 500*_Point,_Digits);
             request.sl           = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK) - 500*_Point,_Digits);

             OrderSend(request,result);     
                        
             if(result.retcode==10009 || result.retcode==10008)  Print("Succsesful open");
             else                                               Print("Error open: ",DoubleToString(GetLastError(),0),"  response code: ",result.retcode);
    
   return(true);}
 
ZeroMemory() è già superfluo, poiché un azzeramento più economico e semplice su ={0} si trova prima;
 

come posso controllare questo in qualsiasi altro modo? questo design si rifiuta di funzionare correttamente

if(PositionGetDouble(POSITION_PRICE_OPEN)!=PositionGetDouble(POSITION_SL)){ ... }
 

Quando ci saranno i parametri in OnTrade? Dobbiamo fare un tale casino...

Almeno sapere quali parametri ci saranno. Altrimenti dovrò rifarne molti per il periodo del campionato.

 
pronych:

Quando ci saranno i parametri in OnTrade? Dobbiamo fare un tale casino...

Almeno sapere quali parametri ci saranno. Altrimenti dovrò rifarne molti per il periodo del campionato((.

Sarà nella build di oggi, domani. Aggiunto un altro punto di ingresso:

void OnTradeTransaction(const MqlTradeTransaction& trans,const MqlTradeRequest& request,const MqlTradeResult& result)
  {
      
  }
 

È chiaro cosa dovrebbe essere: strumento, prezzo, lotto, tipo di commercio, ecc.

Ma non è chiaro come scoprire il prezzo dello scambio.

Forse mi sono perso qualcosa, sono stato via per un po'...

 
Renat:

Sarà già nella build di oggi. È stato aggiunto un altro punto di ingresso:

Grazie mille. Infine)))

Non vedo l'ora che arrivi.

 

Cari sviluppatori! Dato che il terminale non ha una cronologia di Ask, avrebbe senso legare gli ordini stop (Buy stop, Sell stop) al prezzo Bid? O per far sì che l'utente selezioni a quale prezzo un ordine debba essere attivato (Bid o Ask). Intendo il forex.