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

 
PariaH:

Por favor, me diga como abrir um novo pedido se um Stop Loss ou TP for acionado. De preferência um código! Muito obrigado de antemão!!!

Abra qualquer código de um EA a partir de https://www.mql5.com/ru/code

ou abrir o código do Expert Advisor que vem com o MT4, por exemplo, Moving Average.mq4.

Ali, se você olhar com cuidado, verá como é feito.

Depois disso, você poderá conversar.

 

Ali, se você olhar com cuidado, verá como é feito.

Depois disso, você pode conversar.

Essa não é exatamente a resposta que eu esperava... Eu quero um exemplo concreto, não o código completo do programa.

 
alexhammer:

Eu esbocei um novo EA hoje, estou escrevendo-o para mim mesmo, mas se ficar bem, vou compartilhá-lo com vocês mais tarde.

Gostaria de sua opinião sobre o que mais acrescentar a ela. O mais importante é acrescentar algumas opções para as paradas de rastreamento e para exibir visualmente seus movimentos. Que outros pedidos haverá?

Tem bom aspecto :).

Pelo menos, quero ensinar ao meu Conselheiro Especialista a não perder o depósito.

Uma boa EA não é garantia de uma boa vida.

 
PariaH:

Ali, se você olhar com cuidado, verá como é feito.

Depois disso, você pode conversar.

Essa não é exatamente a resposta que eu esperava... Preciso de um exemplo concreto, não do código completo do programa.

//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   double ma;
   int    res;
//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average 
   ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---- sell conditions
   if(Open[1]>ma && Close[1]<ma)  
     {
      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
      return;
     }
//---- buy conditions
   if(Open[1]<ma && Close[1]>ma)  
     {
      res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);
      return;
     }
//----
  }
Isto faz parte do código EA fornecido com o MT4.
 
coronel:

Ensine um EA pelo menos a não perder um depósito.

Uma bela EA não é garantia de uma bela vida.


Não me dê lições sobre EAs! Isto não é uma EA comercial, se você não entender. E na tela está uma conta demo com ordens especialmente abertas para testar o desempenho desta EA.
 
alexhammer:

Não me dê lições sobre EAs! Este não é um Expert Advisor comercial se você não entender. E na tela está uma conta demo com pedidos especialmente abertos para testar o trabalho desta EA.

Por favor, me perdoe se meu posto soou preachudo.

Eu estava apenas expressando meu ponto de vista a respeito do autotrading.

 
Vamos lá, Paz! :) Eu estava apenas esperando por algumas idéias e desejos, não estou apenas tentando fazer isso por mim mesmo.
 
alexhammer:
Vamos lá, o mundo! :) Eu estava apenas esperando para ouvir algumas idéias, desejos, não apenas para mim mesmo, porque estou tentando.

Há toneladas de idéias neste site, mas eu não conheço ninguém que ganhe a vida como auto-comerciante.

 
coronel:
Isto faz parte do código EA fornecido com o MT4.


SPY... Mas não é isso novamente :) o problema é que não uso indicadores... Eu só preciso abrir um novo pedido se um STOP ou PREF for acionado! Como isso pode ser implementado de outra forma...

aqui está parte do código.... mas não funciona ....

for(int i=1; i<=OrdersTotal(); i++) // ???? ???????? ?????

{

if(OrderSelect(i-1,SELECT_BY_POS)==verdadeiro)

{

double SL=OrderStopLoss();

double TP=OrderTakeProfit(); // TP ?????????? ???.

double Price =OrderOpenPrice();

{

if(SL >= Price)

{

OrderSend(Symbol(), OP_BUY, lots,Ask, 3, Ask - stop_loss * Point, Bid + take_profit * Point, IDENT, MAGIC, 0, Green);

}

}

Alert(i);

}

}

 
PariaH:


SPS... Mas não é isso novamente :) o problema é que não uso indicadores... Só preciso abrir uma nova ordem se ela acionar STOP ou PREF! Como isso pode ser implementado de outra forma...

aqui está uma parte do código.... mas não funciona ....


Ainda a mesma peça de código, mas sem o indicador:

int start()
  {
   int    res;
//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- 
   if(OrdersTotal()==0)//если нет открытых ордеров
     { 
      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);// открыть SELL
 //     res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue); //открыть BUY
     }
//----
 return(0);}