[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 434

 

Aide )

1. détection instantanée d'un ordre nouvellement ouvert (pas d'ordres en attente) (ouvert manuellement et ouvert à l'aide d'un EA) Si le système a détecté un ordre qui n'a pas été ouvert auparavant, il continue sous le numéro 2.

2. Toute tâche n'est exécutée qu'une seule fois, uniquement pour cette commande.

Après l'ouverture d'une autre commande, le système recommence à travailler du point 1 au point 2.

Pouvez-vous aider quelqu'un qui est novice en matière de programmation?

Aidez-moi, s'il vous plaît. Comment pouvons-nous faire cela ? J'identifie chaque nouvel ordre ouvert, avec la tâche suivante pendant 1-n temps, juste pour cet ordre, et ainsi de suite pour toujours, pour chaque ordre nouvellement ouvert.

Merci.

Il existe un schéma, mais il n'indexe pas les commandes .

//+------------------------------------------------------------------+
//| 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);
}

 

Bonjour à tous !

Pouvez-vous me dire pourquoi cet indicateur ne trace pas chaque barre, je dois le réarranger pour voir le graphique ?

//+------------------------------------------------------------------+
//|                                                Ср.отклонение.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);
  }
//+------------------------------------------------------------------+
Dossiers :
 
Roman.:
Les gars, pouvez-vous me dire comment remplacer dans Excel la division (reconnaissance par le prog) de la partie fractionnaire d'un nombre par une virgule à un point? Merci pour votre aide.


Panneau de configuration - Langues et normes régionales

Changez la norme en anglais, par exemple - le point-virgule devient un point.
Résoudre les problèmes de transfert de données - puis repasser à la norme

 
Roman.:
Les gars, pouvez-vous me dire comment remplacer dans Excel la division (reconnaissance par le prog) de la partie fractionnaire d'un nombre par une virgule à un point? Merci pour votre aide.

La deuxième option consiste à modifier le séparateur dans les paramètres d'Excel.
 
abolk:


Panneau de contrôle - Langues selon les normes régionales

Changez la norme en anglais, par exemple - la virgule devient un point.
Résoudre les problèmes de transfert de données - puis repasser à la norme


Merci.
 
sergeev:


la deuxième option consiste à modifier le séparateur dans le paramètre Excel lui-même.

Merci... Je l'ai déjà fait sur les conseils du président du club... :-))) Comment changer le séparateur dans les paramètres d'Excel lui-même - je ne l'ai pas trouvé.
 
Roman.:

excel - Je n'ai pas pu le trouver.
version d'excel ?
 
sergeev:
version d'excel ?


2003г
 
Roman.:

2003г

Service-Settings-International
 
sergeev:

Service-Settings-International

Yep, je l'ai, je l'ai. Merci. Je l'ai changé là aussi.