[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 344

 
Summus_Digitus:
Ciao a tutti. Questa è una questione seria e urgente e ho cercato in tutto il web, come si dice... Ho deciso di usare MT4 per molto tempo, lo sto usando da 3 giorni. Ho provato ad usarlo per un po' e mi sembrava che fosse la prima volta e non capivo cosa stesse succedendo. Ho pensato che non è niente di grave, ma all'improvviso vado su MT e vedo 4 grafici H4 con un nuovo sistema e vedo il prezzo sbagliato, lo confronto con lo StartFX 2, apro time frame H1 e D1 e aspetto... Ho aspettato per un'ora e si aggiornerà anno per anno, ma non lo farà. "Beh, reinstalla e basta" - tu dici, e io ti dico "Fanculo". "Quindi scaricate un indicatore di qualche aggiornamento software da chissà quale sito" - voi chiedete, e io vi dico "Fanculo due volte". Voglio davvero continuare a fare soldi e strangolare l'aiuto informatico con 1 e poi vedremo :-)

Singhiozzando! Onestamente - l'ho letto e una lacrima pungente mi è scesa sul viso tremando dalle risate...
 
VladTch:

Buona giornata a tutti!

La mia domanda sembra essere semplice, ma ho scavato attraverso tutti gli articoli, ma non ho trovato una risposta - come funziona l'operatore return(-1)? Dove passa il controllo? In questo codice, per esempio:

altrimenti return(0);

Con lo zero tra parentesi e senza parentesi tutto sembra chiaro. Ma che dire di (-1)?

Grazie per aver risposto. :)

Lefunzioni speciali sono funzioni generali. Possono essere chiamate come funzioni definite dall'utente. Ma c'è una particolarità. Durante la chiamata di sistema i parametri e il valore di ritorno non vengono passati.

 
Summus_Digitus:
Ciao a tutti. Questa è una questione seria e urgente e ho cercato in tutta Internet, come si dice... Ho deciso di usare MT4 per molto tempo, lo sto usando da 3 giorni. Ho provato ad usarlo per un po' e mi sembrava che fosse la prima volta e non capivo cosa stesse succedendo. Ho pensato che non è niente di grave, ma all'improvviso vado su MT e vedo 4 grafici H4 con un nuovo sistema e vedo il prezzo sbagliato, lo confronto con lo StartFX 2, apro time frame H1 e D1 e aspetto... Ho aspettato per un'ora e si aggiornerà anno per anno, ma non lo farà. "Beh, reinstalla ed è fatta" - tu dici, e io ti dico "Fanculo". "Quindi scaricate un indicatore di qualche aggiornamento software da chissà quale sito" - voi chiedete e io vi dico "Fanculo due volte". Voglio davvero continuare a fare soldi e strangolare l'aiuto informatico con 1 e poi vedremo :-)

Agli Annali!!!
 

Perché non posso dipingere un numero?

 #property indicator_chart_window
void start()
   {
string spred=DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD), 0);
   string lot=AccountFreeMargin()/(Bid)*0.002;
   string lots=StringSubstr(lot, 4, 1);
 
SetLabel("ЧИСЛО",   lots , ColorOnSign(lots), 5, 7, 1);}
  
   color ColorOnSign(double nu){
      color lcColor=Navy;
         if (nu<4) lcColor=Green;
         if (nu>6) lcColor=Red;
      return(lcColor);}
     
   void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
      if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
         ObjectSetText(nm, tx, fs);
         ObjectSet(nm, OBJPROP_COLOR    , cl);
         ObjectSet(nm, OBJPROP_XDISTANCE, xd);
         ObjectSet(nm, OBJPROP_YDISTANCE, yd);
         ObjectSet(nm, OBJPROP_CORNER   , cr);
         ObjectSet(nm, OBJPROP_FONTSIZE , 18);
      return(0);}

Perché non posso dipingere un numero?

 

Strano, pensavo ci fosse una domanda.

Sta compilando!

 
Elektronik:

Perché non posso dipingere un numero?

 #property indicator_chart_window
void start()
   {
string spred=DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD), 0);
   string lot=AccountFreeMargin()/(Bid)*0.002;
   string lots=StringSubstr(lot, 4, 1);
 
SetLabel("ЧИСЛО",   lots , ColorOnSign(lots), 5, 7, 1);}
  
   color ColorOnSign(double nu){
      color lcColor=Navy;
         if (nu<4) lcColor=Green;
         if (nu>6) lcColor=Red;
      return(lcColor);}
     
   void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
      if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
         ObjectSetText(nm, tx, fs);
         ObjectSet(nm, OBJPROP_COLOR    , cl);
         ObjectSet(nm, OBJPROP_XDISTANCE, xd);
         ObjectSet(nm, OBJPROP_YDISTANCE, yd);
         ObjectSet(nm, OBJPROP_CORNER   , cr);
         ObjectSet(nm, OBJPROP_FONTSIZE , 18);
      return(0);}

Perché non posso dipingere un numero?

L'hai dipinto, ma per cambiare il colore devi creare un altro oggetto con lo stesso colore! E cambiate gli oggetti, allora il colore cambierà visivamente! Questo è quello che ho capito! O forse c'è un'opinione diversa? Io stesso ho cambiato solo colori con Mashka in questo modo.
 

Penso che sia tutta una questione di numero.

lots=StringSubstr(lot, 4, 1); 

forse il software lo interpreta come una singola cifra.

 
Elektronik:

Che strano, pensavo ci fosse una domanda.

Sta compilando!

Sì, volevo aggiungere qualcosa e l'ho cancellato per sbaglio. Non voleva ripristinarlo.

Devi cambiare il colore con questo:

ObjectSet(nm, OBJPROP_COLOR, cl);

Il tuo codice non mostra dove cambi il colore.

============

Ho capito dove...

Ecco come si fa:

   void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9)
    {
     ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
     ObjectSetText(nm, tx, fs);
     ObjectSet(nm, OBJPROP_COLOR    , cl);
     ObjectSet(nm, OBJPROP_XDISTANCE, xd);
     ObjectSet(nm, OBJPROP_YDISTANCE, yd);
     ObjectSet(nm, OBJPROP_CORNER   , cr);
     ObjectSet(nm, OBJPROP_FONTSIZE , 18);
    }

Non abbiate paura di ricreare l'oggetto. È ottimizzato. Se un oggetto viene creato, cambia solo le proprietà che cambiano. Non sarà ricreato.

Per favore, mettete le parentesi graffe su un livello, altrimenti non capirete cosa è scritto dove iniziano e finiscono i blocchi.

Ci devono essere problemi con il parametro ColorOnSign(). Il parametro è doppio e si inserisce la stringa.

SetLabel("ЧИСЛО", lots, ColorOnSign(StrToDouble(lots)), 5, 7, 1);

Oppure

color ColorOnSign(string sLots)
 {
  double nu = StrToDouble(sLots);
  color lcColor=Navy;
  if (nu<4) lcColor=Green;
  if (nu>6) lcColor=Red;
  return(lcColor);
 }
 

Buon pomeriggio, aiutatemi e se potete datemi un suggerimento sul codice.

Ho il seguente trawl in owl ->

        for ( int v = OrdersTotal() - 1; v >= 0; v -- ){       
                if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES)){           
                        if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic){ 
                                //+=================================================================================+
                                ///+================================Обычный трал ====================================+
                                if (TralSimple){
                                        if(OrderType() == OP_SELL){
                                                if((OrderOpenPrice()-Ask) > (Point*TrailingStop)){ 
                                                        if((OrderStopLoss() > (Ask+Point*TrailingStop)) || (OrderStopLoss()==0)){
                                                                OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                                                        }
                                                }
                                        }
                                        //+=================================================================================+
                                        if(OrderType() == OP_BUY){
                                                if((Bid-OrderOpenPrice()) > (Point*TrailingStop)){
                                                        if(OrderStopLoss() < Bid-Point*TrailingStop || (OrderStopLoss()==0)){
                                                                OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Blue);  
                                                        }
                                                }
                                        }
                                }                                  
--------------------------------------------

Ora il trawl muove uno stop dopo ogni tick positivo. Voglio fare quanto segue:

il primo passaggio - ad un tick positivo la rete da traino sposterà lo stop di 1 punto e aumenterà il passo.

Secondo passaggio - prendiamo una variabile x che sarà incrementata di 1 ogni volta che facciamo un certo passo (5). E ad ogni passaggio (passo)*x

ecc.

La questione è come avvitarsi in questo passo con moltiplicatore crescente. In caso di più posizioni questo moltiplicatore dovrebbe essere diverso per ogni posizione

 
berezhnuy:

Buon pomeriggio, aiutatemi e se potete datemi un suggerimento sul codice.

Ho il seguente trawl in owl ->

Ora il trawl muove uno stop dopo ogni tick positivo. Voglio fare quanto segue:

primo passaggio - ad un tick positivo il trawl sposterà lo stop di 1 punto, e di quanto la coppia è salita.

Secondo passaggio - prendere una variabile x che sarà aumentata di 1 ad ogni passaggio.

ecc.

La domanda è come aggiungere un passo con moltiplicatore crescente. E nel caso di più posizioni, questo moltiplicatore dovrebbe essere diverso per ogni posizione


Si fa qualcosa come la parabolica, il calcolo è relativo al punto base - prezzo e tempo di apertura
Motivazione: