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

 
Fez meu código, parece compilá-lo, mas será que vai funcionar?

int start()
{


//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов
{
OrderSend(Symbol(),OP_BUY,Ask,5,0,Ask+TakeProfit*Point,0);

}
if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов
{
OrderSend(Symbol(),OP_SELL,Ask,5,0,Ask+TakeProfit*Point,0);
}
//----
return(0);
}


OrderSend(Symbol(),OP_SELL,Ask,5,0,Ask+TakeProfit*Point,0);
Эту строку вытащил из другого эксперта. А что означают в ней цифры 5 и 0?
 
Você é irreparável, leia a ajuda, está tudo lá.
 
Eventualmente transformado em quê, é algo, mas não funciona...... :(
O que está errado?

//+------------------------------------------------------------------+
//|                                                Expert-000001.mq4 |
//|                                    Copyright © 2008, salesman*** |
//|                                         http://www.forexgrand.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, salesman***"
#property link      "http://www.forexgrand.ru"
extern int StopLoss=12;                         // Stop Loss
extern int TakeProfit=3;                        // Take Profit
extern int Percent=100;                         // Объем сделки в %
extern int Delta=30;                            // Сигнал приказа в пунктах
extern string _Comment = "Money-money-money";    // Комментарий к ордеру
extern int MagicNumber =55555;                  // Order ID
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{


//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов
{
OrderSend(Symbol(),OP_BUY,Ask,5,0,Ask*Point,0);

}
if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов
{
OrderSend(Symbol(),OP_SELL,Ask,5,0,Ask*Point,0);
}
//----
return(0);
}
//+------------------------------------------------------------------+
 
Embora o rosto no gráfico sorri...... não funcione. Experimentei-o no canil.
 

Função OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)

Parâmetros: símbolo - Nome do instrumento financeiro que está sendo negociado.

cmd - A operação comercial. Pode ser qualquer um dos valores da operação comercial.

volume - Número de lotes.

preço - Preço de abertura. slippage - Desvio de preço máximo permitido para ordens de mercado (ordens de compra ou venda).

Stoploss - O preço para fechar uma posição quando a perda é atingida (0 se não houver perda).

Takeprofit - O preço para fechar uma posição quando o nível de rentabilidade é alcançado (0 se não houver nível de rentabilidade).

comentário - Encomendar texto de comentário. A última parte do comentário pode ser alterada pelo servidor comercial.

mágica - O número mágico do pedido. Pode ser usado como um identificador definido pelo usuário.

expiração - Prazo de validade da ordem pendente.

arrow_color - Cor da seta de abertura na tabela. Se o parâmetro estiver faltando ou seu valor for CLR_NONE, a seta de abertura não é mostrada no gráfico.

Onde você o tem? - Você tem algum fragmento em vez de OrderSend


#property copyright "Copyright © 2008, salesman и группа лиц "
#property link      "http://www.forexgrand.ru"
extern int StopLoss=12;                         // Stop Loss
extern int TakeProfit=3;                        // Take Profit
extern int Percent=100;                         // Объем сделки в %
extern int Delta=30;                            // Сигнал приказа в пунктах
extern int MagicNumber =55555;                  // Order ID
int  ticket;
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"My order #",MagicNumber,0,Green);

 

E qual é o resultado do cálculo do Ask*Point aqui:

OrderSend(Symbol(),OP_SELL,Ask,5,0,Ask*Point,0);
???
 
Eu não tenho...... trabalhando por alguma razão.
Aqui está o código completo:
//+------------------------------------------------------------------+
//|                                                Expert-000001.mq4 |
//|                                    Copyright © 2008, salesman*** |
//|                                         http://www.forexgrand.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, salesman***"
#property link      "http://www.forexgrand.ru"
extern int StopLoss=12;                          // Stop Loss
extern int TakeProfit=3;                         // Take Profit
extern int Percent=70;                           // Объем сделки в %
extern int Slippage = 3;                         // Максимальное отклонение от запрошенной цены
extern int Delta=2;                              // Сигнал приказа в пунктах
extern string _Comment = "Money-money-money";    // Комментарий к ордеру
extern int MagicNumber =55555;                   // Order ID
int  ticket;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{


//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов
{
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"My order #",MagicNumber,0,Green);

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


Para um teste rápido, eu defino Delta=2

externo int Delta=2;


Talvez você possa implementar isto para entender os erros:

//+------------------------------------------------------------------+
bool IsCondition()
  {
   bool result=true;
   string field="     ";
   string msg;
   string title="Ошибка"; if (AccountNumber()>0)title=AccountNumber()+": "+title;
   if (!IsConnected())
     {
      msg=msg+"Связь с сервером отсутствует"+field;
      result=false;
     }
   if (!IsTradeAllowed())
     {
      if (!result) msg=msg+"\n";
      msg=msg+"Торговля запрещена"+field;
      result=false;
     }
   if (!result) MessageBox(msg,title,MB_OK|MB_ICONERROR);
   return(result);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ShowError()
  {
   string description;
   int err=GetLastError();
   switch(err)
     {
      case   0: return;
      case   1: description="Нет ошибки, но результат неизвестен"; break;
      case   2: description="Общая ошибка"; break;
      case   3: description="Неправильные параметры"; break;
      case   4: description="Торговый сервер занят"; break;
      case   5: description="Старая версия клиентского терминала"; break;
      case   6: description="Нет связи с торговым сервером"; break;
      case   7: description="Недостаточно прав"; break;
      case   8: description="Слишком частые запросы"; break;
      case   9: description="Недопустимая операция нарушающая функционирование сервера"; break;
      case  64: description="Счет заблокирован"; break;
      case  65: description="Неправильный номер счета"; break;
      case 128: description="Истек срок ожидания совершения сделки"; break;
      case 129: description="Неправильная цена"; break;
      case 130: description="Неправильные стопы"; break;
      case 131: description="Неправильный объем"; break;
      case 132: description="Рынок закрыт"; break;
      case 133: description="Торговля запрещена"; break;
      case 134: description="Недостаточно денег для совершения операции"; break;
      case 135: description="Цена изменилась"; break;
      case 136: description="Нет цен"; break;
      case 137: description="Брокер занят"; break;
      case 138: description="Новые цены"; break;
      case 139: description="Ордер заблокирован и уже обрабатывается"; break;
      case 140: description="Разрешена только покупка"; break;
      case 141: description="Слишком много запросов"; break;
      case 145: description="Модификация запрещена, так как ордер слишком близок к рынку"; break;
      case 146: description="Подсистема торговли занята"; break;
      case 147: description="Использование даты истечения ордера запрещено брокером"; break;
      default : description="Неизвестная ошибка"; break;
     }
   string field="     ";
   string msg="Ошибка #"+err+" "+description+field;
   string title="Ошибка"; if (AccountNumber()>0)title=AccountNumber()+": "+title;
   MessageBox(msg,title,MB_OK|MB_ICONERROR);
  }
// End
//+------------------------------------------------------------------+
 
salesman77:
Não está funcionando para mim por alguma razão......
Aqui está o código completo:
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов
{
ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"My order #",MagicNumber,0,Green);

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


Na verdade, os pedidos de compra e venda são redigidos de forma ligeiramente diferente. Porque compramos a preço de pedido e vendemos a preço de licitação ! E fechar por paradas também... Com você - tudo pelo mesmo preço ...
Além disso, o lote=1 é destinado a funcionar aqui. O seu depósito corresponde a este tamanho? E o que diz o tronco - por que não está funcionando?
 

Você não sabe a diferença entre Bid e Ask, você não entende a diferença entre uma posição curta e uma posição longa. Você não tem idéia do que é um Stop Loss and Take Profit. Você não entende o que você já escreveu. Você está tentando codificar por intuição. Quem pode lhe ajudar???? Aprenda o básico. Todas as perguntas foram respondidas. Não vejo a utilidade de citar um livro didático.

 
salesman77:
Não está funcionando para mim por alguma razão......
Para um teste rápido, eu defino Delta=2

externo int Delta=2;


Para quê? Você sabe como usar um testador?

Eu conheci um cara uma vez. Ele estava negociando forex há um ano e ainda pensava que uma posição longa era aquela que permanecia no mercado por um longo tempo. E uma posição curta é aquela que é, tipo, uma posição de pipsqueak.

O que você acha?