[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 434

 

Ajuda )

1.Detecção instantânea de uma ordem recém aberta (sem ordens pendentes) (aberta manualmente e aberta com a ajuda de uma EA) Se o sistema detectou uma ordem que não foi aberta antes, então ela continua sob o número 2.

2. Qualquer tarefa é executada apenas uma vez, apenas para esta ordem.

Após mais um pedido ter sido aberto, o sistema começa a funcionar do ponto 1 ao ponto 2 novamente.

Você pode ajudar alguém que é novo em programação?

Por favor, ajude. Como podemos fazer isso? Eu identifico cada nova ordem aberta, com a tarefa subseqüente por 1-n tempo, apenas para esta ordem, e assim por diante, para cada ordem recém-aberta.

Obrigado.

Há um esboço, mas ele não indexa as ordens .

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

 

Olá a todos!

Você pode me dizer por que este indicador não traça todas as barras, eu tenho que reorganizá-lo para ver o gráfico?

//+------------------------------------------------------------------+
//|                                                Ср.отклонение.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);
  }
//+------------------------------------------------------------------+
Arquivos anexados:
 
Roman.:
Pessoal, vocês podem me dizer como substituir no Excel a divisão (reconhecimento pelo prog) da parte fracionária de um número por uma vírgula para um ponto? Obrigado por sua ajuda.


Painel de Controle - Idiomas e Normas Regionais

Mude o padrão para o inglês, por exemplo - o ponto-e-vírgula se torna uma parada completa.
Resolver problemas de transferência de dados - depois mudar de volta ao padrão

 
Roman.:
Pessoal, vocês podem me dizer como substituir no Excel a divisão (reconhecimento pelo prog) da parte fracionária de um número por uma vírgula para um ponto? Obrigado pela ajuda.

A segunda opção é mudar o separador nas configurações do Excel
 
abolk:


Painel de controle - Idiomas de acordo com padrões regionais

Mude o padrão para, por exemplo, inglês - a vírgula se torna uma parada completa.
Resolver problemas de transferência de dados - depois mudar de volta ao padrão


Obrigado
 
sergeev:


a segunda opção é mudar o separador na própria configuração do Excel

Obrigado... Já o fiz com o conselho do Presidente do Clube. :-))) Como mudar o separador nos próprios ambientes de excelência - ainda não o encontrei.
 
Roman.:

excel - não consegui encontrá-lo.
versão do excel?
 
sergeev:
versão do excel?


2003г
 
Roman.:

2003г

Service-Settings-International
 
sergeev:

Service-Settings-International

Sim, entendi, entendi. Obrigado. Mudou também ali.