[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 619
aggiornare i dati prima dell'apertura, normalizzare il prezzo
Vinin:
Ho scritto subito che questa chiusura non è raccomandata. Si sta usando una caratteristica non documentata. Ma qualsiasi posizione aperta ha un tempo di chiusura pari a zero, e il prezzo di chiusura sarà uguale al prezzo di chiusura corrente.
Qualcuno ha fatto un semplice trailing stop per spostare un ordine pendente dietro il prezzo invece del livello di stop? È possibile farlo? Ho provato e riprovato, ma tutto quello che ho ottenuto è che l'ordine pendente si muove avanti e indietro dietro il prezzo come un malato...
È possibile rielaborare la semplice funzione di trailing in modo che tratti gli ordini invece degli stop? Per esempio questo:
//+----------------------------------------------------------------------------+//| Сопровождение позиции простым тралом |//| Параметры: |//| sy - наименование инструмента ("" - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+void TrailingPositionsSimplTR(string sy="", int op=-1, int mn=-1) {
double p, pp;
int i, k=OrdersTotal();
if (sy=="" || sy=="0") sy=Symbol();
p=MarketInfo(sy, MODE_POINT);
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy && (op<0 || OrderType()==op)) {
if (mn<0 || OrderMagicNumber()==mn) {
if (OrderType()==OP_BUY) {
pp=MarketInfo(sy, MODE_BID);
if (!ProfitTrailing || (pp-OrderOpenPrice())>TrailingStopBuy*p) {
if (OrderStopLoss()<pp-(TrailingStopBuy+TrailingStepSimplTR-1)*p) {
ModifyOrder(sy, -1, pp-TrailingStopBuy*p, 0, clModifyBuy);//
}
}
}
if (OrderType()==OP_SELL) {
pp=MarketInfo(sy, MODE_ASK);
if (!ProfitTrailing || OrderOpenPrice()-pp>TrailingStopSell*p) {
if (OrderStopLoss()>pp+(TrailingStopSell+TrailingStepSimplTR-1)*p || OrderStopLoss()==0) {
ModifyOrder(sy, -1, pp+TrailingStopSell*p, 0, clModifySell);
}
}
}
}
}
}
}
}
Print() arrotonda fino a 4 cifre per emettere correttamente sulla console il tipo double(che restituisceiOpen() 5 cifre decimali, in questo caso), si dovrebbe usare la funzione DoubleToStr()
stringaDoubleToStr( double value, int digits) Converte un valore numerico in una stringa di testo contenente una rappresentazione in caratteri di un numero nel formato di precisione specificato.
Parametri:
value- Величина с плавающей точкой.
digits- Формат точности, число цифр после десятичной точки (громное спасибо.
artmedia70: Qualcuno ha fatto un semplice trailing stop per spostare un ordine pendente dietro il prezzo invece del livello di stop? È possibile farlo? Ho provato e riprovato, ma tutto quello che ho ottenuto è che l'ordine pendente si muove avanti e indietro dietro il prezzo come un malato...
È possibile rielaborare la semplice funzione di trailing in modo che tratti gli ordini invece degli stop? Per esempio questo:
for (i =0;i<OrdersTotal();i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true&&OrderMagicNumber()==MAGICMA&&OrderSymbol()==Symbol())
{
if (MathAbs(funk-OrderOpenPrice())>Point)
{
if (OrderType()==OP_BUYSTOP||OrderType()==OP_BUYLIMIT&&MathAbs(Ask-funk)>MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
{
OrderModify(OrderTicket(),NormalizeDouble(funk,Digits),OrderStopLoss(),NormalizeDouble(funk+TakeProfiti*Point,Digits),0);
}
if (OrderType()==OP_SELLSTOP||OrderType()==OP_SELLLIMIT&&MathAbs(Bid-funk)>MarketInfo(Symbol(),MODE_STOPLEVEL)*Point)
{
OrderModify(OrderTicket(),NormalizeDouble(funk,Digits),OrderStopLoss(),NormalizeDouble(funk-TakeProfiti*Point,Digits),0);
}
}
}
}
qualcosa come questo, dove l'ordine è trainato dal valore funk calcolato
Cosa si può fare?
aggiornare i dati prima dell'apertura, normalizzare il prezzo
Ho scritto subito che questa chiusura non è raccomandata. Si sta usando una caratteristica non documentata. Ma qualsiasi posizione aperta ha un tempo di chiusura pari a zero, e il prezzo di chiusura sarà uguale al prezzo di chiusura corrente.
dopo tutte queste esperienze è già ovvio)
Cosa si può fare?
Guardate attentamente i prezzi che fissate quando aprite una posizione. Sicuramente ci deve essere... Ask è confuso con Bid?
Sì, è così. L'ho fatto.
è. Grazie.
Ho provato e riprovato, ma tutto quello che ho ottenuto è che l'ordine pendente si muove avanti e indietro dietro il prezzo come un malato...
È possibile rielaborare la semplice funzione di trailing in modo che tratti gli ordini invece degli stop? Per esempio questo:
Print() arrotonda fino a 4 cifre per emettere correttamente sulla console il tipo double(che restituisce iOpen() 5 cifre decimali, in questo caso), si dovrebbe usare la funzione DoubleToStr()
stringa DoubleToStr( double value, int digits)
Converte un valore numerico in una stringa di testo contenente una rappresentazione in caratteri di un numero nel formato di precisione specificato.
Parametri:
value - Величина с плавающей точкой.
digits - Формат точности, число цифр после десятичной точки (громное спасибо.
Grazie mille.
Controlla questo EA, l'ho implementato lì
http://www.rogersignals.com/ru/experts.php?a=Support_Resistance
Qualcuno ha fatto un semplice trailing stop per spostare un ordine pendente dietro il prezzo invece del livello di stop? È possibile farlo?
Ho provato e riprovato, ma tutto quello che ho ottenuto è che l'ordine pendente si muove avanti e indietro dietro il prezzo come un malato...
È possibile rielaborare la semplice funzione di trailing in modo che tratti gli ordini invece degli stop? Per esempio questo:
Tutto è troppo complicato :)))
Passare nel metodo come parametri la medge ritardata e la trall desiderata.Ecco il mio codice
È un po' troppo complicato per te :))
Passare nel metodo come parametri un medjw ritardato e il trall desiderato.Ecco il mio codice