Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 425

 
Tapochun:
Dovete aggiungere la vostra enumerazione al codice.

Posso avere un esempio di codice?

extern string Variant                = "One, Two, Three";

Cosa devo aggiungere per renderlo così?


 
Tapochun:
Codice di errore?


130 lo stop loss non cambia
 
Sergei Konoplev:

Posso avere un esempio di codice?

Cosa devo aggiungere per renderlo così?

// На глобальном уровне
enum MY_ENUM
{
 ONE,    // One
 TWO,    // Two
 THREE   // Three
};

input MY_ENUM Variant = ONE;
 
Leanid Aladzyeu:

stoplevel non è una buona opzione per calcolare lo stop, specialmente perché int

130:    "Слишком близкие стопы или неправильно рассчитанные или ненормализованные цены в стопах (или в цене открытия отложенного ордера)."

è più facile essere specifici

provare:

double CALC_SL=25;//величина стоп-лосса в пунктах
double severs_min_stop = CALC_SL*MarketInfo(symbol,MODE_POINT);
 
Leanid Aladzyeu:
Durante l'offerta, staccate la fermata precedente, la fermata ricevuta, ecc.
 
Leanid Aladzyeu:

Dov'è l'errore?

//+------------------------------------------------------------------+
   double CorrectStopLoss(string sy,int op,double price_set,double stop_loss) {
      if(stop_loss==0) return(0);
      double pt=SymbolInfoDouble(sy,SYMBOL_POINT);
      double price=(op==OP_BUY)?SymbolInfoDouble(sy,SYMBOL_BID):(op==OP_SELL)?SymbolInfoDouble(sy,SYMBOL_ASK):price_set;
      int lv=StopLevel(sy), dg=(int)SymbolInfoInteger(sy,SYMBOL_DIGITS);
      if(op==OP_BUY || op==OP_BUYLIMIT || op==OP_BUYSTOP) return(NormalizeDouble(fmin(price-(lv+1)*pt,stop_loss),dg));
      else return(NormalizeDouble(fmax(price+(lv+1)*pt,stop_loss),dg));
   }
//+------------------------------------------------------------------+
   double CorrectStopLoss(string sy,int op,double price_set,int stop_loss) {
      if(stop_loss==0) return(0);
      double pt=SymbolInfoDouble(sy,SYMBOL_POINT);
      double price=(op==OP_BUY)?SymbolInfoDouble(sy,SYMBOL_BID):(op==OP_SELL)?SymbolInfoDouble(sy,SYMBOL_ASK):price_set;
      int lv=StopLevel(sy), dg=(int)SymbolInfoInteger(sy,SYMBOL_DIGITS);
      if(op==OP_BUY || op==OP_BUYLIMIT || op==OP_BUYSTOP) return(NormalizeDouble(fmin(price-(lv+1)*pt,price-stop_loss*pt),dg));
      else return(NormalizeDouble(fmax(price+(lv+1)*pt,price+stop_loss*pt),dg));
   }
//+------------------------------------------------------------------+
   double CorrectTakeProfit(string sy,int op,double price_set,double take_profit) {
      if(take_profit==0) return(0);
      double pt=SymbolInfoDouble(sy,SYMBOL_POINT);
      double price=(op==OP_BUY)?SymbolInfoDouble(sy,SYMBOL_BID):(op==OP_SELL)?SymbolInfoDouble(sy,SYMBOL_ASK):price_set;
      int lv=StopLevel(sy), dg=(int)SymbolInfoInteger(sy,SYMBOL_DIGITS);
      if(op==OP_BUY || op==OP_BUYLIMIT || op==OP_BUYSTOP) return(NormalizeDouble(fmax(price+(lv+1)*pt,take_profit),dg));
      else return(NormalizeDouble(fmin(price-(lv+1)*pt,take_profit),dg));
   }
//+------------------------------------------------------------------+
   double CorrectTakeProfit(string sy,int op,double price_set,int take_profit) {
      if(take_profit==0) return(0);
      double pt=SymbolInfoDouble(sy,SYMBOL_POINT);
      double price=(op==OP_BUY)?SymbolInfoDouble(sy,SYMBOL_BID):(op==OP_SELL)?SymbolInfoDouble(sy,SYMBOL_ASK):price_set;
      int lv=StopLevel(sy), dg=(int)SymbolInfoInteger(sy,SYMBOL_DIGITS);
      if(op==OP_BUY || op==OP_BUYLIMIT || op==OP_BUYSTOP) return(NormalizeDouble(fmax(price+(lv+1)*pt,price+take_profit*pt),dg));
      else return(NormalizeDouble(fmin(price-(lv+1)*pt,price-take_profit*pt),dg));
   }
//+------------------------------------------------------------------+
   int StopLevel(string sy) {
      int sp=(int)SymbolInfoInteger(sy,SYMBOL_SPREAD);
      int lv=(int)SymbolInfoInteger(sy,SYMBOL_TRADE_STOPS_LEVEL);
      return((lv==0)?sp*2:lv);
      }
//+------------------------------------------------------------------+
 

Io equalizzo gli StoPlus in Inite (è più facile, anche se non più affidabile)

Come si ottiene il valore dell'indicatore Zigzag? Non l'ho trovato nell'aiuto.

 
Leanid Aladzyeu:

Io equalizzo gli StoPlus in Inite (è più facile, anche se non più affidabile)

Come si ottiene il valore dell'indicatore Zigzag? Non l'ho trovato nell'aiuto.

Via iCustom.
 
new-renaif(prevTime!=iTime(Symbol(),PERIOD_M5,0,0))

Ho avuto molti problemi - hanno scritto uno zero in più nella funzione.

Ora lo proverò - grazie.

 
Tapochun:
Invece di 0, sostituite OrdersHistoryTotal()-1
Grazie mille!