[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 434

 

Aiuto )

1. Rilevamento istantaneo di un ordine appena aperto (non ordini pendenti) (aperto manualmente e aperto con l'aiuto di un EA) Se il sistema ha rilevato un ordine che non è stato aperto in precedenza, allora continua con il numero 2.

2. Ogni compito viene eseguito solo una volta, solo per questo ordine.

Dopo l'apertura di un altro ordine, il sistema riprende a lavorare dal punto 1 al punto 2.

Puoi aiutare qualcuno che è nuovo nella programmazione?

Per favore, aiutatemi. Come possiamo farlo? Identifico ogni nuovo ordine aperto, con il successivo compito per 1-n volte, solo per questo ordine, e così via all'infinito, per ogni nuovo ordine aperto.

Grazie.

C'è uno schema, ma non indicizza gli ordini.

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{


//----

for (int k=OrdersTotal()-1;k>=0;k--)//Начинаем перебор всех открытых ордеров начиная с конца
{
RefreshRates();//Обновляем котировки, необходимо при модификации или закрытии ордеров
if (OrderSelect(k,SELECT_BY_POS,MODE_TRADES)==true&&OrderSymbol()==Symbol())//Выбираем ордер с номером из цикла, и проверяем, совпадает ли символ ордера с текущим
{
int cmd=OrderType();//В переменной cmd будем хранить тип ордера
if(cmd>1)//Нас интересуют только отложенные ордеры
{
//Что-то делаем
}
if (cmd==OP_BUY)//А вдруг на покупку ордер?
{
Alert (GetLastError());
}
if (cmd==OP_SELL)//Или на продажу?
{
Alert (GetLastError());
}
}
}
//----
return(0);
}

 

Ciao a tutti!

Potete dirmi perché questo indicatore non traccia ogni barra, devo riorganizzarlo per vedere il grafico?

//+------------------------------------------------------------------+
//|                                                Ср.отклонение.mq4 |
//|                                                Copyright © 2011. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property  copyright "Copyright © 2011, Dimon"
#property  link      "todem5@gmail.com"
//---- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 1
#property  indicator_color1  Lime
#property  indicator_level1  100
#property  indicator_style1  1
#property  indicator_level2  20
#property  indicator_style2  1
//#property  indicator_color2  Red
#property  indicator_width1  2
//---- indicator parameters
//---- indicator buffers
extern int period=24;
double     MacdBuffer[];
double     SignalBuffer[];
int tf, k;
string S;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   tf=Period();
   S=Symbol();
//---- drawing settings
   SetIndexStyle(0,DRAW_LINE);
   //SetIndexStyle(1,DRAW_LINE);
   
   IndicatorDigits(Digits+1);
//---- indicator buffers mapping
   SetIndexBuffer(0,MacdBuffer);
   //SetIndexBuffer(1,SignalBuffer);
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName("Ср.отклонение.: "+period+", в %: ");
   SetIndexLabel(0,"MACD");
   //SetIndexLabel(1,"Signal");
//---- initialization done
      
   return(0);
  }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
int start()
  {
   if (!IsOptimization() && !IsTesting() && !IsVisualMode()) {
   k=WindowFind("Ср.отклонение.: "+period+", в %: ");
   ObjectDelete("OrdCr2");
   ObjectCreate("OrdCr2", OBJ_LABEL, k, 0, 0);
   ObjectSet("OrdCr2", OBJPROP_CORNER, 2);
   ObjectSet("OrdCr2", OBJPROP_XDISTANCE, 5);
   ObjectSet("OrdCr2", OBJPROP_YDISTANCE, 22);
   ObjectSet("OrdCr2", OBJPROP_COLOR, Red);
   ObjectSetText("OrdCr2", "Ср.откл.1", 10, "Arial Black", Moccasin);
   }      
   double sum, f;
   int limit;
   int P;
   if (Digits==5) {P=100000;}
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
   for(int i=0; i<limit-period; i++){
      sum=0;
      for (int k=i+1;k<=i+period;k++){
      if (iHigh(Symbol(),tf,k)>iLow(Symbol(),tf,k)) {f=(iHigh(Symbol(),tf,k)-iLow(Symbol(),tf,k));}
      if (iHigh(Symbol(),tf,k)<iLow(Symbol(),tf,k)) {f=(iLow(Symbol(),tf,k)-iHigh(Symbol(),tf,k));}
      sum=sum+(f*P);
      }   
      MacdBuffer[i]=sum/24; 
      }
   
   return(0);
  }
//+------------------------------------------------------------------+
File:
 
Roman.:
Ragazzi, potete dirmi come sostituire in Excel la divisione (riconoscimento dal prog) della parte frazionaria di un numero con una virgola a un punto? Grazie per il vostro aiuto.


Pannello di controllo - Lingue e standard regionali

Cambia lo standard in inglese, per esempio - il punto e virgola diventa un punto fermo.
Risolvere i problemi di trasferimento dei dati - poi tornare allo standard

 
Roman.:
Ragazzi, potete dirmi come sostituire in Excel la divisione (riconoscimento dal prog) della parte frazionaria di un numero con una virgola a un punto? Grazie per l'aiuto.

La seconda opzione è cambiare il separatore nelle impostazioni di Excel
 
abolk:


Pannello di controllo - Lingue secondo gli standard regionali

Cambia lo standard in inglese ad esempio - la virgola diventa un punto.
Risolvere i problemi di trasferimento dei dati - poi tornare allo standard


Grazie
 
sergeev:


la seconda opzione è cambiare il separatore nell'impostazione di Excel stesso

Grazie... L'ho già fatto su consiglio del presidente del club... :-))) Come cambiare il separatore nelle impostazioni di excel stesso - non l'ho trovato.
 
Roman.:

excel - Non sono riuscito a trovarlo.
versione di excel?
 
sergeev:
versione di excel?


2003г
 
Roman.:

2003г

Service-Settings-International
 
sergeev:

Service-Settings-International

Sì, capito, capito. Grazie. L'ho cambiato anche lì.