Aiuto per la codifica - pagina 722

 
Tigra:


In questo indicatore, ci sono alcuni problemi quando si utilizzano le citazioni 4 cifre. Ma non è critico, il problema è la scala a 4 cifre al livello di 100, ha cercato di mostrare le immagini, guardando al momento giusto è molto faticoso gli occhi (dopo pochi giorni, se come un filo per cambiare la scala al livello di 40 - sarebbe meglio essere visto istogrammi e angolo destro del testo che avrebbe indicato il valore corrente?

Оставлю оригинальный текст на русском, тк возможны искажения при переводе(

У этого индикатора есть некоторые проблемы при использовании 4 значных котировок. Но это не критично, самая проблемы это масштабирование на 4 значном до уровня 100, постарался показать на картинках, разглядывать нужный момент весьма напрягает глаза( после нескольких дней, можно ли как нить поменять масштаб до уровня 40 - что бы лучше было видно гистограммы и в правом углу текстом что бы обозначалось текуще значение? Еще не могу понять почему появляються черные гистограммы поверх при увеличении (

Non è il riverniciatore?
 

Mladen,

Sto lavorando con MT5.

Ho questa " funzione di trailing semplice" che ho bisogno di convertire in "trailing con passo", potresti dare un consiglio?

nell'EA ho
===================
input "Trailing" (per punti)

=> esempio:
trailing: 4000 (4 punti)
(vecchio metodo) se il prezzo si è mosso di 4 punti sposta lo stoploss di 4 punti

ma ho bisogno di modificare in

===================
input "Trailing (Distanza) in punti"
input "Trailing (Step) in punti"

=> esempio:
distanza di trascinamento: 4000 (4 punti)
passo di trascinamento: 1500 (1,5 punti)

(nuovo metodo) se il prezzo si è mosso di 4 punti spostare lo stoploss 1,5 punti

//+------------------------------------------------------------------+
//| Simple Trailing function                                         |
//+------------------------------------------------------------------+
void fSimpleTrailing(){
   if(Trailing<=0){
      return;
   }        
   if(!Pos.Select(_Symbol)){
      return;
   }        
   if(!Sym.RefreshRates()){
      return;  
   }  
   double nsl,tmsl,psl;  
   switch(Pos.PositionType()){
      case POSITION_TYPE_BUY:
         nsl=Sym.NormalizePrice(Sym.Bid()-_Point*Trailing);
            if(nsl>=Sym.NormalizePrice(Pos.PriceOpen())){
               if(nsl>Sym.NormalizePrice(Pos.StopLoss())){
                  tmsl=Sym.NormalizePrice(Sym.Bid()-_Point*Sym.StopsLevel());
                     if(nsl<tmsl){
                        Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                     }
               }
            }
      break;
      case POSITION_TYPE_SELL:
         nsl=Sym.NormalizePrice(Sym.Ask()+_Point*Trailing);
            if(nsl<=Sym.NormalizePrice(Pos.PriceOpen())){
               psl=Sym.NormalizePrice(Pos.StopLoss());
                  if(nsl<psl || psl==0){
                     tmsl=Sym.NormalizePrice(Sym.Ask()+_Point*Sym.StopsLevel());
                        if(nsl>tmsl){
                           Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                        }
                  }
            }      
      break;
   }
}
 
nbtrading:
Non è il riquadro?

Sì, racconta, ma il colore non è importante in questo indicatore, per me è molto buono mostra fuori.
 
baraozemo:

Mladen,

Sto lavorando con MT5.

Ho questa "funzione di trailing semplice" che ho bisogno di convertire in "trailing con passo", potresti dare un consiglio?

nell'EA ho
===================
input "Trailing" (per punti)

=> esempio:
trailing: 4000 (4 punti)
(vecchio metodo) se il prezzo si è mosso di 4 punti sposta lo stoploss di 4 punti

ma ho bisogno di modificare in

===================
input "Trailing (Distanza) in punti"
input "Trailing (Step) in punti"

=> esempio:
distanza di trascinamento: 4000 (4 punti)
passo di trascinamento: 1500 (1,5 punti)

(nuovo metodo) se il prezzo si è mosso di 4 punti spostare lo stoploss 1,5 punti

//+------------------------------------------------------------------+
//| Simple Trailing function                                         |
//+------------------------------------------------------------------+
void fSimpleTrailing(){
   if(Trailing<=0){
      return;
   }        
   if(!Pos.Select(_Symbol)){
      return;
   }        
   if(!Sym.RefreshRates()){
      return;  
   }  
   double nsl,tmsl,psl;  
   switch(Pos.PositionType()){
      case POSITION_TYPE_BUY:
         nsl=Sym.NormalizePrice(Sym.Bid()-_Point*Trailing);
            if(nsl>=Sym.NormalizePrice(Pos.PriceOpen())){
               if(nsl>Sym.NormalizePrice(Pos.StopLoss())){
                  tmsl=Sym.NormalizePrice(Sym.Bid()-_Point*Sym.StopsLevel());
                     if(nsl<tmsl){
                        Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                     }
               }
            }
      break;
      case POSITION_TYPE_SELL:
         nsl=Sym.NormalizePrice(Sym.Ask()+_Point*Trailing);
            if(nsl<=Sym.NormalizePrice(Pos.PriceOpen())){
               psl=Sym.NormalizePrice(Pos.StopLoss());
                  if(nsl<psl || psl==0){
                     tmsl=Sym.NormalizePrice(Sym.Ask()+_Point*Sym.StopsLevel());
                        if(nsl>tmsl){
                           Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                        }
                  }
            }      
      break;
   }
}
Se il prezzo si è mosso rispetto a : cosa?
 
mladen:
Se il prezzo si è mosso rispetto a : cosa?

prima di chiamare la funzione si ha

se il prezzo sta "crescendo", si controlla la "distanza" in punti... se corrisponde alla "distanza" si sposta lo stoploss usando il passo (in punti)

esempio:

stoploss =8000
distanza di trascinamento = 4000
passo di trascinamento = 2000

compri al prezzo 10000

ora il prezzo è 14000 (distanza di trailing obiettivo raggiunto=4000), ora è necessario spostare lo stoploss a 6000 (8000 - trailing step)

ora il prezzo è 18000 (distanza di trailing target raggiunta=4000), ora è necessario spostare lo stoploss a 2000 (6000 - trailing step)

ora il prezzo è 22000 (distanza di trailing target raggiunta=4000), ora è necessario spostare lo stoploss a "entrata" + 2000 (2000 - trailing step =-2000)

ora il prezzo è 24000 (target di distanza trailing raggiunto=4000), ora è necessario spostare lo stoploss a "entrata" + 6000 (-2000 - step trailing =-6000)

 
baraozemo:

prima di chiamare la funzione si ha

se il prezzo sta "crescendo", si controlla la "distanza" in punti... se corrisponde alla "distanza" si sposta lo stoploss usando il passo (in punti)

esempio:

stoploss =8000
trailing distance = 4000
trailing step = 2000

compri al prezzo 10000

ora il prezzo è 14000 (trailing distance target raggiunto=4000), ora dovete spostare lo stoploss a 6000 (8000 - trailing step)

ora il prezzo è 18000 (trailing distance target raggiunto=4000 ), ora dovete spostare lo stoploss a 2000 (6000 - trailing step)

ora il prezzo è 22000 (trailing distance target raggiunto=4000), ora dovete spostare lo stoploss a "entrata" + 2000 (2000 - trailing step =-2000)

ora il prezzo è 24000 (distanza obiettivo di trailing raggiunta=4000), ora è necessario spostare lo stoploss a "entrance" + 6000 (-2000 - trailing step =-6000)

Sì, ma se non l'hai registrato (come di solito accade con i prezzi di stop loss o take profit: quando vengono modificati iniziano ad essere un criterio per un altro cambiamento) sei costretto ad averli in variabili e questo è tutt'altro che a prova di errore. Quello che stai cercando di fare non è ripetibile dal codice o devi codificare quegli stop per ogni singolo caso, il che lo rende inutilizzabile per qualsiasi prezzo aperto che non sia esattamente lo stesso dei prezzi codificati
 

Salve,

Vorrei scrivere una funzione che disegni una freccia. Vorrei che la freccia galleggiasse. Qualche idea? :)

void DrawArrow(string name, int IdSymbol, int x, int y, int width, int corner, color clr)
{
   ObjectCreate(0,name,OBJ_ARROW,0,0,0,0,0);
      ObjectSetInteger(0,name,OBJPROP_ARROWCODE,IdSymbol);
      ObjectSetInteger(0,name,OBJPROP_CORNER,corner);
      ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
      ObjectSetInteger(0, name, OBJPROP_COLOR, clr);
      ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
      ChartRedraw(0);
}

 
mladen:
Sì, ma se non l'hai registrato (come di solito accade con i prezzi di stop loss o take profit: quando vengono modificati iniziano ad essere un criterio per un altro cambiamento) sei costretto ad averli in variabili e questo è tutt'altro che a prova di errore. Quello che stai cercando di fare non è ripetibile dal codice o devi codificare quegli stop per ogni singolo caso, il che lo rende inutilizzabile per qualsiasi prezzo aperto che non sia esattamente lo stesso dei prezzi codificati

Ciao mladen,

ecco l'esempio-ea

File:
sample-ea.mq5  36 kb
 
Tartut:

Salve,

Vorrei scrivere una funzione che disegni una freccia. Vorrei che la freccia galleggiasse. Qualche idea? :)

void DrawArrow(string name, int IdSymbol, int x, int y, int width, int corner, color clr)
{
   ObjectCreate(0,name,OBJ_ARROW,0,0,0,0,0);
      ObjectSetInteger(0,name,OBJPROP_ARROWCODE,IdSymbol);
      ObjectSetInteger(0,name,OBJPROP_CORNER,corner);
      ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
      ObjectSetInteger(0, name, OBJPROP_COLOR, clr);
      ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
      ChartRedraw(0);
}

Cosa significa la freccia "galleggiante"?

PS: gli oggetti freccia non stanno usando le coordinate x e y o l'angolo. Stanno usando il tempo e il prezzo

 

ciao signor mladen

si prega di fare MTF ad esso

per quanto riguarda