[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 71

 
DhP:
O MagicNumber não muda neste caso, a menos que isso seja fornecido pelo código EA.

Obrigado a todos vocês!
 
Roman.:


Solução:

Para comprar (vender - por analogia):

1. fratura de MA - obter valores de MA nas barras 3, 2 e 1 - comparar. Se os valores de MA nas barras 3>2 e 2<1, é uma pausa.

2. então - fractal - penetração - um sinal para fazer um acordo

No que diz respeito à enumeração do MA - colocá-lo em variáveis externas (otimizáveis):

Período_MA (você pode definir de 2 a 240 com o passo 2), MODE - (método de cálculo de MA - intervalo de mudanças de 0 a 3 passo 1), PRICE_TYPE - (constante de preço - intervalo de mudanças de 0 a 6 passo 1), ouvi dizer que quando se trabalha dentro do dia MA conta com os valores médios (preço de fechamento não é importante), quando se trabalha no dia velas MA conta com os preços de fechamento dos dias.

PERÍODO - você muda manualmente com cada otimização subseqüente - 1,5,15,30,60,240...

Pressione F1 no iMA - leia tudo novamente com atenção.

E, claro, TP e Stop Loss serão otimizados como de costume.

P.S. Não se esqueça de escrever uma informação sobre os resultados dos testes... :-)))

Os resultados dos testes para TF=1 min não produziram variantes lucrativas, mesmo se otimizarmos a EA uma vez por dia.
 
DhP:
Quando uma posição é parcialmente fechada, você pode mudar o magik. Tenho certeza de que você pode escrever isto facilmente.

Você provavelmente tem conhecimento que não está disponível para a comunidade mql ou simplesmente não entende a pergunta ou está ingenuamente iludido que a função OrderClose muda o magik.

 
gince:

Entendo que não tenho uma bandeira inicial [i+1] definida. Em caso afirmativo, onde e como o faço ?

Se eu definir 1, então quando eu iniciar o indicador, ele (o indicador) irá esperar pela mudança.

A maneira correta de fazer isso é esta:

if ((flag[i]==1 || flag[i]==0) && условие продажи)
com a condição de bandeira não inicializada =0 (ou tomar EMPTY_VALUE....)
 
sergeev:

a coisa certa a fazer é isto:

Com a condição de que a bandeira não inicializada =0 (ou tomar EMPTY_VALUE....)

Obrigado a todos vocês. Eu fiz o que queria fazer.

 
volshebnik:
Os resultados dos testes na TF=1 min não renderam opções lucrativas, mesmo se você otimizar a EA uma vez por dia.

Quanto mais baixo o TF, mais alto o ruído.
 
Roman.:

Quanto mais baixo o TF, mais alto o ruído.
Sim, mas se a estratégia estiver correta, deve, me parece, funcionar em qualquer TF, apenas com parâmetros diferentes. Os resultados dos testes na TF=5 min também não deram opções lucrativas.
 
volshebnik:
Sim, mas se a estratégia estiver correta, deve, me parece, funcionar em qualquer TF, apenas com parâmetros diferentes. O resultado dos testes na TF=5 min também não deu nenhuma opção lucrativa.

A estratégia é correta ali. Estou bêbado agora. Estou descansando.
 
sergeev:

você ainda tem um erro em seu código.

Lembre-se: Paradas e aquisições em pedidos pendentes não se baseiam no preço atual, mas no preço de abertura do pedido.



Agradecimentos especiais e respeito a você :)))))

Erros corrigidos (espero que todos eles agora :)) ) + limitadores adicionados. Será muito útil para aqueles que realmente precisam atribuir um número mágico para fazer pedidos.

Aproveite!

#property copyright "Copyright © 2010 - 2011, Хлыстов Владимир, в редакции AMRo"
#property link      "cmillion@narod.ru, nemo811@mail.ru"
#property show_inputs
/*
Иногда требуется помочь советнику добавить ордер, но чтобы советник его принял за свой
необходим Magic номер. Для выставления ордера с таким номером и предназначен этот скрипт.
Возможна одновременная установка до 6 типов ордеров. При сбоях связи или резком движении цены
будет выполнено 10 попыток выставления ордера, после чего скрипт закончит работу.
*/
//--------------------------------------------------------------------
extern int     Magic       = 0;        //уникальный номер ордера
extern bool    BUY         = false;    //открыть ордер BUY
extern bool    BUY_STOP    = false;    //поставить ордер BUY STOP
extern bool    BUY_LIMIT   = false;    //поставить ордер BUY LIMIT
extern bool    SELL        = false;    //открыть ордер SELL
extern bool    SELL_STOP   = false;    //поставить ордер SELL STOP
extern bool    SELL_LIMIT  = false;    //поставить ордер SELL LIMIT
extern double  Lot         = 0.1;      //объем ордера
extern int     takeprofit  = 0;        //уровень выставления TP, если 0, то TP не выставляется
extern int     stoploss    = 0;        //уровень выставления SL, если 0, то SL не выставляется
extern int     DistanceSet = 40;       //расстояние от рынка для отложенника
extern int     slippage    = 3;        //максимально допустимое отклонение цены для рыночных ордеров
//--------------------------------------------------------------------
double SL,TP;
//--------------------------------------------------------------------
int start()
{
   if (BUY)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy");
   }
   if (SELL)
   {  
      if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL = NormalizeDouble(Bid + stoploss*Point,Digits);  else SL=0;              
      OPENORDER ("Sell");
   }
   if (BUY_STOP)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + DistanceSet*Point + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask + DistanceSet*Point - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy Stop");
   }
   if (SELL_STOP)
   {  
      if (takeprofit!=0) TP = NormalizeDouble(Bid - DistanceSet*Point - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL = NormalizeDouble(Bid - DistanceSet*Point + stoploss*Point,Digits);  else SL=0;              
      OPENORDER ("Sell Stop");
   }
   if (BUY_LIMIT)
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask - DistanceSet*Point + takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - DistanceSet*Point - stoploss*Point,Digits); else SL=0;     
      OPENORDER ("Buy Limit");
   }
   if (SELL_LIMIT)
   {  
      if (takeprofit!=0) TP = NormalizeDouble(Bid + DistanceSet*Point - takeprofit*Point,Digits); else TP=0;
      if (stoploss!=0)   SL = NormalizeDouble(Bid + DistanceSet*Point + stoploss*Point,Digits);  else SL=0;              
      OPENORDER ("Sell Limit");
   }
return(0);
}
//--------------------------------------------------------------------
void OPENORDER(string ord)
{
   int error,err;
   while (true)
   {  error=true;
      if (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Buy Stop" ) error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Sell Stop") error=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Buy Limit" ) error=OrderSend(Symbol(),OP_BUYLIMIT, Lot,NormalizeDouble(Ask - DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (ord=="Sell Limit") error=OrderSend(Symbol(),OP_SELLLIMIT,Lot,NormalizeDouble(Bid + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
      if (error==-1) //неудачная попытка
      {  
         ShowERROR();
         err++;Sleep(2000);RefreshRates();
      }
      if (error || err >10) return;
   }
return;
}                  
//--------------------------------------------------------------------
void ShowERROR()
{
   int err=GetLastError();
   switch ( err )
   {                  
      case 1:   return;
      case 2:   Alert("Нет связи с торговым сервером ",Symbol());return;
      case 3:   Alert("Error неправильные параметры ",Symbol());return;
      case 130: Alert("Error близкие стопы   Ticket ",Symbol());return;
      case 134: Alert("Недостаточно денег   ",Symbol());return;
      case 146: Alert("Error Подсистема торговли занята ",Symbol());return;
      case 129: Alert("Error Неправильная цена ",Symbol());return;
      case 131: Alert("Error Неправильный объем ",Symbol());return;
      case 4200:Alert("Error Объект уже существует ",Symbol());return;
      default:  Alert("Error  " ,err," ",Symbol());return;
   }
}
//--------------------------------------------------------------------
 
Roman.:

há o tipo certo de paixão. Estou pedrado como um papagaio neste momento. Estou descansando.
O mesmo na TF = 15 min. Ainda não se vê nenhuma "fidelidade" nesta estratégia, pode ainda aparecer à frente. (Tenha um bom descanso))