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

 

Salve. Ho iniziato a studiare MQL4 un po' di tempo fa e mi sono imbattuto nel seguente equivoco.

Come potete vedere nell'esempio qui sotto, quando la candela più alta della barra raggiunge 1,3058, l'ordine dovrebbe chiudersi. L'ordine viene chiuso secondo le condizioni ma il prezzo di chiusura non è 1,3058(potrebbe essere 1-3 pip più alto). Quindi, come possiamo chiudere correttamente? Chiudea 1,3058?

if(High[0] >= 1.3058)

OrderClose( OrderTicket(), OrderLots(),  NormalizeDouble(Ask,Digits), 0, Red) ;
 
Mr.Dmitry:

Salve. Ho iniziato a studiare MQL4 un po' di tempo fa e mi sono imbattuto nel seguente equivoco.

Come potete vedere nell'esempio qui sotto, quando la candela più alta della barra raggiunge 1,3058, l'ordine dovrebbe chiudersi. L'ordine viene chiuso secondo le condizioni ma il prezzo di chiusura non è 1,3058(potrebbe essere 1-3 pip più alto). Quindi, come possiamo chiudere correttamente? Chiudea 1,3058?

Il MT ha uno slippage, che è sempre a favore del broker.
 
Mr.Dmitry:

Salve. Ho recentemente iniziato a studiare MQL4 e mi sono imbattuto nel seguente equivoco.

Come potete vedere nell'esempio qui sotto, quando la candela più alta della barra raggiunge 1,3058, l'ordine dovrebbe chiudersi. L'ordine viene chiuso secondo le condizioni ma il prezzo di chiusura non è 1,3058(potrebbe essere 1-3 pip più alto). Quindi, come possiamo chiudere correttamente? Vuoi che il tuo ordine chiuda a 1,3058?

Bene, immaginate che nell'ultimo tick il prezzo fosse 1,3057, e nel tick attuale sia 1,3059.

Non dire poi che l'ordine non si è chiuso. Non state facendo il controllo correttamente. Devi farlo su "più o uguale" o "meno o uguale" e nient'altro.

 
artmedia70:

Immaginate una situazione in cui nell'ultimo tick il prezzo era 1,3057 e nel tick attuale è diventato 1,3059.

Non dire che l'ordine non è chiuso. Lo controlli in modo errato. Dovresti controllare "più o uguale" o "meno o uguale".


È quello che faccio io >=. Quanto sopra è solo un esempio (scusate la tautologia) e il problema non è che l'ordine non è chiuso, ma che è chiuso non come vorrei che fosse.

borilunadi:
Niente da fare, MT prevede lo slippage-Slippage, che è sempre a favore del broker.
Quindi non c'è proprio modo di farlo? Triste ((((.
 
Zhunko:
Si potrebbe scrivere uno script che disegna questa linea. Legare questo script a un tasto di scelta rapida.


Grazie, farò una prova.
 
Mr.Dmitry:

Questo è quello che faccio >=. L'esempio di cui sopra è solo un esempio (scusate la tautologia) e il problema non è che l'ordine non si chiude, ma che non si chiude come vorrei.

Voglio dire che non c'è nessuna via d'uscita? Triste ((!)
Se hai impostato lo Stop Loss alla fine, sei arrivato al pareggio, hai iniziato a trainare e il prezzo ha improvvisamente girato nella direzione opposta e su questo movimento l'ordine viene chiuso dallo Stop Loss non in profitto, ma in perdita! Slippage+spread ampliato=:(((
 

Buona sera a tutti!

Puoi dirmi cosa sto sbagliando?

int start()

{

//----

ObjectCreate("trendln1",OBJ_TREND,0);

ObjectSet("trendln1",OBJPROP_COLOR,Red);

//----

ritorno(0);

}

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!P.s. Ho provato a scrivere uno script per chiamare la linea di tendenza in modo che fosse poi possibile assegnare un tasto di scelta rapida per far apparire la linea di tendenza.

 
okvseok:

Buona sera a tutti!

Puoi dirmi cosa sto sbagliando?

int start()

{

//----

ObjectCreate("trendln1",OBJ_TREND,0);

ObjectSet("trendln1",OBJPROP_COLOR,Red);

//----

ritorno(0);

}

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!P.s. Ho provato a scrivere uno script per chiamare la linea di tendenza in modo che fosse poi possibile assegnare un tasto di scelta rapida per far apparire la linea di tendenza.

Si dovrebbe almeno specificare qualche coordinata quando si crea un oggetto.

// Формирование линии
int fLine(string Name            // Префикс имени
         ,string Text            // Префикс описания
         ,int Number             // Номер
         ,int Bar1,double Price1 // Первая точка
         ,int Bar2,double Price2 // Вторая точка
         ,int Bar3,double Price3 // Вспомогательная точка
         ,color Цвет
         ,int Стиль=STYLE_SOLID  // Сплошная
         ,int Видимость=0        // Только на текущем таймфрейме
         ,bool Луч=false
         ,int Толщина=1
         ,bool Фон=true ){
   int Error;
   datetime Time1=Time[Bar1],
            Time2=Time[Bar2];
   if( Number>0 ) Name=Name+Number;
   if( Bar1<Bar2
    || Bar2<LastBar
    || Price1<Zero
    || Price2<Zero ){
      Error=MyError;
      if( РежимОтладки && ПечататьПредупреждения ) Print("*     "+Name+" не создан, параметры: "+DoubleToStr(Price1,Digits)
                                       +" ("+Bar1+"/"+TimeToStr(Time1)+")..."
                                       +DoubleToStr(Price2,Digits)+" ("+Bar2+"/"+TimeToStr(Time2)+")");
      return(Error);
   }
   Error=fObjectDelete(Name);
   if( Error>0 && Error<MyError ){
      return(Error);
   }
   if( ObjectCreate(Name,OBJ_TREND,0,Time1,Price1,Time2,Price2,Time[Bar3],Price3) ){
      if( Text!="" && Number>0 ){
         Text=Text+Number;
         Фон=true;
      }
      if( !ObjectSetText(Name, Text)
       || !ObjectSet(Name, OBJPROP_COLOR, Цвет)
       || !ObjectSet(Name, OBJPROP_STYLE, Стиль)
       || !ObjectSet(Name, OBJPROP_RAY, Луч)
       || !ObjectSet(Name, OBJPROP_TIMEFRAMES, Видимость)
       || !ObjectSet(Name, OBJPROP_WIDTH, Толщина)
       || !ObjectSet(Name, OBJPROP_BACK, Фон) ){
         Error=GetLastError();
         if( !РежимОтладки ) PlaySound("alert.wav");
         Print("***** "+Name+" - ошибка модификации параметров "+Error);
   }  }
   else{
      Error=GetLastError();
      if( !РежимОтладки ) PlaySound("alert.wav");
      Print("***** "+Name+" - объект не создан, ошибка "+Error);
   }
   return(Error);
}
 
tara:

Si dovrebbe almeno specificare qualche coordinata quando si crea un oggetto.


e se voglio specificare la coordinata già con il mouse. Ho solo bisogno di chiamare la linea di tendenza stessa, ma non ha ancora funzionato. È possibile?
 
okvseok:

e se voglio puntare le coordinate già con il mouse. Ho solo bisogno di chiamare la linea di tendenza stessa, ma non ancora innescata. È possibile?

Non è la cosa più facile costruire una linea di tendenza, e lo si fa con il mouse.
Motivazione: