Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 192

 
Desead:

Naturalmente grazie, ma se sei troppo pigro per leggere la domanda, allora che senso ha rispondere? Posso cambiare il valore, lo spessore, il colore e lo stile dei livelli nell'indicatore nelle due funzioni che ho. Non ho accesso alla descrizione. Lo chiedo di nuovo, qualcuno conosce la risposta? Non so se l'ho già visto.

Ho allegato una foto per mostrare ciò di cui ho bisogno.


Non lo era e probabilmente non lo sarà mai in questa forma.
 
yan720:

Allora pensate che questa funzione non funzionerà? Non l'ho testato, ma mi sembra che faccia parte di un codice funzionante (questo Ilan è stato ovviamente ricostruito da qualcosa di debuggato al meglio). O è ancora un codice scadente?




Usalo:

void Modify_orders (double AverPrice, double SLoss, double TProfit){
   double Stoplevel =  MarketInfo(Symbol(),MODE_STOPLEVEL);
   datetime GTCount_1 = 0;
   datetime GTCount_2 = 0;
   int ppos = 0;
   if ((AverPrice != 0) == TRUE){
      for (ppos = OrdersTotal() - 1; ppos >= 0; ppos--){
          if (OrderSelect(ppos, SELECT_BY_POS, MODE_TRADES) == TRUE){
            if ((OrderSymbol() != Symbol() || OrderMagicNumber() != Magic || OrderType() >= 2) == TRUE) continue;
            if ((OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) == TRUE){ 
            if ((OrderType() == 0) == TRUE){ 
               if(Bid - SLoss < Stoplevel * Point){ SLoss = ND(Bid - Stoplevel * Point);}
               if(TProfit - Ask < Stoplevel * Point){ TProfit = ND(Ask + Stoplevel * Point);}
            }else if ((OrderType() == 1) == TRUE){ 
               if(SLoss - Ask < Stoplevel * Point){ SLoss = ND(Ask + Stoplevel * Point);}
               if(Bid - TProfit < Stoplevel * Point){ TProfit = ND(Bid - Stoplevel * Point);}
               }
                  GTCount_1 = GetTickCount();           
                  OrderModify(OrderTicket(), AverPrice, SLoss, TProfit, 0, Yellow);  
                  GTCount_2 = GetTickCount() - GTCount_1;
                   // Print("Modify time(ms):   ", GTCount_2, "   /  Ticket: ", OrderTicket()," /  Time: ", TimeToStr (TimeCurrent(), TIME_SECONDS), " /  Average price: ",AverPrice, " /  SL: ",SLoss, " /  TP: ",TProfit); 
                Sleep(33);                
                }
            }
        } 
    }
}
double ND(double value){
   return(NormalizeDouble(value, Digits));
}
 
digits:


Stai usando:

La vostra funzione non gestisce gli errori del server commerciale. La funzione OrderModify() dovrebbe essere progettata come una funzione separata a pieno titolo con gestione degli errori e un'adeguata risposta agli errori.

E di nuovo, per cosa?

if ((OrderSymbol() != Symbol() || OrderMagicNumber() != Magic || OrderType() >= 2) == TRUE) continue;
if ((OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) == TRUE){

A cosa serve l'olio?

 
digits:


Utilizzare:


No, non usiamo questo tipo di g.
 

Sarebbe strano comprare del pane a 20, tornare a casa e cambiare il prezzo d'acquisto a 5 rubli, e poi vedere nel portafoglio l'arrivo di 15 rubli di differenza... Fantastico... ;)

Potresti rivendere il pane per 35 rubli (15 rubli di profitto) ma il broker non ti darebbe una commissione :=)

 

Buon pomeriggio. Ho iniziato a studiare MQL un paio di giorni fa, ho riletto il sito ma non riesco a trovare la risposta. (Non giudicare un principiante)

Se avessi già provato, avrei visto che molti ordini sono ora chiusi. Ecco un semplice codice che dovrebbe chiudere un ordine quando si incrocia una MA(5) e una MA(21)

Ecco il codice per chiudere l'ordine incrociando MA(5) e MA(21). Grazie.

double ma50;

double ma51;

double ma210;

double ma211;

double ma550;

double Stoh;

int start()

{

//Open Orders--------------------------------------------------------------------------------

{

ma50=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,0);

ma51=iMA(NULL,0,5,0,MODE_EMA,PRICE_CLOSE,1);

ma210=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,0);

ma211=iMA(NULL,0,21,0,MODE_EMA,PRICE_CLOSE,1);

ma550=iMA(NULL,0,55,0,MODE_EMA,PRICE_CLOSE,0);

Stoh=iStochastic(Symbol(),5,5,3,3,MODE_SMA,1,MODE_MAIN,0);

if(OrdersTotal()==0 && ma50 > ma51 && ma50 > ma210 && ma51 < ma211 && ma210 > ma550 )

OrderSend(Symbol(),OP_BUY,Lots,Ask,0,0,0,"BUY",123,0,Red);

}

//Close Orders--------------------------------------------------------------------------------

{

if(OrdersTotal()==1 && ma50 < ma210 )

if(OrderSelect(10,SELECT_BY_POS)==true)

OrderClose(OrderMagicNumber(),Lots,Bid,1,CLR_NONE);

}

}


 
AlexCY:

Buon pomeriggio. Ho iniziato a studiare MQL un paio di giorni fa, ho riletto il sito, ma non riesco a trovare la risposta. (Non giudicare un principiante)

Se avessi già provato, avrei visto che molti ordini sono ora chiusi. Ecco un semplice codice che dovrebbe chiudere un ordine quando si incrocia una MA(5) e una MA(21)

Grazie.

Se il codice è corretto o meno dipende direttamente da ciò che voi, e nessun altro, intendete con questo termine.

Qui si sta cercando di aprire un ordine con un tentativo simile, ma leggermente più errato, di chiuderlo.

L'unica cosa che posso consigliarti è di andare a studiare ulteriormente la lingua, non c'è fretta, perché una base troppo piccola è la principale ragione di incomprensione.

I parametri in OrderClose non sono corretti. + Se hai un ordine OrderSelect viene preso con il numero 0. + sei sicuro che dopo il prossimo tick o due "ma50 < ma210" non verrà eseguito mangiando il tuo spread?

e il codice viene inserito attraverso il pulsante SRC sulla barra degli strumenti.

 

Buon pomeriggio.

Nel codice dell'indicatore abbiamo bisogno di catturare il momento in cui una nuova tendenza appare sul grafico, e ottenere il nome di questa tendenza.

Oltre a tracciare la lista di tutti gli oggetti ad ogni tick, fissare il momento di cambiamento del numero di oggetti e poi passare attraverso tutta la lista nella speranza di trovare l'oggetto che è stato appena applicato... C'è un altro modo meno costoso? Se sì, come può essere implementato più facilmente?

 
satorifx:

Buon pomeriggio.

Nel codice dell'indicatore abbiamo bisogno di catturare il momento in cui una nuova tendenza appare sul grafico, e ottenere il nome di questa tendenza.

Oltre a tracciare la lista di tutti gli oggetti ad ogni tick, fissare il momento di cambiamento del numero di oggetti e poi passare attraverso tutta la lista nella speranza di trovare l'oggetto che è stato appena applicato... C'è un altro modo meno costoso? Se sì, come può essere implementato più facilmente?


e nella parte in cui l'oggetto viene applicato direttamente, aggiungere un link al blocco con l'elaborazione di quanto sopra?
 
ALXIMIKS:

e nella parte in cui l'oggetto viene applicato direttamente, aggiungere un link al blocco con l'elaborazione di quanto sopra?
Quindi di quale parte stiamo parlando? Ho 2 metodi di osservazioni di tendenza: con il mio script (sì, posso aggiungere tutto quello che voglio lì) e con le osservazioni di tendenza standard utilizzando gli strumenti MT4 (non posso aggiungere nulla qui). Il compito è quello di tracciare la tendenza con qualsiasi metodo.
Motivazione: