Um assessor que seguiria a tarifa em um gráfico de cinco minutos com condições após o lançamento: - página 5
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
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); }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); } //+------------------------------------------------------------------+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
E qual é o resultado do cálculo do Ask*Point aqui:
???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=2externo 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 //+------------------------------------------------------------------+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.
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?