Um assessor que seguiria a tarifa em um gráfico de cinco minutos com condições após o lançamento: - página 7

 
int start()
{
if(OrdersTotal() !=0) return;

//........
if (iOpen(NULL,5,0)-Bid>Delta*Point) //O preço caiu mais do que os pontos Delta



 
zhuki:
if(OrdersTotal ()!=0) retorna;

E as ordens de outras pessoas (para outros símbolos e mágicos)? No testador, vai funcionar, mas se houver algo mais na conta além desta EA, a forma correta é a seguinte

bool NmbrOfOpened(int Magic){
 
   int  _OrdersTotal=OrdersTotal();
 
   if (_OrdersTotal>0) {
       for (int i=0; i<_OrdersTotal; i++) {    
         OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
         if (OrderMagicNumber()==Magic && OrderSymbol()==Symbol()) {
            return(true);  break; 
         }
       }
   }
   else return(false); 
 return(false);
}

A função retornará falsa se não houver nenhuma posição aberta pelo símbolo atual com o mágico especificado (passado a ele).

 
Você vai enganar o cara, e ele não pode ler as descrições.
Imagine como ele ficará confuso, é por isso que o escrevi de tal forma que ele o entenderia melhor.
 
Muito bem, estou pegando o jeito :))
Ambos os casos foram apanhados, muito obrigado.
 
Somente com o Expert Advisor eu ainda não entendo como funciona a função Delta
Os negócios não são acionados sob minhas condições
Delta=30
Significa que eu quero que meu Expert Advisor abra posição +-30 em pips. Mas abre a 5-10 pips para cima e para baixo, não está claro....
 
A função Delta realmente não sabe como funciona :(
Talvez existam outras soluções simples...
Encontrei uma função
Distância=30 // Distância do preço atual ao preço do pedido pendente
Pode ser implementada não apenas para pedidos pendentes?
A idéia é a mesma: manter o controle da barra atual, seu preço aberto e se durante uma barra de 5 minutos seu preço aumentar ou diminuir em, digamos, 30 pips do mercado aberto daquela barra de 5 minutos, só então abrir uma posição......
Minha estratégia não funciona com pedidos pendentes.....

 

E você afixaria aqui todo o seu código. E veja porque a Delta não funciona...

 
//+------------------------------------------------------------------+
//|                                                Expert-000001.mq4 |
//|                                    Copyright © 2008, salesman*** |
//|                                         http://www.forexgrand.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, salesman***"
#property link      "http://www.forexgrand.ru"
#include <WinUser32.mqh>
#include <stdlib.mqh>
extern double StopLoss=30;                        // Stop Loss
extern double TakeProfit=3;                       // Take Profit
extern double Lots=0.5;                           // Объем сделки в %
extern double Slippage =3;                        // Максимальное отклонение от запрошенной цены
extern double MagicNumber=0;                      // Order ID
int  ticket;
int Delta=30;                                     // Сигнал приказа в пунктах
int TimeForSleep = 10;                            // Время для отдыха после сделки

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
if(OrdersTotal()!=0)  return; //Выполнять только одну сделку.

//----
if (iOpen(NULL,0,0)-Ask>=Delta*Point) //Цена упала больше или = Delta пунктов
//Null-тек инструмент, 0-тек.график, 0-слежка за тек баром
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил",MagicNumber,11111,Green);

}
if (iOpen(NULL,0,0)-Bid<=Delta*Point) //Цена выросла больше или = Delta пунктов
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Продал",MagicNumber,22222,Green);
}
//----
return(0);
}




//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

Aqui está o código inteiro.....
 

Sim, de fato. Delta.... não funciona

Aparentemente, aqui é necessário com sinais (polaridade) de um Delta entender na compra e na venda, "para" no código acima, por exemplo, no valor de compra(iOpen(NULL,0,0)-Ask todo o tempo será negativo. E o comércio é aberto ao preço aberto da barra (iOpen(NULL,0,0)-Ask>=Delta...

Se você tentar desta forma (comprar) -

if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла на больше или = Delta пунктов
 
ou seja, eventualmente precisamos de testar esta variante:

int start()
{
if(OrdersTotal()!=0) return; //Follow only one trade.

//

if (Bid - iOpen(NULL,0,0)<=Delta*Point) // O preço caiu menos ou = pontos Delta
//Null-tek instrumento, 0-tek.chart, 0-tracking tek bar {
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Buy",MagicNumber,11111,Green);

}
if (Ask - iOpen(NULL,0,0)>=Delta*Point) //O preço aumentou mais ou = pontos Delta
{
ticket=OrderSend(Symbol(),OP_SELLL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,22222,Green);
}
//
return(0);
}
Estou adivinhando corretamente ou confundi Ask com Bid nas linhas:
if (Bid - iOpen(NULL,0,0)<=Delta*Point) //Цена упала на меньше или = Delta пунктов

if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла на больше или = Delta пунктов
Razão: