Fechamento das posições. No sinal indicador. - página 8

 
Lukyanov:

Lucro líquido 6157.73


Sergey, um lucro de US$ 6.000 em 6.000 a 9.000 transações.

1. O que é o MOJ?

2. 1.500 negócios por dia - que corretor pode resistir a isso?

 

Boa noite a todos! Houve outro problema. Por favor me diga se você sabe como escrever a expressão

hann = iCustom(.... .... ) para indicador

Pelo menos em sua forma mais básica - para definir o parâmetro Lb e o número de barras...

/+------------------------------------------------------------------+
//|                                                          SSL.mq4 |
//|                                                          Kalenzo |
//|                                      bartlomiej.gorski@gmail.com |
//+------------------------------------------------------------------+
#property copyright "Kalenzo"
#property link      "bartlomiej.gorski@gmail.com"
//----
#property indicator_buffers 1
#property indicator_color1 Blue
extern int Lb=10;
double ssl[],Hld,Hlv;
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexBuffer(0,ssl);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit() {   return(0);  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//----
   for(int i=Bars-Lb;i>=0;i--)     {
      if(Close[i]>iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_HIGH,i+1))
         Hld=1;
      else        {
         if(Close[i]<iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_LOW,i+1))
            Hld=-1;
         else
            Hld=0;
        }
      if(Hld!=0)
         Hlv=Hld;
      if(Hlv==-1)
         ssl[i]=iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_HIGH,i+1);
      else
         ssl[i]=iMA(Symbol(),0,Lb,0,MODE_SMA,PRICE_LOW,i+1);
     }
//----
   return(0);
  }
//+------------------------------------------------------------------+
Aqui está a tabela -
 
rid:

Boa noite a todos! Houve outro problema. Por favor, ajude, quem pode - escrever uma expressão

hann = iCustom(.... .... ) para indicador

iCustom( Symbol(), Period(), "SSL", indLb, 0, bar );
 

Obrigado, komposter.

 

Boa tarde. Por favor, informe.

Há um indicador Force-index instalado no mt4. É bipolar, com uma linha média em t.0.

Aqui está seu código.

#property copyright "Copyright © 2005, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
 
#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
//---- input parameters
extern int ExtForcePeriod=13;
extern int ExtForceMAMethod=0;
extern int ExtForceAppliedPrice=0;
//---- buffers
double ExtForceBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string sShortName;
   SetIndexBuffer(0, ExtForceBuffer);
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
//---- name for DataWindow and indicator subwindow label
   sShortName="Force("+ ExtForcePeriod+")";
   IndicatorShortName( sShortName);
   SetIndexLabel(0, sShortName);
//---- first values aren't drawn
   SetIndexDrawBegin(0, ExtForcePeriod);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Force Index indicator                                            |
//+------------------------------------------------------------------+
int start()
  {
   int nLimit;
   int nCountedBars=IndicatorCounted();
//---- insufficient data
   if(Bars<= ExtForcePeriod) return(0);
//---- last counted bar will be recounted
   if( nCountedBars> ExtForcePeriod) nCountedBars--;
   nLimit=Bars- nCountedBars;
//---- Force Index counted
   for(int i=0; i< nLimit; i++)
      ExtForceBuffer[ i]=Volume[ i]*
(iMA(NULL,0, ExtForcePeriod,0, ExtForceMAMethod, ExtForceAppliedPrice, i)-
iMA(NULL,0, ExtForcePeriod,0, ExtForceMAMethod, ExtForceAppliedPrice, i+1));
//---- done
   return(0);
  }


No entanto. Minha tarefa é desenhar o indicador em sua totalidade em zona positiva (ou negativa, não importa).

Para fazer isso de forma programática.

Isto é, não assim: força dupla=(iForce+10), mas programática!

Favor informar quem sabe o que acrescentar (inserir) ao código para este fim?

 
rid >> :

No entanto. Preciso que todo o indicador seja desenhado na zona mais (ou menos, o que quer que seja).

Por favor, me diga, quem sabe, o que devo acrescentar ao código para isto?

IMHO, embalagem sigmóide é o que você precisa. O buffer terá valores de 0 a 1.

for(int i=0; i< nLimit; i++)
      ExtForceBuffer[ i]=Volume[ i]*
(iMA(NULL,0, ExtForcePeriod,0, ExtForceMAMethod, ExtForceAppliedPrice, i)-
iMA(NULL,0, ExtForcePeriod,0, ExtForceMAMethod, ExtForceAppliedPrice, i+1));

//заменяем на 

for(int i=0; i< nLimit; i++)
{
         ExtForceBuffer[ i]=Volume[ i]*
   (iMA(NULL,0, ExtForcePeriod,0, ExtForceMAMethod, ExtForceAppliedPrice, i)-
   iMA(NULL,0, ExtForcePeriod,0, ExtForceMAMethod, ExtForceAppliedPrice, i+1));

   ExtForceBuffer[ i] = Sigmoid( ExtForceBuffer[ i]);
}

//...

double Sigmoid(double x)
{
   double value = MathExp( x);
   return ( value/(1 + value))
}
 

Obrigado, TheXpert! Vou tentar.

//gzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz.

Funcionou!

 

Boa tarde a todos. Quero fazer minha primeira EA, mas não sei como escrever o código. Os negócios são abertos no MA. Se o preço tocar o MA de cima, então compre. Se tocar abaixo, então é uma venda. A inclinação da MA deve ser considerada. A inclinação dos MA e a abertura da ordem devem ser unidirecionais. Obrigado.

 
Shu писал(а) >>

a pesquisa é fascinante! é até bom para o cérebro e para a experimentação. eu saúdo e respeito isso.

Todas as bicicletas e motos já foram (strikethrough) inventadas antes de nós - coloque todas as encomendas em sua própria matriz (talvez mais de uma) e faça as manipulações que quiser com ela. classificá-lo por qualquer critério, ou eliminá-lo (o bilhete é seu amigo), ou modificá-lo (é fácil fazer modificações de stoplosses/takeprofits, ou criar novos pedidos.

ps (mais uma coisa). se você decidir levar sua criação a sério, lembre-se que a qualquer segundo (milissegundo) a conexão com sua corretora pode se desconectar. A solução ideal é permitir ao consultor especializado ver a necessidade de fechar certas ordens (neste caso) após uma parada/parada de emergência e fechá-las.

Entretanto, a maioria dos "grails" vendidos publicamente sob a forma de P.C. - são semelhantemente de brinquedo...

Sobre as matrizes, eu realmente não entendo. Mas a segunda idéia - que se o especialista perder o sinal de fechamento, ele ainda será capaz de entender a necessidade do fechamento, eu gosto disso. Mas como fazer isso...

 

Boa tarde.

A EA coloca ordens de limite de bylimit após o movimento de preços à distância =Distância.

Preciso apagar os pedidos excessivos (mais distantes) à medida que o preço sobe.

Já o fiz. Mas por alguma razão, funciona de forma muito incorreta! O primeiro pedido é excluído normalmente. Então, pelo contrário, os mais próximos do preço são eliminados! Então eles param ou são apagados "do nada", e o registro gera o erro 4108 (bilhete desconhecido). Depois, por algum tempo, eles são apagados normalmente.

Acho que foi dito em algum lugar que é importante organizar corretamente a busca de pedidos.

//жжжжж Удаление лишних байлим ордеров жжжжжжжжж
if( NumberOfOrders(NULL,OP_BUYLIMIT, MAGIC)> КоличествоОрдеров  )  {
    //если ордеров больше заданного значения 
//for (int z = OrdersTotal() - 1; z >= 0; z -- )  {//перебираем с "конца"
  for ( int z=0;    z<OrdersTotal();        z++)  {//перебираем с начала         
  if (OrderSelect( z, SELECT_BY_TICKET, MODE_TRADES))          {//перебираем по тикету           
   if (OrderSymbol()==Symbol()&& OrderType() == OP_BUYLIMIT) {//выбираем байлимиты   
     if ( OrderOpenPrice() <(Ask-( КоличествоОрдеров* Дистанция)*Point) ) {
     //если расстояние от тек. цены больше заданного
   
   OrderDelete(OrderTicket(),Yellow);   //  return(0);    //удаляем самый дальний
            }}}}} 

No entanto. Independentemente de a recuperação do pedido ser feita "do final" ou do início. O resultado é incorreto.

O código parece ser o mais simples!

O que pode estar errado aqui? Por favor, avise!