Difficoltà di traduzione :) - pagina 4

 
Alexey Volchanskiy:

Non c'è di che. Ma ho scritto che sono un gattino pigro))

Questo è il motivo per cui non tiro il diavolo per le palle ogni volta, ma tengo i dati dell'ordine in classe.

Puramente per una domanda: presumibilmente volevi rivedere le posizioni, non i mandati? М... Io l'avrei fatto diversamente, ma il live feed è qualcosa del genere

Ho 40 di queste funzioni nel mio modello per tutte le occasioni. Li ho separatamente per gli ordini e separatamente per le posizioni. Sono molto veloci da lavorare; usiamo quelli che ci servono nel nostro EA e inoltre, possiamo estendere o modificare l'algoritmo dell'EA in un paio di minuti. Questo è il motivo per cui uso le funzioni all'interno di un file e non ho bisogno di collegare nulla in più.

Sì, vorrei rivedere le posizioni e, se possibile, anche gli ordini, sarebbe fantastico)

Aleksey, se hai tempo e voglia dopo la passeggiata notturna scrivi, guarderò come dovrebbe essere e riscriverò tutto per analogia.

Grazie!

//==================

P.S. mentre scrivevi, hai dato una risposta)

(c) perché dovete mettere ogni sorta di merda dopo averinserito il codice!!!!

È per sapere quale funzione, come un commento, ce ne sono molti

Grazie per la risposta, continuerò a scavare ))))

 
Alexey Volchanskiy:

Non c'è di che. Ma ho scritto che sono un gattino pigro))

Questo è il motivo per cui non tiro il diavolo per le palle ogni volta, ma tengo i dati dell'ordine in classe.

Puramente per una domanda: presumibilmente volevi rivedere le posizioni, non i mandati? М... Avrei fatto le cose diversamente, ma il live feed è così

Stupido sito si è bloccato di nuovo, andrò su reddit, lì è tutto chiaro.

****************** stupido sito web !!!!!!!!!!!!!!

perché devi mettere merda dopo aver messo il codice!!!!

No Alexey, non è proprio così. PositionSelect(Symbol()) selezionerà la stessa posizione. Questo va bene per le reti.

Anche qui c'è un pezzo con parentesi non accoppiate, tutti qui capiscono

    for(i = 0; i < PositionsTotal(); i++)
     {
      if(PositionGetTicket(i) > 0 && PositionGetString(POSITION_SYMBOL) == Symbol() && PositionGetInteger(POSITION_MAGIC) == magic)
       {
        if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY || PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)
         {
 
Vitaly Muzichenko:

Sì, volevo dare un'occhiata alle posizioni e, se puoi, anche agli ordini, sarebbe super)


Per gli ordini pendenti sarebbe quasi lo stesso

    for(i = 0; i < Orders Total(); i++)
     {
      if(OrderGetTicket(i) > 0 && Order GetString(POSITION_SYMBOL) == Symbol() && Order GetInteger(POSITION_MAGIC) == magic)
       {
        if(Order GetInteger(POSITION_TYPE) == POSITION_TYPE_BUY_STOP || Order GetInteger(POSITION_TYPE) == POSITION_TYPE_SELL_STOP) // или другие типы
         {
 
Alexey Viktorov:

È quasi lo stesso per gli ordini pendenti

Un enorme grazie ai cinque scrittori) per tutto il loro aiuto!
 
Vitaly Muzichenko:

Alexei, una domanda per te:

Quanto è lungo e difficile tradurre progetti che sono scritti in stile procedurale? Perché procedurale? - Lo facevo in questo modo, avere un modello per tutte le occasioni, scrivere 3-5 righe in esso per le condizioni, e qualsiasi gufo è pronto in mezz'ora con tutto il debug

Il prossimo:

È possibile riscrivere la funzione di apertura della posizione per applicarla nello stesso modo come in quad, mi sono appena abituato ai loro nomi e al loro uso nel corso degli anni, e non ho bisogno di inserire alcuna libreria.

Bene, e un blocco di condizioni per aprire e creare grafica:

Molti più grafici, scritto una volta su cinque, quindi c'è qualcosa fatto attraverso .opa tempo e prezzo di selezionare il primo punto e il secondo. Nel quarto, ObjectSetInteger(0,nm,OBJPROP_TIME1, t1) e ObjectSetInteger(0,nm,OBJPROP_TIME2, t2), ma nel quinto, tale costruzione non funziona(

Grazie in anticipo per la risposta!

Ho riscritto un altro progetto ieri, è un Expert Advisor abbastanza grande. Il mio cliente lo sta ottimizzando da settimane, ha un codice pesante e molti parametri. L'ho incoraggiato a passare al 5 con hedge, ho detto che poteva ottimizzarlo in cloud. Oggi scrive che se la fa addosso con una tale velocità che gli ci sono volute un paio d'ore per ottimizzare tutto, cosa che prima gli prendeva settimane. Ovviamente, di solito ci sono alcune migliaia di agenti liberi nella nuvola.

Ora alla tua domanda, ho acquisito un po' di esperienza, ci sono alcune risposte.

Lasciate che mantengano lo stile procedurale, nessuno vi obbliga ad usare OOP.

2. Ecco un buon articolo sulle funzioni in MQL4 e 5. C'è un tavolo lì . https://www.mql5.com/ru/articles/81.

Ecco una libreria sull'uso combinato delle funzioni di trading 4 e 5. Non l'ho provato, ma è interessante. https://www.mql5.com/ru/code/16006

Переход с MQL4 на MQL5
Переход с MQL4 на MQL5
  • 2010.05.11
  • Sergey Pavlov
  • www.mql5.com
Данная статья, построенная в форме справочника по функциям MQL4, призвана помочь переходу с MQL4 на MQL5. Для каждой функции языка MQL4 приведено описание и представлен способ ее реализации на MQL5, что позволит вам значительно ускорить перевод своих программ с MQL4 на MQL5. Для удобства функции разбиты на группы, как в документации по MQL4.
 

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

Difficoltà di traduzione :)

Vitaly Muzichenko, 2016.08.15 21:00

Sono d'accordo )

Alexey, allora come gioco) per favore traduci questa funzione in cinque:

//===============================================================================================
//------------------------------- Возвращает количество позиций --------------------------------+
//===============================================================================================
int NumberOfPositions(string symb="0", int type=-1, int mg=-1) {
 int kp=0;
  if(symb=="0") { symb=Symbol();}
  for(int i=0; i<OrdersTotal(); i++) {
   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
    if((OrderSymbol()==symb||symb=="")&&(type<0||OrderType()==type)&&(mg<0||OrderMagicNumber()==mg)) {
     if(OrderType()==OP_BUY || OrderType()==OP_SELL) {
      kp++;
 }}}}
  return(kp);
 }

Come usarlo in quattro - si sa.

Grazie!


Ho una visione leggermente diversa sulla traduzione. Nessuna "sostituzione" in VS. Aggiungo solo una singola linea. Il codice di lavoro della funzione menzionata per MT5-Hedge

// https://www.mql5.com/ru/code/16006
#include <MT4Orders.mqh>

//===============================================================================================
//------------------------------- Возвращает количество позиций --------------------------------+
//===============================================================================================
int NumberOfPositions(string symb="0", int type=-1, int mg=-1) {
 int kp=0;
  if(symb=="0") { symb=Symbol();}
  for(int i=0; i<OrdersTotal(); i++) {
   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
    if((OrderSymbol()==symb||symb=="")&&(type<0||OrderType()==type)&&(mg<0||OrderMagicNumber()==mg)) {
     if(OrderType()==OP_BUY || OrderType()==OP_SELL) {
      kp++;
 }}}}
  return(kp);
 }

Il codice è diventato immediatamente multipiattaforma.

Allo stesso modo, eseguire l'Expert Advisor MT4 di qualcun altro in MT5-tester - esempio.

 
fxsaber:

Ho una visione leggermente diversa della traduzione. Nessuna "sostituzione" in VS. Aggiungo solo una singola linea. Codice di lavoro della funzione menzionata per MT5-Hedge

Il codice è diventato subito multipiattaforma.

Allo stesso modo, eseguire l'Expert Advisor MT4 di qualcun altro in MT5-tester - esempio.

Fico! Ho usato CTrade ieri per la velocità di traduzione, non ho ancora guardato la libreria. Ma gli darò sicuramente un'occhiata.
 
Alexey Volchanskiy:
Fico! Ho usato CTrade ieri per la velocità di traduzione, non ho ancora guardato la libreria. Ma darò sicuramente un'occhiata.

Il mio MT4Orders.mqh non ha funzionato per me - è in conflitto con la libreria standard che già uso. Probabilmente dovrebbe essere solo su un foglio pulito.

'::' - unexpected token Trade.mqh       126     22
'::' - unexpected token Trade.mqh       1477    14
'MqlTradeResult' - identifier already used      Trade.mqh       1477    55
see previous declaration of '           0       0
'&' - semicolon expected        Trade.mqh       1477    70
'if' - expressions are not allowed on a global scope    Trade.mqh       1483    4
'else' - expressions are not allowed on a global scope  Trade.mqh       1485    4
'if' - expressions are not allowed on a global scope    Trade.mqh       1488    4
'else' - expressions are not allowed on a global scope  Trade.mqh       1493    4
'return' - expressions are not allowed on a global scope        Trade.mqh       1499    4
')' - expressions are not allowed on a global scope     Trade.mqh       1500    3
declaration of 'action' hides global declaration in file 'Trade.mqh' at line 1480       DealInfo.mqh    244     55

**

 
Alexey Volchanskiy:

Il mio MT4Orders.mqh non ha funzionato per me - è in conflitto con la libreria standard che già uso. Probabilmente dovrebbe essere solo su un foglio pulito.

**

#include <MT4Orders.mqh> // если есть #include <Trade/Trade.mqh>, вставить эту строчку ПОСЛЕ
 

Domanda - come faccio a sapere la commissione di una posizione in MQL5?

L'ho fatto in MQL4 in questo modo

double oProfit = OrderProfit() + OrderSwap() + OrderCommission(); // MQL4

Non ci sono commissioni in MQL5.

double oProfit = PositionGetDouble(POSITION_PROFIT) + PositionGetDouble(POSITION_SWAP);

Ho guardato nelle proprietà dell'ordine e non c'è neanche la commissione. Cosa devo fare?