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

 
peshihod:

Io ce l'ho così.

Grazie, è così semplice e diretto, ci proverò
 
delf:
Grazie, è così semplice e diretto, lo proverò.
C'è qualcosa che non va. Dopo Stor Loss è di nuovo nella stessa direzione.
 
delf:
C'è qualcosa che non va. Dopo Stor Loss di nuovo nella stessa direzione.

Cos'è StopLoss?

 

Ciao!

Puoi dirmi quali file devono essere scaricati e dove installarli in mt4 per ottenere questa finestra?

Non capisco come farlo nellasimulazione su diversi timeframe dello strumento in prova

Voglio vedere solo tre grafici giornalieri, a quattro ore e a ore

Voglio vedere tre grafici giornalieri, a quattro ore e orari. per favore aiutatemi, non sono riuscito a farlo per tutta la notte!


 
ametist444:

Ciao!

Puoi dirmi quali file devono essere scaricati e dove installarli in mt4 per ottenere questa finestra?

Non capisco come farlo nellasimulazione su diversi timeframe dello strumento in prova

Voglio vedere solo tre grafici giornalieri, a quattro ore e a ore

Voglio vedere solo tre finestre in un timeframe, voglio vedere solo tre grafici, voglio vedere solo tre grafici giornalieri, quattro ore e orari.

È necessario aprire queste finestre programmaticamente da MT4? Non sono sicuro, non sono molto bravo a farlo... :-)

Aprire manualmente alcune finestre e inserire l'indicatore lì, non è un'opzione?

 

Buona sera: potreste consigliarmi come capire

L'importo del margine richiesto per il tipo di ordine specificato nel conto corrente e nell'ambiente di mercato corrente senza prendere in considerazione gli attuali ordini pendenti e le posizioni aperte.

Puoi approssimare una funzione esistente?

 

Ho anche iniziato a usare questa funzione invece di un sacco

double     Lott  ( double     Lot ){
     if ( risk!=0)  Lot=AccountFreeMargin()*risk/10000 ; return (Lot);}  

OrderSend errore 131 - volume sbagliato. Con deposito iniziale 10000 lotto iniziale 1. Tuttavia, qualcosa non funziona...

 

Per un po' di tempo ho provato a rifare il blocco di chiusura degli acquisti per chiudere solo le ultime due posizioni di acquisto, ma non ci riesce. Puoi dire a come rifare il blocco ?

void Close_2buy()
{
   bool   result;
  double  close_price;
  int    cmd,error;
  bool close;

      for (int f=OrdersTotal()-1; f>=0; f--) // 
      {
         OrderSelect(f, SELECT_BY_POS);
         if (OrderSymbol()==Symbol() &&(OrderMagicNumber()==magic ) 
         && (OrderType() == OP_BUY )) 
         {
            close = False;
            {
               close_price = MarketInfo(OrderSymbol(), MODE_BID);
               close = True;
            }
               
            if (close) 
            {
               result=OrderClose(OrderTicket(), OrderLots(), close_price, 0, CLR_NONE);
               if(result!=TRUE)
               {error=GetLastError();Print("LastError = ", error);}
            }
            
         }
      }
}
 
Dimka-novitsek:

Ho anche iniziato a usare questa funzione invece di un sacco

OrderSend errore 131 - volume sbagliato. Con deposito iniziale 10000 lotto iniziale 1. Tuttavia, qualcosa non funziona...


Io uso questo. modificatelo per voi e provate (cambiate AccountBalance() in AccountFreeMargin(), mettete la vostra variabile. LottiDigit)
//+------------------------------------------------------------------+
//|                                                         0000.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      ""
////////////////////////////////////////////////////////////////////////|
extern int     Method         =1;      // Метод: 0-FixedLots, 1-часть //|
                                       //(Risk) от свободных средств  //|
                                       // нормированных по значению   //|
                                       // MeansStep(например Risk=    //|
                                       // 0.01,MeansStep=1000,если    //|
                                       // средств меньше 2000,лот     //|
                                       // равен 0.01,если средств     //|
                                       // стало 2000 или более - 0.02 //|
                                       // лота, 3000 или более - 0.03 //|
                                       // лота и т.д.).               //|
                                                                      //|
extern double  LOTS           =0.01;   // Количество лотов при        //|
                                       // Method=0.                   //|
                                                                      //|
extern double  Risk           =0.01;   // Риск. Часть от средств при  //|
                                       // FixedLot=false.             //|
                                                                      //|
extern double  MeansStep      =100.0;  // Шаг средств. Используется   //|
                                       // при Method=1.               //|     
////////////////////////////////////////////////////////////////////////|
//+------------------------------------------------------------------+//|
//|  Определяем "свой" минимальный размер или шаг лота на момент     |//|
//|  начала цикла в зависимости от размера баланса и установленного  |//|
//|  риска.                                                          |//|
//+------------------------------------------------------------------+//|
////////////////////////////////////////////////////////////////////////|
double fGetLotsSimple()                                               //|
   {                                                                  //|
   double LOTSTEP,lot;                                                //|
   double Means;                                                      //|
   switch (Method)                                                    //|
      {                                                               //|
      case 0:                                                         //|
         lot=LOTS;                                                    //|
      break;                                                          //|
      case 1:                                                         //|
         Means=AccountBalance();                                      //|
         if(Means<MeansStep)Means=MeansStep;                          //|
         lot=(MeansStep*MathFloor(Means/MeansStep))/MeansStep*Risk;   //|
      break;                                                          //|
      default:lot=LOTS;                                               //|
   }                                                                  //|
   if(lot<1.0/MathPow(10,LotsDigits))lot=1.0/MathPow(10,LotsDigits);  //|
   LOTSTEP=MarketInfo(Symbol(),MODE_LOTSTEP);                         //|
   lot=MathFloor(lot/LOTSTEP)*LOTSTEP;                                //|
   lot=NormalizeDouble(lot,LotsDigits);                               //|
   if(lot>AccountFreeMargin())lot=-1;                                 //|
   return(lot);                                                       //|
}                                                                     //|
////////////////////////////////////////////////////////////////////////|
)
 

Puoi dirmi cosa potrebbe esserci di sbagliato in questo codice? È un trailing stop, ma quando viene testato genera l'errore 1, quando viene modificato. Perché l'ordine non viene modificato?

Quando stavo correggendo questo errore (finora senza successo), quando ho compilato il codice principale di Expert Advisor nella funzione di stampa, ha iniziato a restituire un errore, dicendo che ha bisogno di virgolette, ma tutto lì è corretto, e per correggere questo errore devo rimuovere e mettere una nuova virgola...

bool trailingstop()
{
se ((OrderMagicNumber()==11111)==vero)
{
Stampa("Mantenere la posizione di acquisto");
mentre(OrderCloseTime()==0)
{
se ((Bid-OrderStopLoss())>(StopLevel*Point))
{
se (OrderModify(OrderTicket(),OrderOpenPrice(),ND(Bid-StopLevel*Point),0,0))
Print("Stop Loss dell'ordine con il numero ",OrderTicket()," e il numero magico ",OrderMagicNumber()," cambiato con successo a ",OrderStopLoss());
else Print("Il livello di Stop Loss dell'ordine con il numero ",OrderTicket()," e il numero magico ",OrderMagicNumber(),". Errore ",GetLastError());
}
}
se (OrderCloseTime()>0)
{
Print("L'ordine con il numero ",OrderTicket()," e il numero magico ",OrderMagicNumber()," ha chiuso al prezzo ",OrderClosePrice()," con un profitto/perdita ",OrderProfit());
return(true);
}
}
else
{
se ((OrderMagicNumber()==22222)==vero)
{
Stampa((Posizione di vendita);
mentre(OrderCloseTime()==0)
{
se ((OrderStopLoss()-Ask)>(StopLevel*Point))
{
se (OrderModify(OrderTicket(),OrderOpenPrice(),ND(Ask+StopLevel*Point),0,0))
Print("Stop Loss dell'ordine con il numero ",OrderTicket()," e il numero magico ",OrderMagicNumber()," cambiato con successo a ",OrderStopLoss());
else Print("Il livello di Stop Loss dell'ordine con il numero ",OrderTicket()," e il numero magico ",OrderMagicNumber(),". Errore ",GetLastError());
}
}
se (OrderCloseTime()>0)
{
Print("L'ordine con il numero ",OrderTicket()," e il numero magico ",OrderMagicNumber()," ha chiuso al prezzo ",OrderClosePrice()," con un profitto/perdita ",OrderProfit());
return(true);
}
}
else return(false);
}
}