KARAUL!!! AJUDA. 4 horas e 45 minutos para ir!!!
A estrutura MqlTradeRequest deve ser limpa antes de utilizar
//+------------------------------------------------------------------+ //| Cempionat2012.mq5 | //| Victor Pavlyuk | //| | //+------------------------------------------------------------------+ #property copyright "Victor Pavljuk" #property version "1.03" input int TakeProfit=538; input int StopLoss=1000; input int TradeTime=13; input int t1=7; input int t2=1; input int delta=70; input double lot=5; bool cantrade=true; double Ask; double Bid; int OpenLong(double volume=5, int slippage=10000, string comment="", int magic=888) { MqlTradeRequest my_trade; MqlTradeResult my_trade_result; my_trade.action=TRADE_ACTION_DEAL; my_trade.symbol=Symbol(); my_trade.volume=NormalizeDouble(volume,1); my_trade.price=NormalizeDouble(Ask,_Digits); my_trade.sl=NormalizeDouble(Ask-StopLoss*_Point,_Digits); my_trade.tp=NormalizeDouble(Ask+TakeProfit*_Point,_Digits); my_trade.deviation=slippage; my_trade.type=ORDER_TYPE_BUY; my_trade.type_filling=ORDER_FILLING_RETURN; my_trade.comment=comment; my_trade.magic=magic; ResetLastError(); if(OrderSend(my_trade,my_trade_result)) { Print("Код результата операции - ",my_trade_result.retcode); } else { Print("Код результата операции - ",my_trade_result.retcode); Print("Ошибка открытия ордера = ",GetLastError()); } return(0); } int OpenShort(double volume=5, int slippage=10000, string comment="", int magic=888) { MqlTradeRequest my_trade; MqlTradeResult my_trade_result; my_trade.action=TRADE_ACTION_DEAL; my_trade.symbol=Symbol(); my_trade.volume=NormalizeDouble(volume,1); my_trade.price=NormalizeDouble(Ask,_Digits); my_trade.sl=NormalizeDouble(Ask-StopLoss*_Point,_Digits); my_trade.tp=NormalizeDouble(Ask+TakeProfit*_Point,_Digits); my_trade.deviation=slippage; my_trade.type=ORDER_TYPE_SELL; my_trade.type_filling=ORDER_FILLING_RETURN; my_trade.comment=comment; my_trade.magic=magic; ResetLastError(); if(OrderSend(my_trade,my_trade_result)) { Print("Код результата операции - ",my_trade_result.retcode); } else { Print("Код результата операции - ",my_trade_result.retcode); Print("Ошибка открытия ордера = ",GetLastError()); } return(0); } int OnInit() { return(0); } void OnDeinit(const int reason){} void OnTick() { double Open[]; MqlDateTime mqldt; TimeCurrent(mqldt); int len; MqlTick last_tick; SymbolInfoTick(_Symbol,last_tick); Ask=last_tick.ask; Bid=last_tick.bid; ArraySetAsSeries(Open,true); if(t1>=t2)len=t1+1; else len=t2+1; CopyOpen(_Symbol,PERIOD_M30,0,len,Open); if(((mqldt.hour)>TradeTime)) cantrade=true; if(!PositionSelect(_Symbol))// Если еще нет открытой позиции { if((mqldt.hour==TradeTime) && (cantrade)) { if(Open[t1]>(Open[t2]+delta*_Point)) { OpenShort(lot,10,"",888); cantrade=false; return; } if((Open[t1]+delta*_Point)<Open[t2]) { OpenLong(lot,10,"",888); cantrade=false; return; } } } return; } //+------------------------------------------------------------------+Para começar, apenas para ser claro
Penso que isto é código para perguntar porque TP e SL são iguais a Asku
Só que há um autor diferente.
IMHO.
É possível reescrever a função de abertura por tipo:
void PosOpen(int trade, string symbol) {if (trade==0) return; double Price; ENUM_ORDER_TYPE Type; if (trade==1) {Type= ORDER_TYPE_BUY; Price=SymbolInfoDouble(symbol,SYMBOL_ASK);} else {Type = ORDER_TYPE_SELL; Price=SymbolInfoDouble(symbol,SYMBOL_BID);} mytrade.PositionOpen(symbol,Type,Lot,Price,0,0,"Open"); return; }
É possível reescrever a função de abertura por tipo:
depois pelo menos especificar de que bibliotecas são retiradas as funções.
Durante o teste, vejo mensagens no diário de bordo.
2012.09.21 20:07:11 Core 1 2012.09.18 13:00:00 venda imediata falhada 5,00 EURUSD a 1,30657 sl: 1,29657 tp: 1,31195 [Pedido inválido]
Durante o teste, vejo mensagens no diário de bordo.
2012.09.21 20:07:11 Core 1 2012.09.18 13:00:00 venda imediata falhada 5,00 EURUSD a 1,30657 sl: 1,29657 tp: 1,31195 [Pedido inválido]
depois pelo menos especificar de que bibliotecas são retiradas as funções.
#Incluir <Comércio\Trade\Trade.mqh>
A propósito, está na pasta terminal por defeito, não está? Não deve ser anexado ao EA no caroço?

- www.mql5.com

- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Qualquer pessoa pode, por favor, ajudar. Não sei onde está o erro.
código:
//+------------------------------------------------------------------+
//| Cempionat2012.mq5 | Cempionat2012.mq5
//| Victor Pavlyuk |
//| |
//+------------------------------------------------------------------+
#propriedade copyright "Victor Pavljuk"
#propriedade versão "1.03"
input int TakeProfit=538;
input int StopLoss=1000;
input int TradeTime=13;
input int t1=7;
input int t2=1;
input int delta=70;
entrada duplo lote=5;
bool cantrade=true;
pedir duas vezes;
proposta dupla;
int OpenLong(volume duplo=5,
int slippage=10000,
string comment=""",
int magic=888)
{
MqlTradeRequest my_trade;
MqlTradeResultado meu_resultado_de_comércio;
my_trade.action=TRADE_ACTION_DEAL;
my_trade.symbol=Symbol();
my_trade.volume=NormalizeDouble(volume,1);
my_trade.price=NormalizeDouble(Ask,_Digits);
my_trade.sl=NormalizeDouble(Ask-StopLoss*_Point,_Digits);
my_trade.tp=NormalizeDouble(Ask+TakeProfit*_Point,_Digitos);
my_trade.deviation=slippage;
my_trade.type=ORDER_TYPE_BUY;
my_trade.type_filling=ORDER_FILLING_RETURN;
my_trade.comment=comment;
my_trade.magic=magic;
ResetLastError();
if(OrderSend(my_trade,my_trade_result))
{
Print("transaction result code - ",my_trade_result.retcode)
}
senão
{
Print("Operation result code - ",my_trade_result.retcode);
Print("Order open error = ",GetLastError()));
}
return(0);
}
int OpenShort(volume duplo=5,
int slippage=10000,
string comment=""",
int magic=888)
{
MqlTradeRequest my_trade;
MqlTradeResultado meu_resultado_de_comércio;
my_trade.action=TRADE_ACTION_DEAL;
my_trade.symbol=Symbol();
my_trade.volume=NormalizeDouble(volume,1);
my_trade.price=NormalizeDouble(Ask,_Digits);
my_trade.sl=NormalizeDouble(Ask-StopLoss*_Point,_Digits);
my_trade.tp=NormalizeDouble(Ask+TakeProfit*_Point,_Digitos);
my_trade.deviation=slippage;
my_trade.type=ORDER_TYPE_SELL;
my_trade.type_filling=ORDER_FILLING_RETURN;
my_trade.comment=comment;
my_trade.magic=magic;
ResetLastError();
if(OrderSend(my_trade,my_trade_result))
{
Print("transaction result code - ",my_trade_result.retcode)
}
senão
{
Print("Operation result code - ",my_trade_result.retcode);
Print("Order open error = ",GetLastError()));
}
return(0);
}
int OnInit()
{
return(0);
}
nulo OnDeinit(const int razão){}
nulo OnTick()
{
duplo Aberto[];
MqlDateTime mqldt;
TimeCurrent(mqldt);
int len;
MqlTick último_tick;
SymbolInfoTick(_Symbol,last_tick);
Ask=last_tick.ask;
Bid=last_tick.bid;
ArraySetAsSeries(Open,true);
if(t1>=t2)len=t1+1;
senão len=t2+1;
CopyOpen(_Symbol,PERIOD_M30,0,len,Open);
if(((mqldt.hour)>TradeTime))
if(!PositionSelect(_Symbol))// se ainda não houver nenhuma posição aberta
{
if((mqldt.hour===TradeTime) && (cantrade))
{
if(Open[t1]>(Open[t2]+delta*_Point))
{
OpenShort(lote,10,",888);
cantrade=false;
regressar;
}
if((Open[t1]+delta*_Point)<Open[t2])
{
OpenLong(lot,10,"",888);
{ return; }((Open[t1]+delta*_Point)=falso;
regressar;
}
}
}
regressar;
}
//+------------------------------------------------------------------+